1. problema 1:
/*1. Sa se scrie o functie recursiva care primeste 3 parametri: n - numar
natural, c1,c2 cifre si returneaza numarul obtinut din n prin inlocuirea tuturor
aparitiilor cifrei c1 cu c2.
*/
#include<iostream>
using namespace std;
int inlocuire(int n, int c1, int c2)
{
if(n!=0)
{
if(n%10==c1)
return inlocuire(n/10,c1,c2)*10 + c2;
return inlocuire(n/10,ci,c2)*10 + n%10;
}
return 0;
}
int main()
{
cout<<inlocuire(5446,4,7);
}
problema 2:
/* 2. Sa se scrie o functie recursiva care primeste un parametru n numar natural
si returneaza numarul obtinut din n prin eliminarea cifrelor pare.
*/
#include<iostream>
using namespace std;
int f(int n)
{
if(n==0)
return 0;
if(n)
{
if(n%10%2==0)
return f(n/10);
else
return f(n/10)*10+n%10;
}
return 0;
}
int main()
{
int n;
cin>>n;
cout<<f(n);
return 0;}
problema 3:
/* 3. Se citeste un vector a cu n elemente numere naturale. Sa se calculeze
elementul maxim din vector. Se va folosi o functie recursiva pentru citire si
una recursiva pentru determinarea elementului maxim.
*/
#include<iostream>
using namespace std;
2. int citire(int v[100], int n)
{
if(n>0)
cin>>v[n];
if(n)
return citire(v,n-1);
else
return 0;
}
int maxim(int v[100],int n, int max)
{
if(n>0)
{
if(v[n]>max)
max=v[n];
return maxim(v,n-1,max);
}
else
cout<<max;
}
int main()
{
int a[100],nr,max1=0;
cin>>nr;
citire(a,nr);
maxim(a,nr,max1);
}
problema 8:
/* 8. Se da un vector cu ,n componente de numere întregi. Se cere sa se afi?eze
câte dintre elementele vectorului sunt mai mici decât media aritmetica a
componentelor acestuia.
*/
#include<iostream>
using namespace std;
int main()
{
int n,v[200],i,ma=0,nrelemmici=0;
cin>>n;
for(i=0;i<n;i++)
{
cin>>v[i];
}
for(i=0;i<n;i++)
{
ma=ma+v[i];
}
ma=ma/n;
for(i=0;i<n;i++)
{
if(v[i]<ma)
nrelemmici++;
}
cout<<"sunt atatea elem mai mici:"<<nrelemmici;
}
/* 10. Scrieti toate numerele cuprinse între 1000 si 3000 care au doua cifre
zero si suma tuturor cifrelor egala cu patru. Câte astfel de numere sunt? Care
3. este numarul cel mai mic si care este numarul cel mai mare?
*/
#include<iostream>
using namespace std;
int nrcifrezero( int n)
{
int i=0;
while(n)
{
if(n%10==0)
i++;
n=n/10;
}
return i;
}
int sumcif(int n)
{
int sum=0;
while(n)
{
sum=sum+n%10;
n=n/10;
}
return sum;
}
int main()
{
int i;
for(i=1000;i<3001;i++)
{
if(nrcifrezero(i)==2 && sumcif(i)==4)
cout<<i<<" ";
}
}
11.
/* 11. Sa se afiseze toate numerele cuprinse între 100 si 599, având cifrele în
ordine crescatoare si suma celor trei cifre egala cu 18.
*/
#include <iostream>
using namespace std;
int main ()
{
int i,a,b,c;
for(i=100;i<=599;i++)
{
a=i/100;
b=i/10%10;
c=i%100;
if((a<b)&&(b<c)&&(a+b+c==18))
cout<<i<<" ";
}
return 0;
}
/* 6. Se citeste un text scris cu litere mici si spatii. Sa se înlocuiasca în
fiecare cuvânt din text prima si ultima litera cu literele mari corespunzatoare.
*/
4. #include<iostream>
using namespace std;
int main()
{ char s[200],s1[100], *st;
int i, a,n;
cin.get(s,199);
st=strtok(s," ,./'");
strcpy(s1,st);
n=strlen(s1);
s1[0]=toupper(s1[0]);
s1[n-1]=toupper(s1[n-1]);
cout<<s1<<" ";
while(st)
{ st=strtok(NULL," ,.;");
strcpy(s1,st);
n=strlen(s1);
s1[0]=toupper(s1[0]);
s1[n-1]=toupper(s1[n-1]);
cout<<s1<<" ";
}
}
/*9. Se dã fiºierul text "perechi.in" care conþine pe fiecare rând câte o
pereche de numere naturale nenule separate prin câte un spaþiu. Sã se afiºeze
numãrul perechilor de numere prime între ele din fiºierul dat.
Exemplu: dacã fiºierul are urmãtorul conþinut:
6 26
18 7
9 36
8 15
9 22
0
atunci valoarea care se afiºeazã este 3.
*/
#include<iostream>
#include<fstream.h>
using namespace std;
int main()
{int a,b,nr=0,ok,i;
fstream f1("date.in",ios::in);
while(a!=0)
{ ok=1;
i=2;
f1>>a;
f1>>b;
while(i<=a)
{if((a%i==0)&&(b%i==0))
ok=0;
i++;
}
if(ok==1)
nr++;
}
5. cout<<nr;
/*5. Se da o matrice patratica cu n linii si n coloane. Aceasta se imparte in 4
emisfere prin intermediul diagonalei principale si a celei secundare. Sa se
scrie o functie recursiva prin care sa se afle procentul pe care il reprezinta
numarul de 0-uri din numarul total de cifre din emisfera estica.
ex.:
n=5
21 12 34 17 22
14 22 12 33 44
51 26 78 90 10
12 44 56 89 52
17 81 45 57 21
Numerele din emisfera estica sunt 90, 10, 44, 52.
Se va afisa 25%.
*/
#include<iostream>
using namespace std;
int nr0(int n)
{
int i=0,nr;
while(n)
{
if(n%10==0)
i++;
n=n/10;
}
return i;
}
int procent(int a ,int b)
{
float procent
}
int main()
{
int mat[100][100],i,j,n,nrtotcifre=0,k=0,l,nrtot0=0 ,v[100] ;
cin>>n;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cin>>mat[i][j];
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if((i<j) && (i>n-1-j))
{
v[k]=mat[i][j];
k++;
}
}
}
for(i=0;i<k;i++)
{
nrtot0=nrtot0+ nr0(v[i]);
while(v[i])
{
nrtotcifre++;
v[i]=v[i]/10;
}
}