Documente Academic
Documente Profesional
Documente Cultură
Laborator 1
Laborator 1
Aplicaţii – Programarea Calculatoarelor
A) Probleme rezolvate
1. Scrieti un program C/C++ care citeste din fisierul text PALINDROM.IN, cel mult 100 de
numere naturale aflate pe o singura linie, formate din cel mult 9 cifre fiecare, separate prin spatii
si dintre acestea le afiseazã pe ecran doar pe acelea care au proprietatea de a fi palindrom. Daca
nu se gãsesc numere palindrom, se va afisa pe ecran valoarea -1.
Un numãr are proprietatea de a fi palindrom daca citit de la dreapta la stânga sau de la stânga
la dreapta are aceeasi valoare.
#include<iostream.h>
#include <fstream.h>
ifstream fin;
int palindrom(int n)
{
int copie=n,oglindit,c;
oglindit=0;
while(n!=0)
{
c=n%10;
oglindit=oglindit*10+c;
n=n/10;
}
return (copie==oglindit);
}
int main()
{
int n,x,p;
p=0;
fin.open("palindrom.in"); // Deschiderea fisierului
while(fin >> x) // Se citeste un numar din fisier
{
if(palindrom(x))
{
cout<<x;
1
PROIECTAREA ALGORITMILOR
Laborator 1
p=1;
}
if(p==0)
cout<<"-1";
}
fin.close(); // Inchidem fisierul si se elibereaza stream-ul
}
2. Scrieţi un program C/C++ care citeşte din fişierul text DATE.IN cel mult 100 de numere
naturale nenule aflate pe o singura linie, formate din cel mult 4 cifre fiecare, separate prin spatii
si scrie in fişierul DATE.OUT numerele, in ordinea inversa fata de cea in care au fost citite, pe o
singura linie separate prin spatii.
De exemplu daca din fişierul DATE.IN se citesc numerele 93 207 15 1982 3762, atunci
conţinutul fişierului DATE.OUT va fi 3762 1982 15 207 93.
#include<fstream.h>
int main()
{
int n,i,v[100];
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
f>>n;
for(i=1;i<=n;i++)
f>>v[i];
for(i=n;i>0;i--)
g<<v[i];
f.close();
g.close();
}
3. Scrieţi un program C/C++ care citeşte de pe prima linie a fişierului text CMMDC.TXT trei
numere naturale a, b, c formate din cel mult patru cifre fiecare, separate prin cate un spaţiu si
afişează pe ecran cel mai mare divizor comun al acestora.
De exemplu, daca din fişier se citesc numerele: 9 27 15, atunci se afişează 3.
#include<iostream.h>
#include<fstream.h>
int cmmdc (int x,int y)
{
while (x!=y)
if(x>y) x=x-y;
else y=y-x;
return x;
}
int main()
{
int a,b,c,d;
fstream("CMMDC.txt";ios::in);
2
PROIECTAREA ALGORITMILOR
Laborator 1
f>>a>>b>>c;
f.close;
d=cmmdc(a,b);
cout<<cmmdc(c,d);
}
4. Se considera fişierul text DATE.IN care conţine exact 19 numere distincte formate fiecare din
maxim 2 cifre. Sa se afişeze in fişierul text DATE.OUT numărul care lipseşte din fişierul
DATE.IN.
#include<fstream.h>
int main()
{
int v[100],n,i,j,p;
fstream f("date.in",ios::in);
fstream g("date.out",ios::out);
for(i=1;i<=19;i++)
f>>v[i];
f.close();
for(i=10;i<=99;i++)
{
p=1;
for(j=1;j<=19;j++)
if(i==v[j]) p=0;
if(p)
g<<i;
}
g.close();
}
5. Se citeşte de la tastatura un număr natural nenul n (n<1000). Scrieţi un program C/C++ care
construieşte fişierul text DIVIZORI.TXT care sa contina, pe prima linie, toţi divizorii lui n in
ordine strict descrescătoare. Divizorii vor fi separaţi prin spaţiu.
De exemplu, daca n=10, atunci fişierul DIVIZORI.TXT va conţine: 10, 5, 2, 1
#include<iostream.h>
#include<fstream.h>
int main()
{
int d,n;
cout<<"n=";cin>>n;
fstream g("divizori.txt",ios::out);
for(d=n;d>=1;d--)
if(n%d==0)
g<<d<<" ";
g.close();
}
3
PROIECTAREA ALGORITMILOR
Laborator 1
Exemplu: Pentru n=7, v = {5, 12, 4, 9,11, 24, 8} si a=2, obtinem suma = 12+4+24+8=48.
2. Fie n valori de tip întreg. Să se calculeze raportul dintre suma elementelor strict pozitive şi
produsul tuturor celor n valori.
3. Scrieţi un program care afişează în ordine inversă componentele unui tablou a format din 10
elemente (numere întregi).
5. Sa se scrie un program care sa afiseze produsul valorilor cu modulul mai mic decat primul
element dintr-un tablou unidimensional de numere intregi.
6. Sa se scrie un program care sa afiseze produsul valorilor care au acelasi semn cu al doilea
element din vector.
7. Să se insereze cifra 0 pe prima poziţie a unui vector dat, fără a utiliza un alt vector.
Exemplu: