STANCIU CLAUDIU BOGDAN
XI B
TEMA VACANTA
Probleme
1. Două numere sunt prietene dacă suma divizorilor proprii ai unui
număr este egală cu celălalt număr. Citite două numere întregi a și b
de la tastatură, să se scrie algoritmul care verifică dacă ele sunt
prietene, afișându-se mesaj corespunzător.
#include <iostream>
using namespace std;
int main()
int a, b, aux, s=0;
cin>>a>>b;
if (a<b){
aux=a;
a=b;
b=aux;
for (int i=2; i<=a/2; i++)
if (a%i==0)s=s+i;
if (s==b)cout<<"DA";
else cout<<"NU";
return 0;
2. Să se citească un număr întreg de la tastatură și să se stabilească
dacă acesta este perfect sau nu. (un număr este perfect dacă e egal
cu suma divizorilor săi mai puțin el însuși de ex.6=1+2+3)
#include <iostream>
using namespace std;
int main()
int n, s=1;
cin>>n;
for (int i=2; i<=n/2; i++)
if (n%i==0)s=s+i;
if (s==n)cout<<"da";
else cout<<"nu";
return 0;
3. Se dă un fişier text cu numere naturale mai mici sau egale cu 10 000
000, separate între ele prin câte un spaţiu. Să se afişeze pe ecran
numărul de pătrate perfecte care se găsesc în fişier.
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("date.in");
int main()
{
int n, c=0, k;
while(fin>>n)
for (k=1; k<=n/2; k++)
if(k*k==n)c++;
cout<<c;
return 0;
}
4. In fisierul UNU.TXT se gaseste pe prima linie un numar natural nenul
n<=10 reprezentand dimensiunea unei matrici patratice. Pe
urmatoarele n linii se gasesc cate n numere naturale separate prin
spatiu, reprezentand valorile elementelor din matrice. Sa se
determine cate valori pare sunt. Rezultatul se va scrie in fisierul
DOI.TXT
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin('UNU.TXT');
ofstream fout("DOI.TXT");
int main()
{
int n, a[100][100], i, j, c=0;
fin>>n;
for (i=1; i<=n; i++)
for (j=1; k<=n; j++)
{
fin>>a[i][j];
if (a[i][j]%2==0)c++;
}
fout<<c;
return 0;
}
5. In fisierul IN.TXT se gaseste un numar natural foarte mare (maxim
300 de cifre) scris pe prima linie din fisier, cifrele fiind separate prin
cate un spatiu. Sa se scrie in fisierul OUT.TXT cifrele care apar in
scrierea numarului impreuna cu frecventa lor de aparitie. Pe fiecare
linie din fisier se vor scrie doua valori separate prin spatiu : cifra si
de cate ori apare ea in numar. Cifreele vor fi afisate
in ordine crescatoare..
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("IN.TXT");
ofstream fout("OUT.TXT");
int v[9];
int main()
{
int n, i;
while (fin>>n)
v[n]++;
for (i=0; i<=9; i++)
if (v[i]!=0) fout<<i<<" "<<v[i]<<endl;
return 0;
}
6. Fiind date două şiruri de numere întregi cu câte m (m<=100),
respectiv n elemente (n<=100), să se afişeze elementele primului
şir care nu se găsesc şi în cel de-al doilea şir, precum şi numărul
acestora. Rezultatele se vor scrie in fisirul OUT.TXT, cate un numar
pe o linie.
#include <iostream>
#include <fstream>
using namespace std;
ifstream fout("OUT.TXT");
int main()
{
int v[100], u[100], m, n, i, j, c=0;
cin>>n>>m;
for (i=1; i<=n; i++)
cin>>v[i];
for (j=1; j<=m; j++)
cin>>u[j];
for (i=1; i<=n; i++)
{
int ok=1;
for (j=1; j<=m; j++)
if (v[i]==u[j])ok=0;
if (ok==1){fout<<v[i]<<" ";
c++;
}
}
fout<<c;
return 0;
}
7. In fisierul UNU.TXT se gaseste pe prima linie un numar natural
nenul n<=10 reprezentand dimensiunea unei matrici patratice. Pe
urmatoarele n linii se gasesc cate n numere intregi separate prin
spatiu, reprezentand valorile elementelor din matrice. Sa se verifice
daca toate coloanele din matrice au suma elementelor strict
pozitiva. Rezultatul se va scrie in fisierul DOI.TXT sub forma DA sau
NU.
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("UNU.TXT");
ofstream fout ("DOI.TXT");
int main()
{
int a[100][100],i, j ,n, s, ok=1;
fin>>n;
for (i=1; i<=n; i++)
for (j=1; j<=n; j++)
fin>>a[i][j];
for (j=1; j<=n; j++)
{
s=0;
for (i=1; i<=n; i++)
s=s+a[i][j];
if (s<0)ok=0;
}
if (ok==1)cout<<"DA";
else cout<<"NU";
return 0;
}