![]() XHost |
Gazduire site-uri web nelimitata ca spatiu si trafic lunar la doar 15 eur / an. Inregistrare domenii .ro .com .net .org .info .biz .com.ro .org.ro la preturi preferentiale. Pentru oferta detaliata accesati site-ul BluePink |
PROGRAMARE
CLASELE DE MATEMATICA-INFORMATICĂ NEINTENSIV
Subiectul nr.1
Se citeşte de la
tastatură un şir de 10 numere întregi mai mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu.
b)
Să se scrie un subprogram
care să returneze elementul minim din fişierul date.in;
c)
Să se scrie un subprogram
care să creeze un tablou unidimensional cu elementele fişierului
date.in şi să se insereze între ultimul şi penultimul element al
tabloului media lor aritmetică;
d)
Scrieţi în fişierul
text date.out şirul nou
obţinut, ordonat crescător.
Exemplu:
Date de intrare:
17
23 45 67 12 34 5 90 8 9
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 17 23 45 67 12 34 5 90 8 9
b)
Elementul minim este: 5
c)
Tabloul unidimensional: 17 23 45 67 12 34 5 90
8 8.5 9
d)
Fişierul text date.out
conţine pe o linie: 5 8.5 8 9 12 17 23 34 45 67 90
#include <iostream.h>
#include <math.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
void inserez_ma(int a[11])
{
fstream
f("data.out", ios::out);
int
i,j;
float
v[20];
//copiez
primele 9 elemente din vectorul citit din fisier
for(
i=1;i<10;i++)
v[i]=a[i];
//realizez
inserarea
v[10]=((float)a[9]+a[10])/2.;
v[11]=a[10];
//ordonez
vectorul nou
for(
i=1;i<=10;i++)
for(j=i+1;j<=11;j++)
if(v[i]>v[j])
{
int
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=11;i++)
f<<v[i]<<"\t";
f.close();
}
int minim(int v[10])
{
int
m=32000;
for(int
i=1;i<=10;i++)
if(m>v[i])
m=v[i];
return
m;
}
void main()
{
int
a[11];
crearef();
citirevect(a);
cout<<"Cel
mai mic nr din fisier "<<minim(a);
inserez_ma(a);
}
Subiectul nr.2
Se citeşte de la
tastatură un şir de 10 numere întregi mai mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu.
b)
Să se scrie un subprogram
care să returneze elementul maxim din fişierul date.in;
c)
Să se scrie un subprogram
care să determine numărul elementelor prime conţinute de
fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare:
7
23 4 17 12 34 5 90 8 9
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 7 23 4 17 12 34 5 90 8 9
b)
Elementul maxim este: 90
c)
În fişier sunt 4 numere prime
d)
Fişierul text date.out
conţine pe o linie: 4 5 7 8 9 12 17 23 34 90
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie ce verifica daca un numar este prim
int
prim(int x)
{
if(x==1 || x==0)
return 0;
for(int i=2;i<=x/2;i++)
if(x%i==0)
return
0;
return
1;
}
//contorizare
nr prime
int
contor( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
if(prim(v[i])==1
)
c++;
return c;
}
int
maxim(int v[10])
{
int max=-32000;
for(int i=1;i<=10;i++)
if(max<v[i])
max=v[i];
return max;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]>v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"Cel mai mare
nr din fisier "<<maxim(a);
cout<<"\nnumarul
elementelor prime "<<contor(a)<<"\n";
ordonare(a);
}
Subiectul nr.3
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze suma cifrelor elementelor pare din fişierul date.in;
c)
Să se scrie un subprogram
care să determine numărul elementelor pătrate perfecte din
fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
decrescător.
Exemplu:
Date de intrare :
37
23 4 77 12 34 5 90 18 19
Date de ieşire :
a)
Fişierul text date.in conţine
pe o linie: 37 23 4 77 12 34 5 90 18 19
b)
Suma cifrelor elementelor pare din fişierul date.in este: 32
c)
Între elementele din fişierul date.in
este un pătrat perfect
d)
Fişierul text date.out conţine
pe o linie: 90 77 37 34 23 19 18 12 5 4
#include
<iostream.h>
#include
<math.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//fsuma
cifrelor unui nr
int
sumacifre(int nr)
{
int s=0;
while(nr!=0)
{
s=s + nr%10;
nr=nr/10;
}
return s;;
}
//fsuma
cifrelor nr pare din fisier
int
suma( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
if(v[i]%2==0)
c=c+sumacifre(v[i]);
return c;
}
//nr
elem patrate perfecte
int
contor( int v[10])
{
int s=0;
for(int i=1;i<=10;i++)
if(sqrt(v[i])==int(sqrt(v[i])))
s++;
return s;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"suma cifrelor
numerelor pare
"<<suma(a)<<"\n";
cout<<"\nnumarul
elementelor patrate perfecte "<<contor(a)<<"\n";
ordonare(a);
}
Subiectul nr.4
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să conţină
pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să determine suma elementelor impare conţinute de fişierul date.in;
c)
Să se scrie un subprogram
care să returneze câte elemente din fişierul date.in sunt numere de tip palindrom cu cel putin două cifre
(palindrom este un număr de cel puţin două cifre care citit de
la dreapta la stânga este identic cu numărul citit de la stânga la
dreapta);
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
descrescător.
Exemplu:
Date de intrare:
37
23 4 77 12 34 5 90 18 19
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 37 23 4 77 12 34 5 90 18 19
b)
Suma elementelor impare conţinute de fişierul date.in este:161
c)
În fişier este un numar de tip palindrom cu cel putin două cifre
d)
Fişierul text date.out
conţine pe o linie: 90 77 37 34 23 19 18 12 5 4
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie
ce verifica daca nr e palindrom
int
palindrom(int nr)
{
int cnr=0,c=nr;
if(nr<10) //daca nu are 2 cifre
return 0;
while(nr!=0)
{
cnr=cnr*10 + nr%10;
nr=nr/10;
}
if(c==cnr)
return 1;
else
return 0;
}
int
contor( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
if(palindrom(v[i])==1 )
c++;
return c;
}
//b) Sa se scrie un subprogram care sa returneze
suma elementelor impare
int
suma( int v[10])
{
int s=0;
for(int i=1;i<=10;i++)
if(v[i]%2==1)
s=s+v[i];
return s;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]>v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"suma elementelor
impare "<<suma(a)<<"\n";
cout<<"\nnumarul elementelor
de tip palindrom "<<contor(a)<<"\n";
ordonare(a);
}
Subiectul nr.5
Se citeşte de la
tastatură un şir de 10 numere întregi mai mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze suma elementelor pare de pe pozitiile impare din
fişierul date.in;
c)
Să se scrie un subprogram
care să determine numărul elementelor prime conţinute de
fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare :
7
23 4 17 12 34 5 90 8 9
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 7 23 4 17 12 34 5 90 8 9
b)
Suma elementelor pare de pe pozitiile impare din fişierul date.in este: 24
c)
În fişier sunt 4 numere prime
d) Fişierul text date.out conţine pe o linie: 4 5 7 8 9 12 17 23 34 90
#include <iostream.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void
citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie ce verifica daca un numar este prim
int prim(int x)
{
if(x==1
|| x==0)
return
0;
for(int
i=2;i<=x/2;i++)
if(x%i==0)
return
0;
return
1;
}
int contor( int v[10])
{
int
c=0;
for(int
i=1;i<=10;i++)
if(prim(v[i])==1
)
c++;
return
c;
}
//b) Sa
se scrie un subprogram care sa returneze suma elementelor
// pare de pe pozitiile impare din fisierul date.in;
int suma( int v[10])
{
int
s=0;
for(int
i=1;i<=10;i=i+2)
if(v[i]%2==0)
s=s+v[i];
return
s;
}
//ordonare+afisare in fisier
void ordonare(int v[11])
{
fstream
f("data.out", ios::out);
int
i,j,c;
//ordonez
vectorul
for(
i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void main()
{
int
a[11];
crearef();
citirevect(a);
cout<<"suma
elementelor pare de pe pozitiile impare
"<<suma(a)<<"\n";
cout<<"\nnumarul
elementelor prime "<<contor(a)<<"\n";
ordonare(a);
}
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să determine suma elementelor impare aflate pe poziţiile pare
conţinute de fişierul date.in;
c)
Să se scrie un subprogram
care să returneze un mesaj prin care să se comunice dacă un
element x citit de la tastatură
există sau nu în şirul din fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare:
17
23 45 67 12 34 5 90 8 9
Date de ieşire :
a)
Fişierul text date.in conţine
pe o linie: 17 23 45 67 12 34 5 90 8
b)
Suma elementelor impare aflate pe poziţiile pare conţinute de
fişierul date.in este: 99
c)
Pentru x = 99 se va afişa: „elementul nu este în fişier”
d)
Fişierul text date.out
conţine pe o linie: 5 8 9 12 17 23 34 45 67 90
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//x
apartine vectorului
int
caut( int v[10],int x)
{
for(int i=1;i<=10;i++)
if(v[i]==x )
return
1;
return 0;
}
//b) Sa se scrie un subprogram care sa
returneze suma elementelor
//
impare de pe pozitiile pare din fisierul date.in;
int
suma( int v[10])
{
int s=0;
for(int i=2;i<=10;i=i+2)
if(v[i]%2==1)
s=s+v[i];
return s;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"suma
elementelor impare de pe pozitiile pare
"<<suma(a)<<"\n";
int x;
cout<<"x=";
cin>>x;
if(caut(a,x)==1)
cout<<"x
se afla in vector\n";
else
cout<<"x
NU se afla in vector\n";
ordonare(a);
}
Subiectul nr.7
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii din matrice, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
elementul maxim de pe diagonala principală a matricei din fişierul date.in;
c) Să se scrie un subprogram care să determine
numarul elementelor de tip palindrom conţinute
de fişierul date.in (palindrom
este un număr de cel puţin două cifre care citit de la dreapta
la stânga este identic cu numărul citit de la stânga la dreapta);
d) Scrieţi în fişierul text date.out elementele de pe linia a doua din matricea de mai sus,
ordonate crescător.
Exemplu:
Date de intrare:
13
2 3 66 55 4 3 22 2 3 4 5 1 2 1 17
Date de ieşire :
a) Fişierul text date.in conţine matricea:
13 2 3 66
55 4 3 22
2 3
4 5
1
2
1 17
b) Elementul maxim de pe diagonala principală a
matricei din fişierul date.in
este:17
c) Există 3 elemente de tip
palindrom.
d) Fişierul date.out conţine pe o linie: 3 4 22 55
#include <iostream.h>
#include <fstream.h>
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
f>>a[i][j];
f.close();
}
void crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
// fct ce ordoneaza linia 2
void ord(int a[10][10])
{
int i,aux,j;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(a[2][i]>a[2][j])
{
aux=a[2][i];
a[2][i]=a[2][j];
a[2][j]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[2][i]<<"\t";
f.close();
}
// functie ce returneaza maximul de pe diagonala principala a matricei
int maxim( int a[10][10])
{
int max=-32000;
for(int
i=1;i<=4;i++)
if(max<a[i][i])
max=a[i][i];
return max;
}
//functie ce verifica daca nr e palindrom
int palindrom(int nr)
{
int cnr=0,c=nr;
if(nr<10) //daca nu are 2 cifre
return
0;
while(nr!=0)
{
cnr=cnr*10
+ nr%10;
nr=nr/10;
}
if(c==cnr)
return
1;
else
return
0;
}
//functie ce determina cate numere de tip palindrom se afla in matrice
int nr_pal(int a[10][10])
{
int c=0;
for(int
i=1;i<=4;i++)
for(int
j=1;j<=4;j++)
if(palindrom(a[i][j])==1)
c++;
return
c;
}
void main()
{
int a[10][10];
crearef();
citiremat(a);
cout<<"Elementul
maxim de pe diagonala principala:
"<<maxim(a)<<"\n\n";
cout<<"Numarul
de numere de tip palindrom: "<<nr_pal(a)<<"\n\n";
ord(a);
scrieord(a);
}
Subiectul nr.8
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii dintr-o matrice 4x4, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
elementul maxim de pe diagonala secundară a matricei din fişierul date.in;
c) Să se scrie un subprogram care să determine
numărul elementelor super prime conţinute de fişierul date.in (un număr este
superprim dacă este prim atât el cât şi răsturnatul lui);
d) Scrieţi în fişierul text date.out elementele de pe linia a treia din matricea de mai sus,
ordonate crescător.
Exemplu:
Date de intrare:
13
2 3 66 55 4 3 22 2 3 4 5 1 2 1 17
Date de ieşire :
a) Fişierul text date.in conţine matricea:
13 2
3 66
55 4
3 22
2 3
4 5
1 2
1 17
b) Elementul maxim de pe
diagonala secundară a matricei din fişierul date.in este: 66
c) Există 2 numere
superprime.
d) Fişierul date.out conţine pe o linie: 2 3 4 5
#include <iostream.h>
#include <fstream.h>
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
f>>a[i][j];
f.close();
}
void crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
// fct ce ordoneaza linia 3
void ord(int a[10][10])
{
int i,aux,j;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(a[3][i]>a[3][j])
{
aux=a[3][i];
a[3][i]=a[3][j];
a[3][j]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[3][i]<<"\t";
f.close();
}
// functie ce returneaza maximul de pe diagonala secundara a matricei
int maxim( int a[10][10])
{
int max=-32000;
for(int i=1;i<=4;i++)
if(max<a[i][5-i])
max=a[i][5-i];
return max;
}
//functie ce returneaza inversul unui numar
int rasturnat(int nr)
{
int cnr=0;
while(nr!=0)
{
cnr=cnr*10 +
nr%10;
nr=nr/10;
}
return cnr;
}
//functie ce verifica daca un numar este prim
int prim(int x)
{
if(x==1 || x==0)
return 0;
for(int i=2;i<=x/2;i++)
if(x%i==0)
return
0;
return 1;
}
//functie ce determina cate numere superprime se afla in matrice
int superprim(int a[10][10])
{
int c=0;
for(int i=1;i<=4;i++)
for(int
j=1;j<=4;j++)
if(a[i][j]>9)
if(prim(a[i][j])==1
&& prim(rasturnat(a[i][j]))==1)
c++;
return
c;
}
void main()
{
int a[10][10];
crearef();
citiremat(a);
cout<<"Elementul
maxim de pe diagonala secundara:
"<<maxim(a)<<"\n\n";
cout<<"Numarul de
numere superprime: "<<superprim(a)<<"\n\n";
ord(a);
scrieord(a);
}
Subiectul nr.9
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un
subprogram care să returneze suma
cifrelor elementului maxim din fişierul date.in;
c)
Să se scrie un subprogram
care să determine numărul elementelor prime conţinute de
fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare :
37
23 4 77 12 34 5 90 18 19
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 37 23 4 77 12 34 5 90 18 19
b)
Suma cifrelor elementului maxim din fişierul date.in este: 9
c)
Numărul elementelor prime conţinute de fişierul date.in : 4
d)
Fişierul text date.out
conţine pe o linie: 4 5 12 18 19 23 34 37 77 90
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//calculez
max
int
maxim(int v[11])
{
int max=-32000;
for(int i=1;i<=10;i++)
if(v[i]>max)
max=v[i];
return max;
}
//suma
cifrelor
int
cifre(int nr)
{
int S=0;
while(nr!=0)
{
S=S+nr%10;
nr=nr/10;
}
return S;
}
//functie
ce afla daca un numar este prim
int
prim(int nr)
{
if(nr==0||nr==1)
return 0;
for(int i=2;i<=nr/2;i++)
if(nr%i==0)
return
0;
return 1;
}
//functie
ce afla numarul de elemente prime
int
elemprime( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
if(prim(v[i])==1)
c++;
return c;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]>v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int v[11];
crearef();
citirevect(v);
cout<<"\nSuma
cifrelor elementului maxim:
"<<cifre(maxim(v))<<"\n\n";
cout<<"\nExista
"<<elemprime(v)<<" numere prime in vector\n\n";
ordonare(v);
}
Subiectul nr.10
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze numărul de elemente din fişierul date.in care au ultima cifră
egală cu 3;
c)
Să se scrie un subprogram
care să determine numărul elementelor conţinute de fişierul
date.in care au suma cifrelor
număr par;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
descrescător.
Exemplu:
Date de intrare :
17
23 45 67 12 34 3 90 8 9
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 17 23 45 67 12 34 3 90 8 9
b)
Numărul de elemente din fişierul date.in
care au ultima cifră egală cu 3: 2
c)
Numărul elementelor conţinute de fişierul date.in care au suma cifrelor număr par: 2
d)
Fişierul text date.out
conţine pe o linie: 90 77 37
34 23 19
18 12 5 4
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie
ce returneaza numarul elementelor a caror ultima cifra este egala cu 3
int
ultima(int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
if(v[i]%10==3)
c++;
return c;
}
//suma
cifrelor
int
cifre(int nr)
{
int S=0;
while(nr!=0)
{
S=S+nr%10;
nr=nr/10;
}
return S;
}
//functie
ce returneaza numarul elementelor a caror suma a cifrelor este para
int
sumapara ( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
{
if(cifre(v[i])%2==0)
c++;
}
return c;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int v[11];
crearef();
citirevect(v);
cout<<"Numarul
elementelor a caror ultima cifra este 3:
"<<ultima(v)<<"\n\n";
cout<<"Numarul
elementelor a caror suma a cifrelor este para:
"<<sumapara(v)<<"\n\n";
ordonare(v);
}
Subiectul nr.11
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze suma cifrelor pare ale numerelor din fişierul date.in;
c)
Să se scrie un subprogram
care să determine numărul elementelor prime de două cifre
conţinute de fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare :
7
23 4 17 12 34 5 90 8 9
Date de ieşire :
a)
Fişierul text date.in conţine
pe o linie: 7 23 4 17 12 34 5 90 8 9
b)
Suma cifrelor pare ale numerelor din fişierul date.in este: 20
c)
În fişier sunt 2 numere prime de
două cifre
d)
Fişierul text date.out
conţine pe o linie: 4 5 7 8 9 12 17 23 34 90
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie
ce afla daca un numar este prim
int
prim(int nr)
{
if(nr==0||nr==1)
return 0;
for(int i=2;i<=nr/2;i++)
if(nr%i==0)
return
0;
return 1;
}
//functie
ce afla nr elem prime de doua cifre
int
contor( int v[10])
{
int m=0;;
for(int i=1;i<=10;i++)
if(v[i]>=10&&v[i]<=99)
//daca are 2 cifre
if(prim(v[i])==1
)
m++;
return m;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]>v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
//suma
cifrelor pAre
int
suma( int v[10])
{
int s=0,c;
for(int i=1;i<=10;i++)
{
c=v[i];
while(c!=0)
{
if(c%2==0)
//daca nr e par => ultima cifra para
s=s+c%10;
c=c/10;
}
}
return s;
}
void
main()
{
int v[11];
crearef();
citirevect(v);
cout<<"numarul de
numere prime de doua cifre"<<contor(v);
cout<<"\nSuma
cifrelor pare "<<suma(v)<<"\n";
ordonare(v);
}
Subiectul nr.12
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze elementele din fişierul date.in care aparţin intervalului [a,b] unde a şi b sunt numere întregi mai mici
decât 100 citite de la tastatură;
c)
Să se scrie un subprogram
care să determine cel mai mare număr prim din fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
descrescător.
Exemplu:
Date de intrare :
37
23 4 77 12 34 5 90 18 19
Date de ieşire :
a)
Fişierul text date.in
conţine pe o linie: 37 23 4 77 12 34 5 90 18 19
b)
Pentru intervalul [36, 80] elementele din fişierul date.in care aparţin intervalului sunt: 37 77
c)
Cel mai mare număr prim din fişierul date.in este: 37
d)
Fişierul text date.out
conţine pe o linie: 90 77 37 34 23 19 18 12 5 4
#include <iostream.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie ce afla daca un numar
este prim
int prim(int nr)
{
if(nr==0||nr==1)
return
0;
for(int
i=2;i<=nr/2;i++)
if(nr%i==0)
return
0;
return
1;
}
//functie ce afla cel mai mare
numar prim
int maxprim( int v[10])
{
int
max=-32000;;
for(int
i=1;i<=10;i++)
if(prim(v[i])==1
&& max<v[i])
max=v[i];
return
max;
}
//ordonare+afisare in fisier
void ordonare(int v[11])
{
fstream
f("data.out", ios::out);
int
i,j,c;
//ordonez
vectorul
for(
i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
//afisare elem din intervalul a b
void interval(int x[11],int a, int
b)
{
for(int i=1;i<=10;i++)
if(x[i]>=a
&& x[i]<=b )
cout<<x[i]<<"\t";
}
void main()
{
int
v[11],a,b;
crearef();
citirevect(v);
cout<<"Capetele
intervalului\na=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"
elementele din interval ";
interval(v,a,b);
cout<<"\nCel
mai mare numar prim "<<maxprim(v)<<"\n";
ordonare(v);
}
Subiectul nr.13
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze suma cifrelor impare ale numerelor din fişierul date.in;
c)
Să se scrie un subprogram
care să determine cel mai mare număr palindrom din fişierul date.in (număr palindrom este un
şir de cel puţin două cifre care citit de la dreapta la stânga
este identic cu numărul citit de la stânga la dreapta);
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
crescător.
Exemplu:
Date de intrare:
7
23 4 17 12 33 5 99 8 9
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 7 23 4 17 12 33 5 99 8 9
b) Suma cifrelor
impare ale numerelor din fişierul date.in:
57
c)
Cel mai mare număr palindrom din fişierul date.in este: 99
d)
Fişierul text date.out
conţine pe o linie: 4 5 7 8 9 12 17 33 34 99
#include <iostream.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie ce afla daca un numar
este palindrom
int palindrom(int nr)
{
int
c=nr,ni=0;
if(nr<=9) //daca nu are 2 cifre
return
0;
while(c!=0)
{
ni=ni*10+c%10;
c=c/10;
}
if(nr==ni)
return
1;
else
return
0;
}
//functie ce afla cel mai mare
numar palindrom
int maxim( int v[10])
{
int
max=-32000;;
for(int
i=1;i<=10;i++)
if(palindrom(v[i])==1
&& max<v[i])
max=v[i];
return
max;
}
//suma cifrelor impare ale
numerelor din fisier
int suma( int v[10])
{
int
s=0,c;
for(int
i=1;i<=10;i++)
{
c=v[i];
while(c!=0)
{
if(c%2==1)
//daca nr e impar => ultima cifra impara
s=s+c%10;
c=c/10;
}
}
return
s;
}
//ordonare+afisare in fisier
void ordonare(int v[11])
{
fstream
f("data.out", ios::out);
int
i,j,c;
//ordonez
vectorul
for(
i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void main()
{
int
a[11];
crearef();
citirevect(a);
cout<<"suma
cifrelor impare "<<suma(a)<<"\n";
cout<<"Cel
mai mare numar prim "<<maxim(a)<<"\n";
ordonare(a);
}
Subiectul nr.14
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze suma elementelor pare de pe poziţiile impare din
fişierul date.in;
c)
Să se scrie un subprogram
care să determine cel mai mare număr prim din fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
descrescător.
Exemplu:
Date de intrare :
37
23 4 77 12 34 5 90 18 19
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 37 23 4 77 12 34 5 90 18 19
b)
Suma elementelor pare de pe poziţiile impare din fişierul date.in: 34
c)
Cel mai mare număr prim din fişierul date.in este: 37
d)
Fişierul text date.out conţine
pe o linie: 90 77 37 34 23 19 18 12 5 4
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie
ce afla daca un numar este prim
int
prim(int nr)
{
if(nr==0||nr==1)
return 0;
for(int i=2;i<=nr/2;i++)
if(nr%i==0)
return
0;
return 1;
}
//functie
ce afla cel mai mare numar prim
int
maxprim( int v[10])
{
int max=-32000;;
for(int i=1;i<=10;i++)
if(prim(v[i])==1
&& max<v[i])
max=v[i];
return max;
}
//b) Sa se scrie un subprogram care sa
returneze suma elementelor
// pare
de pe pozitiile impare din fisierul date.in;
int
suma( int v[10])
{
int s=0;
for(int i=1;i<=10;i=i+2)
if(v[i]%2==0)
s=s+v[i];
return s;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"suma
elementelor pare de pe pozitiile impare
"<<suma(a)<<"\n";
cout<<"Cel mai mare
numar prim "<<maxprim(a)<<"\n";
ordonare(a);
}
Subiectul nr.15
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii din matrice, separate prin spaţii ;
b) Să se scrie un subprogram care să returneze
elementul minim de pe diagonala secundară a matricei din fişierul date.in;
c) Să se scrie un subprogram care să determine cel
mai mare divizor comun al elementelor situate în colţul stânga sus şi
colţul dreapta jos;
d) Scrieţi în fişierul text date.out elementele de pe linia a doua ale matricei de mai sus
ordonate crescător.
Exemplu:
Date de intrare:
9 2
3 6 5
4 3 2
2 3 4
5 1 2
1 2
Date de ieşire :
a) Fişierul text date.in
conţine matricea:
9 2
3 6
5 4
3 2
2 3 4 5
1 2
1 2
b) Elementul minim de pe
diagonala secundară a matricei din fişierul date.in este:1
c) Cel mai mare divizor comun al
elementelor situate în colţul stânga sus şi colţul dreapta jos
este: 1
d) Fişierul date.out conţine: 2 3 4 5
#include <iostream.h>
#include <fstream.h>
int cmmdc(int a,int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return
a;
}
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//elementul minim de pe diagonala
secundara a matricei
int suprg(int a[10][10])
// ce are termenul general
a[i][n-i+1] si am calculat maximul
{
int
min,i,j;
min=32000;
for(i=1;i<=4;i++)
if(min>a[i][5-i])
min=a[i][5-i];
return
min;
}
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
f>>a[i][j];
f.close();
}
// fct ce ordoneaza col 2
void ord(int a[10][10])
{
int
i,aux,j;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(a[2][i]>a[2][j])
{
aux=a[2][i];
a[2][i]=a[2][j];
a[2][j]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[2][i]<<"\t";
f.close();
}
void main()
{
int a[10][10];
crearef();
citiremat(a);
cout<<"Elem min de pe diag sec
"<<suprg(a)<<"\n";
cout<<"Cmmdc-ul cerut:
"<<cmmdc(a[1][1],a[4][4])<<"\n";
scrieord(a);
}
Subiectul nr.16
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un
subprogram care să returneze câte
dintre elementele din fişierul date.in
au trei divizori;
c)
Să se scrie un subprogram
care să determine cel mai mare număr neprim din fişierul date.in;
d)
Scrieţi în fişierul
text date.out şirul dat, ordonat
descrescător.
Exemplu:
Date de intrare:
7
23 4 17 12 49 5 81 8 91
Date de ieşire :
a)
Fişierul text date.in
conţine pe o linie: 7 23 4 17 12 49 5 81 8 91
b)
Două elemente din fişierul date.in
au trei divizori
c)
Cel mai mare număr neprim din fişierul date.in este: 81
d)
Fişierul date.out
conţine: 91 81 34 33 17 12 8 7 5 4
#include
<iostream.h>
#include
<fstream.h>
#include
<math.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//functie
ce afla daca un numar este prim
int
prim(int nr)
{
if(nr==0||nr==1)
return 0;
for(int i=2;i<=nr/2;i++)
if(nr%i==0)
return
0;
return 1;
}
//functie
ce afla cel mai mare numar prim
int
maxneprim( int v[10])
{
int max=-32000;;
for(int i=1;i<=10;i++)
if(prim(v[i])==0
&& max<v[i])
max=v[i];
return max;
}
//functie
ce afla numarul de elemente cu 3 divizori .
//UN NR
int
elemprime( int v[10])
{
int c=0;
for(int i=1;i<=10;i++)
{
int
y=sqrt(v[i]);
if(y==sqrt(v[i]))
//daca v[i] e patrat perfect
if(prim(y)==1) //si e patratul unui numar prim
c++;
}
return c;
}
//ordonare+afisare
in fisier
void
ordonare(int v[11])
{
fstream f("data.out",
ios::out);
int i,j,c;
//ordonez vectorul
for( i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]<v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"elementele din
fisier cu trei divizori "<<elemprime(a)<<"\n";
cout<<"Cel mai mare
numar neprim "<<maxneprim(a)<<"\n";
ordonare(a);
}
Subiectul nr.17
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un
subprogram care să returneze
elementele din fişierul date.in
care sunt divizibile cu o valoare x citită de la tastatură;
c)
Să se scrie un subprogram
care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze
între ultimul şi penultimul element al tabloului media lor aritmetică;
d)
Scrieţi în fişierul
text date.out şirul creat mai
sus, ordonat descrescător.
Exemplu:
Date de intrare :
7
23 4 17 12 49 5 81 8 9
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 7 23 4 17 12 49 5 81 8 9
b)
Pentru x=4 elementele din fişierul date.in
divizibile cu x citit de la tastatură sunt: 4 12 8
c)Tabloul
unidimensional: 7 23 4 17 12 49 5 81 8 8.5 9
d)
Fişierul date.out conţine:
81 49
23 17 12
9 8.5 8
7 5 4
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//adaug
intre penultimul si ultimul elem media lor aritmetica
void
inserez_ma(int a[11])
{
fstream f("data.out",
ios::out);
int i,j;
float v[20];
//copiez primele 9 elemente din
vectorul citit din fisier
for( i=1;i<10;i++)
v[i]=a[i];
//realizez inserarea
v[10]=((float)a[9]+a[10])/2.;
v[11]=a[10];
//ordonez vectorul nou
for( i=1;i<10;i++)
for(j=i+1;j<=11;j++)
if(v[i]<v[j])
{
int
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=11;i++)
f<<v[i]<<"\t";
f.close();
}
void
divizibile_k(int a[11],int k)
{
for(int i=1;i<=10;i++)
if(a[i]%k==0)
cout<<a[i]<<"\t";
}
void
main()
{
int a[11];
crearef();
citirevect(a);
inserez_ma(a);
cout<<"k=";
int k;
cin>> k;
cout<<"elementele din
fisier divizibile cu k ";
divizibile_k(a,k);
}
Subiectul nr.18
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze cel mai mare divizor comun al elementelor din fişierul date.in;
c)
Să se scrie un subprogram
care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze
între ultimul şi penultimul element al tabloului o valoare x citită
de la tastatură;
d)
Scrieţi în fişierul
text date.out şirul creat mai
sus, ordonat descrescător.
Exemplu:
Date de intrare:
7
23 4 17 12 33 5 99 8 9
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 7 23 4 17 12 33 5 99 8 9
b) Cel mai mare
divizor comun al elementelor din
fişierul date.in este 1
c)
Pentru x=41 tabloul unidimensional
devine: 7 23 4 17 12 33 5 99 8 41 9
d)
Fişierul date.out conţine: 99
34 33 17 12 9 8 7 5 4
#include
<iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//adaug
intre penultimul si ultimul elem media lor aritmetica
void
inserez(int a[11],int x)
{
fstream f("data.out",
ios::out);
int i,j;
int v[20];
//copiez primele 9 elemente din
vectorul citit din fisier
for( i=1;i<10;i++)
v[i]=a[i];
//realizez inserarea
v[10]=x;
v[11]=a[10];
//ordonez vectorul nou
for( i=1;i<10;i++)
for(j=i+1;j<=11;j++)
if(v[i]<v[j])
{
int
c;
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=11;i++)
f<<v[i]<<"\t";
f.close();
}
int
cmmdc(int a,int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
int
cmmdcvector(int a[11])
{
int c=a[1];
for(int i=2;i<=10;i++)
c=cmmdc(c,a[i]);
return c;
}
void
main()
{
int a[11];
crearef();
citirevect(a);
cout<<"x=";
int x;
cin>>x;
inserez(a,x);
cout<<"Cmmdc-ul
elementelor din fisier "<<cmmdcvector(a)<<"\n";
}
Subiectul nr.19
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze câte dintre elementele din fişierul date.in sunt prime cu o valoare x
citită de la tastatură;
c)
Să se scrie un subprogram
care să calculeze media aritmetică a numerelor din şir şi
să o insereze la jumătatea şirului;
d)
Scrieţi în fişierul
text date.out şirul de mai sus
ordonat descrescător.
Exemplu:
Date de intrare :
7
23 4 17 12 49 5 81 8 91
Date de ieşire:
a)
Fişierul text date.in conţine
pe o linie: 7 23 4 17 12 49 5 81 8 91
b)
Pentru x=3 opt elemente din
fişierul date.in sunt prime cu 3
c)
Şirul după inserare: 7 23 4 17 12 29.7 49 5 81 8 91
d)
Fişierul date.out conţine: 91
81 49 29.7 23 17 12 8 7 5 4
#include <iostream.h>
#include
<fstream.h>
void
crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea
vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//adaug
intre penultimul si ultimul elem media lor aritmetica
void inserez_ma(int
a[11])
{
fstream f("data.out",
ios::out);
int i,j;
float v[20],ma=0;
//calcul medie
for( i=1;i<=10;i++)
ma=ma+a[i];
ma=ma/10.;
//copiez primele 9 elemente din
vectorul citit din fisier
for( i=1;i<=5;i++)
v[i]=a[i];
//realizez inserarea
v[6]=ma;
for( i=6;i<=10;i++)
v[i+1]=a[i];
//ordonez vectorul nou
for( i=1;i<10;i++)
for(j=i+1;j<=11;j++)
if(v[i]<v[j])
{
int
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il scriu in fisier
for(i=1;i<=11;i++)
f<<v[i]<<"\t";
f.close();
}
int
cmmdc(int a,int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return a;
}
// Sa se scrie un subprogram care sa
returneze câte dintre elementele
// din
fisierul date.in sunt prime cu o valoare x citita de la tastatura;
int contor(int
a[11],int x)
{
int c=0;
for(int i=1;i<=10;i++)
if(cmmdc(x,a[i])==1)
c++;
return c;
}
void
main()
{
int a[11];
crearef();
citirevect(a);
inserez_ma(a);
cout<<"x=";
int x;
cin>>x;
cout<<"Nr elementelor
din fisier prime cu x ==> "<<contor(a,x)<<"\n";
}
Subiectul nr.20
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să determine elementul minim şi elementul maxim din
fişierul date.in şi
poziţiile pe care le ocupă în şirul numerelor date;
c)
Să se scrie un subprogram
care să determine câte dintre elementele şirului cuprinse într-un
interval citit de la tastatură sunt numere pare;
d)
Scrieţi în fişierul
text date.out şirul de mai sus
ordonat crescător.
Exemplu:-
Date de intrare :
7
24
4 17 12 33 5 99 8 9
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 7 24 4 17 12 33 5 99 8 9
b) Elementul
minim: 4 şi ocupă poziţia 3; elementul maxim: 99
şi ocupă poziţia 8
c)
Pentru intervalul [10, 40] două numere sunt pare
d)
Fişierul date.out conţine:
4 5
7 8 9
12 17 24 33 99
#include <iostream.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//calculez min si max si aflu
pozitia lor din fisier cu aj vectorului
void minmax(int v[11],int
&max, int &min, int &m,int &n)
{
max=-32000;
min=32000;
for(int
i=1;i<=10;i++)
if(v[i]>max)
{
max=v[i];
m=i;
}
else
if(v[i]<min)
{
min=v[i];
n=i;
}
}
//numara elem pare din intervalul
a b
int contor(int x[11],int a, int
b)
{
int c=0;
for(int i=1;i<=10;i++)
if(x[i]>=a
&& x[i]<=b && x[i]%2==0)
c++;
return c;
}
//ordonare+afisare in fisier
void ordonare(int v[11])
{
fstream
f("data.out", ios::out);
int
i,j,c;
//ordonez
vectorul
for(
i=1;i<10;i++)
for(j=i+1;j<=10;j++)
if(v[i]>v[j])
{
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=10;i++)
f<<v[i]<<"\t";
f.close();
}
void main()
{
int
v[11];
crearef();
citirevect(v);
int
min,max,pmin,pmax;
minmax(v,max,min,pmax,pmin);
cout<<"Elementul
minim: "<<min<<" si ocupa pozitia
"<<pmin<<" elementul maxim:
"<<max<<" si ocupa pozitia
"<<pmax<<"\n";
int
a,b;
cout<<"Introduceti
capetele intervalului\n";
cin>>a>>b;
cout<<"Pentru
intervalul ["<<a<<","<<b<<"] sunt
"<< contor(v,a,b)<<" numere sunt pare\n";
ordonare(v);
}
Subiectul nr.21
Se citeşte de la tastatură un şir de 10 numere întregi mai
mici decât 100.
a)
Să se creeze fişierul
text date.in care să
conţină pe o linie cele 10 valori, separate prin spaţiu;
b)
Să se scrie un subprogram
care să returneze cel mai mare divizor comun al elementelor din
fişierul date.in;
c)
Să se scrie un subprogram
care să creeze un tablou unidimensional cu elementele fişierului date.in în care să se insereze
între ultimul şi penultimul element al tabloului media lor aritmetică;
d)
Scrieţi în fişierul
text date.out şirul de mai sus
ordonat descrescător.
Exemplu:
Date de intrare :
6
3 24 27 12 9 15 81 18 21
Date de ieşire:
a)
Fişierul text date.in
conţine pe o linie: 6 3 24 27 12 9 15 81 18 21
b)
Cel mai mare divizor comun al elementelor din fişierul date.in este 3
c)
Sirul după inserare: 6 3 24 27 12 9 15 81 18 19.5 21
d)
Fişierul date.out conţine: 81
27 24 21 19.5 18
15 12 9 6 3
#include <iostream.h>
#include <fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<10)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea vector din fisier
void citirevect(int a[11])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=10;i++)
f>>a[i];
f.close();
}
//adaug intre penultimul si
ultimul elem media lor aritmetica
void inserez_ma(int a[11])
{
fstream
f("data.out", ios::out);
int
i,j;
float
v[20];
//copiez
primele 9 elemente din vectorul citit din fisier
for(
i=1;i<10;i++)
v[i]=a[i];
//realizez
inserarea
v[10]=((float)a[9]+a[10])/2.;
v[11]=a[10];
//ordonez
vectorul nou
for(
i=1;i<10;i++)
for(j=i+1;j<=11;j++)
if(v[i]<v[j])
{
int
c=v[j];
v[j]=v[i];
v[i]=c;
}
//il
scriu in fisier
for(i=1;i<=11;i++)
f<<v[i]<<"\t";
f.close();
}
int cmmdc(int a,int b)
{
while(a!=b)
if(a>b)
a=a-b;
else
b=b-a;
return
a;
}
int cmmdcvector(int a[11])
{
int
c=a[1];
for(int
i=2;i<=10;i++)
c=cmmdc(c,a[i]);
return
c;
}
void main()
{
int
a[11];
crearef();
citirevect(a);
inserez_ma(a);
cout<<"Cmmdc-ul
elementelor din fisier "<<cmmdcvector(a)<<"\n";
}
Subiectul nr.22
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii dintr-o matrice 4x4, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
elementul minim al matricei şi numărul lui de apariţii;
c) Să se scrie un subprogram care să determine
numărul elementelor de tip palindrom de sub diagonala principală a
matricei (palindrom este un număr de cel puţin două cifre care
citit de la dreapta la stânga este identic cu numărul citit de la stânga
la dreapta);
d) Scrieţi în fişierul text date.out elementele de pe prima linie a matricei de mai sus
ordonate crescător.
Exemplu:
Date de intrare :
1 2
33 6 5
4 3 2
22 3 44
5 1 2
1 2
Date de ieşire:
a) Fişierul text date.in conţine matricea:
1 2
33 6
5 4
3 2
22 3
44 5
1 2 1 2
b) Elementul minim al
matricei este 1 şi numărul lui
de apariţii este 3
c) Există un singur element
palindrom sub diagonala principală
d) Fişierul date.out conţine: 1 2 6 33
#include<iostream.h>
#include<fstream.h>
void crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//elementul min
int minim(int a[10][10])
{
int min,i,j;
min=32000;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(min>a[i][i])
min=a[i][i];
return min;
}
//nr de aparitii al lui x in matrice
int contorx(int a[10][10],int x)
{
int m=0,i,j;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(x==a[i][j])
m++;
return m;
}
//prg ce verifica daca un nr e perfect
//parcurgem toti divizorii unui numar "n"
//si verificam daca suma divizorilor lui este egala cu el insusi
int palindrom(int nr)
{
int c,v=0;
if(nr<=9)
return 0;
c=nr;
while(c!=0)
{
v=c%10+v*10;
c=c/10;
}
if(nr==v)
return 1;
else
return 0;
}
// nr palindrom de sub diag pp
int pal(int a[10][10])
{
int c=0,i,j;
for(i=1;i<=4;i++)
for(j=1;j<i;j++)
if(palindrom(a[i][j])==1)
c++;
return c;
}
// fct ce ordoneaza linia 1
void ord(int a[10][10])
{
int i,aux,j;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(a[1][i]>a[1][j])
{
aux=a[1][i];
a[1][i]=a[1][j];
a[1][j]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[1][i]<<"\t";
f.close();
}
void main()
{
int a[10][10],min,n=4,c;
crearef();
citiremat(a);
min=minim(a);
cout<<"Elem min "<<min<<" ce apare de
"<<contorx(a,min)<<"\n";
cout<<"Nr palindroamelor de sub
diag pp "<<pal(a)<<"\n";
scrieord(a);
}
Subiectul nr.23
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii unei linii dintr-o matrice 4x4, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
elementul maxim de sub diagonala secundară a matricei din fişierul date.in;
c) Să se scrie un subprogram care să determine
câte dintre elementele matricei sunt numere perfecte (un număr este
perfect dacă este egal cu suma divizorilor săi fara el însuşi);
d) Scrieţi în fişierul text date.out elementele de pe coloana a doua din matricea de mai sus
ordonate crescător.
Exemplu:
Date de intrare:
1 2
3 6 5
4 3 2
2 3 4
5 1 2
1 2
Date de ieşire:
a) Fişierul text date.in conţine matricea:
1 2
3 6
5 4
3 2
2 3
4 5
1
2
1 2
b) Elementul maxim de sub
diagonala secundară a matricei din fişierul date.in este 5
c) Există un singur
număr perfect (6=1+2+3)
d) Fişierul date.out conţine: 2 2 3 4
#include<iostream.h>
#include<fstream.h>
void crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//elementul maxim de sub diagonala secundara a matricei
int suprg(int a[10][10])//am parcurs toate elem de sub diagonala secundara
// ce are termenul general a[i][n-i+1] si am calculat maximul
{
int max,i,j;
max=-32000;
for(i=1;i<4;i++)
for(j=4-i+1;j<4;j++)
if(max<a[i][j])
max=a[i][j];
return
max;
}
//prg ce verifica daca un nr e perfect
//parcurgem toti divizorii unui numar "n"
//si verificam daca suma divizorilor lui este egala cu el insusi
int perfect(int n)
{
int k,s;
s=0;
for(k=1;k<=n/2;k++)
if(n%k==0)
s=s+k;
return s==n;
}
//verificam cate numere deacest gen se regasesc in fisier
int contorperfect(int a[10][10])
{
int i,j,c=0;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(perfect(a[i][j])==1)
c++;
return
c;
}
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=0;i<4;i++)
for(int j=0;j<4;j++)
f>>a[i][j];
f.close();
}
// fct ce ordoneaza col 2
void ord(int a[10][10])
{
int i,aux,j;
for(i=0;i<3;i++)
for(j=i+1;j<4;j++)
if(a[i][1]>a[j][1])
{
aux=a[i][1];
a[i][1]=a[j][1];
a[j][1]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=0;i<4;i++)
f<<a[i][1]<<"\t";
f.close();
}
void main()
{
int a[10][10],max,n=4,c;
crearef();
citiremat(a);
max=suprg(a);
cout<<"Elem max de sub diag sec
"<<max<<"\n";
c=contorperfect(a);
cout<<"Nr elem perfecte:
"<<c<<"\n";
scrieord(a);
}
Subiectul nr.24
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii dintr-o matrice 4x4, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
suma elementelor pare de pe marginea exterioară a matricei;
c) Să se scrie un subprogram care să determine
numărul elementelor matricei egale cu o valoare x dată de la
tastatură;
d) Scrieţi in fişierul text date.out elementele de pe coloana a treia din matricea de mai sus,
ordonate descrescător.
Exemplu:
Date de intrare:
1 2
3 6 5
4 3 2
2 3 4
5 1 2
1 2
Date de ieşire:
a) Fişierul text date.in conţine matricea:
1 2
3 6
5 4
3 2
2 3
4 5
1 2
1 2
b) Suma elementelor pare de pe
marginea exterioară a matricei este:16
c) Pentru x=5 se va afişa: 2
d) Fişierul date.out conţine: 4 3 3 1
#include<iostream.h>
#include<fstream.h>
void crearef()
{
fstream
f;
f.open("data.in",ios::out);
int
c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
f>>a[i][j];
f.close();
}
//suma elem pare de pe marginea
exterioara
int suma(int a[10][10])
{
int
j,s=0;
//linia
1
for(j=1;j<=4;j++)
if(a[1][j]%2==0)
s=s+a[1][j];
//col
4
for(j=2;j<=4;j++)
if(a[j][4]%2==0)
s=s+a[j][4];
//linia 4
for(j=3;j>=1;j--)
if(a[4][j]%2==0)
s=s+a[4][j];
//col
4
for(j=3;j>=2;j--)
if(a[j][1]%2==0)
s=s+a[j][1];
return
s;
}
//numarul elem matricei egala cu
o valoare x
int numar(int a[10][10],int x)
{
int
i,j,c=0;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(a[i][j]==x)
c++;
return
c;
}
// fct ce ordoneaza col 2
void ord(int a[10][10])
{
int
i,aux,j;
for(i=1;i<4;i++)
for(j=i+1;j<=4;j++)
if(a[i][3]<a[j][3])
{
aux=a[i][3];
a[i][3]=a[j][3];
a[j][3]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[i][3]<<"\t";
f.close();
}
void main()
{
int a[10][10],s,c,x;
crearef();
citiremat(a);
s=suma(a);
cout<<"Suma elem pare de pe margine
exterioara "<<s<<"\n";
cout<<"x=";
cin>>x;
c=numar(a,x);
cout<<x<<"apare
de "<<c<<" ori\n";
citiremat(a);
scrieord(a);
}
Subiectul nr.25
Se citeşte de la tastatură un şir de 16 numere întregi mai
mici decât 100.
a) Să se creeze fişierul text date.in care să conţină patru linii. Fiecare linie
afişată conţine elementele unei linii dintr-o matrice 4x4, separate prin spaţii;
b) Să se scrie un subprogram care să returneze
elementul maxim de pe diagonala principală a matricei din fişierul date.in;
c) Să se scrie un subprogram care să determine
câte dintre elementele matricei sunt numere perfecte (un număr e perfect
dacă este egal cu suma divizorilor săi fara el însuşi);
d) Scrieţi în fişierul text date.out elementele de pe linia a doua ale matricei de mai sus
ordonate crescător.
Exemplu:
Date de intrare:
1 2
3 6 5
4 3 2
2 3 4
5 1 2
1 2
Date de ieşire:
a) Fişierul text date.in conţine matricea:
1 2
3 6
5 4
3 2
2 3
4 5
1 2
1 2
b) Elementul maxim de pe
diagonala principală a matricei din fişierul date.in este: 4
c) Există un singur
număr perfect (6=1+2+3)
d) Fişierul date.out conţine: 2 3 4 5
#include<iostream.h>
#include<fstream.h>
void crearef()
{
fstream f;
f.open("data.in",ios::out);
int c=0,m;
cout<<"introduceti
numerele ";
while(c<16)
{
do
{
cin>>m;
}while(m>100);
f<<m<<"\t";
c++;
}
f.close();
}
//elementul maxim de pe diagonala pp a matricei
int suprg(int a[10][10])
{
int max,i,j;
max=-32000;
for(i=1;i<=4;i++)
if(max<a[i][i])
max=a[i][i];
return max;
}
//prg ce verifica daca un nr e perfect
//parcurgem toti divizorii unui numar "n"
//si verificam daca suma divizorilor lui este egala cu el insusi
int perfect(int n)
{
int k,s;
s=0;
for(k=1;k<=n/2;k++)
if(n%k==0)
s=s+k;
return s==n;
}
//verificam cate numere deacest gen se regasesc in fisier
int contorperfect(int a[10][10])
{
int i,j,c=0;
for(i=1;i<=4;i++)
for(j=1;j<=4;j++)
if(perfect(a[i][j])==1)
c++;
return
c;
}
//citirea matricei din fisier
void citiremat(int a[10][10])
{
fstream f;
f.open("data.in",ios::in);
for(int i=1;i<=4;i++)
for(int j=1;j<=4;j++)
f>>a[i][j];
f.close();
}
// fct ce ordoneaza linia 2
void ord(int a[10][10])
{
int i,aux,j;
for(i=1;i<=3;i++)
for(j=i+1;j<=4;j++)
if(a[2][i]>a[2][j])
{
aux=a[2][i];
a[2][i]=a[2][j];
a[2][j]=aux;
}
}
//scriere in date.out
void scrieord(int a[10][10])
{
fstream f;
ord(a);
f.open("data.out",ios::out);
for(int i=1;i<=4;i++)
f<<a[2][i]<<"\t";
f.close();
}
void main()
{
int a[10][10],max,n=4,c;
crearef();
citiremat(a);
max=suprg(a);
cout<<"Elem max de pe diag pp
"<<max<<"\n";
c=contorperfect(a);
cout<<"Nr elem perfecte:
"<<c<<"\n";
scrieord(a);
}
Colectivul de
autori:
-
Prof. Ştefania
Penea – Colegiul Naţional „Spiru Haret”, sector 2
-
Prof. Doina
Druţă – Grup Şcolar „Nichita Stănescu”, sector 3
-
Prof. Anca Ileana –
Liceul Teoretic „Grigore Moisil”, sector 6
Coordonator:
Prof. Brânduşa Bogdan –
Inspector de specialitate informatică, Inspectoratul Şcolar al
Municipiului Bucureşti