Documente Academic
Documente Profesional
Documente Cultură
}
void scriere(int n, string v[100])
{for(int i=1;i<=n;i++) g<<v[i]<<endl;}
void ordonare(int n, string v[100])
{int schimb;
string aux;
do
{schimb=0;
for(int i=1;i<n;i++)
if(v[i]>v[i+1]) {aux=v[i];
}
while(schimb);}
v[i]=v[i+1];
v[i+1]=aux;
schimb=1;}
int main()
{citire(n,v);
g<<"cuvintele citite sunt:\n";
scriere(n,v);
ordonare(n,v);
g<<"\ncuvintele ordonate alfabetic sunt:";
scriere(n,v);
f.close();
g.close();
return 0;
}
PB 5
/* Subprogramul sub primeste prin intermediul parametrului n (0<n<20) dimensiunea
unei matrice patrate, prin intermediul parametrului a matricea de numere reale
(aij cu 1<=i<=n, 1<=j<=n) si prin intermediul parametrului k un numar natural nenul
(1<k<=2*n). El returneaza prin intermediul parametrului s suma tuturor elementelor
aij cu proprietatea ca i+j=k. Scrieti programul care citeste de la tastatura un tablou
de numere reale cu n linii si n coloane si afiseaza suma elementelor din tablou aflate
strict deasupra diagonalei secundare a tabloului, folosind apeluri ale subprogramului sub,
definit conform cerintei.*/
# include<iostream>
using namespace std;
int n, a[100][100],k,s=0;
void citire(int &n,int a[100][100])
{cout<<"n=";
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
}
void scriere(int n,int a[100][100])
{cout<<"matricea citita este \n";
for(int i=1;i<=n;i++)
{for(int j=1;j<=n;j++) cout<<a[i][j]<<" ";
cout<<endl;}
}
void sub(int n,int a[100][100],int k,int &s)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
if (i+j==k) s+=a[i][j];
}
int main()
{citire(n,a);
scriere(n,a);
for(int k=1;k<=n;k++) sub(n,a,k,s);//i+j<=n - deasupra secundarei
cout<<"suma elementelor de deasupra diagonalei secundare="<<s;
return 0;
}
PB 6
/*Se citesc de la tastatura doua numere naturale nenule a si b (3<a<b) de cel mult
9 cifre fiecare. Sa se determine, daca exista, un numar prim x care apartine intervalului
nchis [a,b] pentru care valoarea expresiei |b+a-2*x| este minima. S-a folosit notatia
|m| pentru modulul numarului m. Daca nu exista un astfel de numar, se va afisa valoarea
0,
iar daca exista mai multe, se va afisa unul dintre ele.
*/
# include<iostream>
using namespace std;
int a,b;
int prim(int n)
{int i=2;
while(n%i!=0 && i<=sqrt((double) n)) i++;
if (i>sqrt((double) n)) return 1;
else return 0;
}
int main()
{int min=INT_MAX,e,x;
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
int gasit=0;
cout<<"nr prime din interval sunt:\n";
for(int i=a;i<=b;i++)
if (prim(i)) {cout<<i<<" ";
gasit=1;
e=abs(b+a-2*i);
if (min>e) {min=e;x=i;}
}
if(!gasit) cout<<"nu sunt numere care respecta cerintele";
else
{cout<<"\nnr care verifica conditia este:";
cout<<"x="<<x;}
return 0;
}
PB 7
/* Subprogramul apcar primeste prin intermediul parametrului s un sir cu cel mult 255 de
caractere
si prin parametrul c un caracter. El returneaza prin intermediul parametrului p un numar
natural
reprezentnd numarul de aparitii ale caracterului c n sirul s. Scrieti programul care
citeste
de la tastatura un sir de caractere (litere mari si cifre). Se cere sa se determine numarul
total
de vocale din sirul dat, folosind apeluri ale subprogramului apcar, definit conform
cerintei. */
# include<iostream>
# include<string>
using namespace std;
string sir;
char v[]="AEIOU";
int p,nr_vocale=0;
void apcar(string s, char c, int &p)
{p=0;
for(unsigned int i=0;i<s.length();i++)
if(c==s[i]) p++;
}
int main()
{cout<<"dati sirul:";
cin>>sir;
for(unsigned int i=0;i<strlen(v);i++)
{apcar(sir,v[i],p);
nr_vocale+=p;}
cout<<"nr de vocale este : "<<nr_vocale;
return 0;
}
PB 8
/*Se citesc n (n numar natural, n>1) si apoi n numere reale x1, x2, ..., xn.
Sa se determine cte dintre cele n numere citite se afla n afara intervalului nchis
determinat de numerele x1 si xn.
*/
# include<iostream>
using namespace std;
int main()
{int n,cate_nr=0;
float x[100];
cout<<"n=";
cin>>n;
for(int i=1;i<=n;i++)
{cout<<"x"<<i<<"=";
cin>>x[i];}
for(int i=1;i<=n;i++)
if (x[1]<x[n]) {if (x[i]<x[1] || x[i]>x[n]) cate_nr++;}
else if(x[i]<x[n] || x[i]>x[1]) cate_nr++;
cout<<"numere in afara intervalului [x1,xn] sunt :"<<cate_nr;
return 0;
}
PB 9
/*Din fisierul DATE.TXT se citesc n si m (n, m numere naturale, 0<m<n<5000) de pe
prima linie,
apoi n numere naturale a1, a2, , an de pe linia a doua si apoi m numere naturale b1,
b2, , bm
de pe linia a treia a fisierului. Sa se verifice daca sirul b citit de pe a treia linie a fisierului
se poate obtine din sirul a (aflat pe a doua linie a fisierului) prin eliminarea unora dintre
componentele
b. Scrieti un program care citeste din fisierul matrice.in un numar natural n si o matrice
cu n linii si
n coloane si afiseaza n fisierul matrice.out indicii liniilor din matrice pentru care suma
elementelor
este numar par. Se va folosi subprogramul definit la punctul a.*/
# include<iostream>
# include<fstream>
using namespace std;
int x[10][10],n;
ifstream f("matrice.in");
ofstream g("matrice.out");
int suma(int x[10][10], int n, int p)
{int s=0;
for(int j=1;j<=n;j++) s+=x[p][j];
return s;
}
void citire(int x[10][10], int &n)
{f>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) f>>x[i][j];
}
int main()
{ citire(x,n);
for(int i=1;i<=n;i++)
if (suma(x,n,i)%2==0) g<<i<<" ";
f.close();
g.close();
return 0;
}
PB 12
/*Pe prima linie a fisierului date.in se gaseste un numar natural n, n<=100,
iar a doua linie contine un sir cu n numere naturale, separate prin cate un spatiu.
Sa se scrie n fisierul date.out toate numerele prime din sir, separate prin cate un spatiu.
Se va folosi o functie prim care verifica daca un numar natural, dat ca parametru de
intrare,
este numar prim.*/
# include<iostream>
# include<fstream>
# include<cmath>
using namespace std;
int n,v[100];
int prim(int nr)
{int i=2;
while(nr%i!=0 && i*i<=nr) i++;//i<radicalul lui nr
if(i*i>nr) return 1;
else return 0;
}
int main()
{ifstream f("date.in");
ofstream g("date.out");
f>>n;
for(int i=1;i<=n;i++)
{f>>v[i];
if (prim(v[i])) g<<v[i]<<" ";}
f.close();
g.close();
return 0;
}
PB 13
/*Se citeste de la tastatura un numar natural n, 2<=n<=10. Sa se construiasca o matrice
cu n linii si n coloane care sa contina pe fiecare linie cate o permutare a multimii
{1,2,,n},
astfel nct pe linii diferite sa avem permutari diferite. Matricea se va afisa pe ecran ca
matrice.*/
# include<iostream>
using namespace std;
void permutare(int v[100],int n)
{int aux;
aux=v[1];
for(int i=1;i<n;i++) v[i]=v[i+1];
v[n]=aux;}
int main()
{int n,a[100][100],v[100];//vectorul in care fac permutarile
cout<<"n=";
cin>>n;
for(int i=1;i<=n;i++) v[i]=i;
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
{for(int j=1;j<=n;j++) a[i][j]=v[j];
permutare(v,n);}
for(int i=1;i<=n;i++)
{for(int j=1;j<=n;j++) cout<<a[i][j]<<" ";
cout<<endl;}
return 0;
}
PB 14
/* Pe prima linie a fisierului date.in se gaseste un numar natural n, n<=100,
iar a doua linie contine un sir cu n numere naturale, separate prin cate un spatiu.
Sa se scrie n fisierul date.out toate numerele din sir care sunt termeni din sirul lui
Fibonacci.
Se va folosi o functie test_fibo care verifica daca un numar natural, dat ca parametru de
intrare,
este termen n sirul lui Fibonacci (f1=1, f2=1, fn=fn-1+fn-2, pentru n>2).*/
# include<iostream>
# include<fstream>
using namespace std;
int n,v[100];
int test_fibo(int nr)
{int fibo1=1,fibo2=1,fibo,ok=0;
if (nr==1) ok=1;
while(nr>fibo2)
{fibo=fibo1+fibo2;
if(nr==fibo)ok=1;
fibo1=fibo2;
fibo2=fibo;}
if(ok)return 1;
else return 0;
}
int main()
{ifstream f("date.in");
ofstream g("date.out");
f>>n;
for(int i=1;i<=n;i++)
{f>>v[i];
if (test_fibo(v[i])) g<<v[i]<<" ";}
f.close();
g.close();
return 0;
}
PB 15
/*Se citesc din fisierul numere.in doua numere naturale a si b cu cel mult 9 cifre fiecare.
Se cere sa se scrie n fisierul numere.out cel mai mare numar natural care se poate
forma cu
toate cifrele celor doua numere.*/
# include<iostream>
# include<fstream>
using namespace std;
int a,b,v[20],n,nr=0;//v-vectorul care va retine cifrele lui a si b
void cifre(int a,int b, int v[20],int &n)
{int i=0;
while(a)
{v[++i]=a%10;
a/=10;}
while(b)
{v[++i]=b%10;
b/=10;
}
n=i;
}
void ordonare(int v[20])
{int aux,schimb;
do
{schimb=0;
for(int i=1;i<n;i++)
if(v[i]<v[i+1]) {aux=v[i];
}
while(schimb);
}
v[i]=v[i+1];
v[i+1]=aux;
schimb=1;}