Atestat 2016 21-30
/*21. Să se realizeze un program care inversează două numere introduse de la tastatură, făra
utilizarea unei variabile auxiliare.*/
#include <iostream>
using namespace std;
int main()
{
int a,b;
cout << "a=";cin>>a;
cout<<"b=";cin>>b;
a=a+b;
b=a-b;
a=a-b;
cout<<"a="<<a<<"b="<<b;
return 0;
}
/*22. Se citește o matrice pătratică de ordinul n, să se afișeze:
- suma elementelor pare de pe diagonala principală
- produsul elementelor impare de pe diagonala secundară. */
#include <iostream>
using namespace std;
int main()
{
int a[100][100],n,s=0,p=1,i,j;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
if(i==j && a[i][j]%2==0)s=s+a[i][j];
if(j==n-i+1 && a[i][j]%2==1)p=p*a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
cout<<"s="<<s<<"p="<<p;
return 0;
}
/*23. Să se afișeze rezultatul produsului
p=(1-1/2^2)*(1-1/3^2)*...*(1-1/n^2), pentru n>=2 citit de la
tastatură. Exemplu: n=5 =>0.6 */
#include <iostream>
using namespace std;
int main()
{
float p; int n,i;
cout<<"n=";cin>>n;
for(i=2;i<=n;i++)
p=p*(float)(1-1/(i*i));
cout<<"p="<<p;
return 0;
}
/*24. Se citește un număr n natural de la tastatură. Creați un program care să calculeze și să afișeze
suma:
S=1! + 2! + 3! +...+ n! */
#include <iostream>
using namespace std;
int main()
{
int s=0,p=1,i,n;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
{
p=p*i;
s=s+p;
}
cout<<s;
return 0;
}
/*25. Să se afișeze rezultatul sumei 2+4+6+…+2n, n>=1, n citit de la tastatură.
Exemplu: n=3 => 12 */
#include <iostream>
using namespace std;
int main()
{
int s=0,i,n;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
s=s+2*i;
cout<<s;
return 0;
}
/*26. Să se scrie subprogramul “combinări” ce calculează recursiv combinări de n luate câte k,
utilizând formula:
C(n,k)=C(n-1,k)*(n/(n-k));
Ce rezultat afișează programul dacă este apelat combinări (4,2)? */
#include <iostream>
using namespace std;
int c(int n, int k)
{
if(k==0 || k==n) return 1;
else
if(n==0 && k==0) return 1;
else if(k==1) return n;
else return c(n-1,k)*(n/(n-k));
}
int main()
{
int n,k;
cout <<"n=";cin>>n;
cout<<"k=";cin>>k;
cout<<c(n,k);
return 0;
}
/*27. Se citeşte un vector cu n componente întregi. Se cere:
a) Să se ordoneze crescător elementele vectorului;
b) Să se permute circular stânga elementele vectorului ordonat cu o poziţie. */
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int n,i,a[100],aux;
cout<<"n=";cin>>n;
cout<<"dati numerele"<<endl;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)cout<<a[i]<<' ';
cout <<endl;
sort(a+1,a+n+1);
cout<<"sortat"<<endl;
for(i=1;i<=n;i++)cout<<a[i]<<' ';
cout <<endl;
cout<<"permutare cu o pozitie spre stanga"<<endl;
aux=a[1];
for(i=1;i<n;i++)
a[i]=a[i+1];
a[n]=aux;
for(i=1;i<=n;i++)cout<<a[i]<<' ';
cout <<endl;
return 0;
}
/*28. Se citeşte o matrice cu n linii şi m coloane şi elemente numere întregi. Se cere:
a) Să se determine elementele minime de pe fiecare linie;
b) Să se numere elementele pare de pe perimetrul matricei. */
#include <iostream>
using namespace std;
int a[100][100],n,m;
void pct_a()
{
int min;
cout<<endl;
for(int i=1;i<=n;i++)
{
min=a[i][1];
for(int j=1;j<=m;j++)
if(min>a[i][j]) min=a[i][j];
cout<<min<<' ';
}
cout<<endl;
}
void pct_b()
{
int c=0,i;
for(i=1;i<=m;i++)
if(a[1][i]%2==0){c++;cout<<a[1][i]<<' ';}
for(i=1;i<=m;i++)
if(a[n][i]%2==0){c++;cout<<a[n][i]<<' ';}
for(i=2;i<n;i++)
if(a[i][1]%2==0){c++;cout<<a[i][1]<<' ';}
for(i=2;i<n;i++)
if(a[i][m]%2==0){c++;cout<<a[i][m]<<' ';}
cout<<endl<<"numarul de elemente pare="<<c;
}
int main()
{
int i,j;
cout<<"n=";cin>>n;
cout<<"m=";cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
cout<<"elementele minime de e fiecare linie"<<endl;
pct_a();
cout<<"elementele pare de pe perimetrul matricii"<<endl;
pct_b();
return 0;
}
/*29. Se citeşte o matrice pătrată de dimensiune nxn şi elemente numere întregi. Se cere:
a) Să se afişeze numerele prime de pe diagonala principală;
b) Să se formeze un vector cu elementele matricei parcurse în ordine pe coloane. */
#include <iostream>
using namespace std;
int a[100][100],n;
int prim(int n)
{
int i;
if(n<2) return 0;
for(i=2;i<=n/2;i++)
if(n%i==0) return 0;
return 1;
}
void pct_a()
{
int i;
cout<<"elementele prime de pe diagonala principala"<<endl;
for(i=1;i<=n;i++)
if(prim(a[i][i])) cout<<a[i][i]<<' ';
cout<<endl;
}
void pct_b()
{
int b[10000],i,j,c=1;
for(j=1;j<=n;j++)
for(i=1;i<=n;i++)
{
b[c]=a[i][j];
c++;
}
cout<<"elementele parcurse pe coloane"<<endl;
for(i=1;i<c;i++)
cout<<b[i]<<' ';
}
int main()
{
int i,j;
cout<<"n=";cin>>n;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
{
cout<<"a["<<i<<"]["<<j<<"]=";cin>>a[i][j];
}
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
cout<<a[i][j]<<' ';
cout<<endl;
}
pct_a();
pct_b();
return 0;
}
/*30. Se citeşte un vector cu n componente întregi. Se cere:
a) Să se elimine din vector elementele nule dacă acestea există;
b) Să se înlocuiască fiecare element al noului vector cu media aritmetică a celorlalte elemente
din vector.*/
#include <iostream>
using namespace std;
int n; float a[100];
void pct_a()
{
int i,j;
for(i=1;i<=n;i++)
if(a[i]==0)
{
for(j=i;j<n;j++)
a[j]=a[j+1];
n--;
}
}
void pct_b()
{
int i;float s=0;
for(i=1;i<=n;i++)s+=a[i];
for(i=1;i<=n;i++)
a[i]=(s-a[i])/(n-1);
}
int main()
{
int i;
cout<<"n=";cin>>n;
cout<<"dati numerele"<<endl;
for(i=1;i<=n;i++)cin>>a[i];
for(i=1;i<=n;i++)cout<<a[i]<<' ';
cout <<endl;
pct_a();
cout<<"vectorul fara elementele nule"<<endl;
for(i=1;i<=n;i++)cout<<a[i]<<' ';
cout<<endl;
pct_b();
cout<<"vectorul cu elementele inlocuite"<<endl;
for(i=1;i<=n;i++)cout<<a[i]<<' ';
return 0;
}