Documente Academic
Documente Profesional
Documente Cultură
DISCIPLINA
PROGRAMARE PROCEDURALĂ
Chișinău, 2019
Sarcini rezolvate
1. Să se calculeze suma a (n+5) numere naturale care se citesc din fișierul Greutate.txt. Să se
efectuieze următoarele sarcini asupra acestor numere:
a) să se calculeze suma celor (n+5) numere;
b) să se calculeze media aritmetică;
c) să se determine elementul minim;
d) să se determine elementul maxim.
Rezultatele de la cazurile a-d să se scrie în fișierul solutia1.txt într-o coloniță pentru fiecare caz.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
int a[50],n=0,i,minim,maxim;
float m,s=0;
ifstream f("numere.txt");
ofstream g("rezultate.txt");
while (!f.eof()){
n++;
f>>a[n];
s=s+a[n];
}
cout<<"Elementele vectorului sunt: \n";
g<<"Elementele vectorului sunt: \n";
for(i=1;i<=n;i++)
{
cout<<a[i]<<" ";
g<<a[i]<<" ";
}
m=s/n;
cout<<"\n\nSuma elementelor este: "<<s<<endl;
g<<"\n\nSuma elementelor este: "<<s<<endl;
cout<<"\nMedia aritmetica este: "<<m<<endl;
g<<"\nMedia aritmetica este: "<<m<<endl;
minim=a[0];
for(i=0;i<n;i++)
{
if(minim>a[i]) minim=a[i];
}
maxim=a[0];
for(i=0;i<n;i++){
if(maxim<a[i]) maxim=a[i];
}
cout<<"Elementul minim este: "<<minim<<endl;
g<<"Elementul minim este: "<<minim<<endl;
cout<<"Elementul maxim este: "<<maxim<<endl;
g<<"Elementul maxim este: "<<maxim<<endl;
f.close();
g.close();
}
Rezultate obținute în urma execuției programului:
2. Fie sunt introduse de la tastatură două numere întregi m>10 și n>10. Să se efectuieze
următoarele sarcini asupra acestor numere:
a) să se calculeze media geometică cu o exactitate de minim 6 cifre după virgulă;
b) să se interschimbe cele două numere;
c) să se calculeze suma dintre m și n dacă mn atunci să se calculeze diferența lor;
d) să se determine ultimele două cifre ale produsului dintre m și n.
Rezultatele de la cazurile a-d să se scrie în fișierul solutia2.txt într-o coloniță pentru fiecare caz.
Rezolvare:
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
int main(){
int a,b,n=0,i,minim,maxim,temp,p;
double mg,s=0;
ifstream f("numere.txt");
ofstream g("solutia2.txt");
f>>a; f>>b;
if(a>10 && b>10)
{
cout<<"Elementele vectorului sunt: "<<a<<" "<<b<<endl;
g<<"Elementele vectorului sunt: "<<a<<" "<<b<<endl;
mg=sqrt(a*b);
cout<<"Media geometrica este: "<<setprecision(6)<<fixed<<mg<<endl;
g<<"Media geometrica este: "<<setprecision(6)<<fixed<<mg<<endl;
temp=a;
a=b;
b=temp;
cout<<"Dupa interschimbare, numerele sunt: "<<a<<" "<<b<<endl;
b=a;a=temp;
p=a*b;
if(p>99)
p=p%100;
cout<<"Ultimele 2 cifre ale numarului sunt: "<<p<<endl;
}
else cout<<"Numerele trebuie sa fie mai mari ca 10.";
}
5. Fișierul interval.in conține pe prima linie un număr n, iar pe linia adoua sunt scrise prin spațiu
extremitățile unui interval. Să se specificedacă numărul n aparține intervalului [a,b], iar
rezultatul va fi scris înfișierul solutie.out.
Rezolvare:
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("interval.in.txt");
ofstream g("solutie.out.txt");
int main(){
int a,b,c,i;
f>>a>>b>>c;
cout<<"nr: "<<a<<"\nInterval: "<<b<<" "<<c<<" "<<endl;
g<<"nr: "<<a<<"\nInterval: "<<b<<" "<<c<<" "<<endl;
if(a>=b && a<=c){
cout<<"\nNumarul "<<a<<" face parte din interval"<<endl;
g<<"\nNumarul "<<a<<" face parte din interval"<<endl;}
else{
cout<<"\nNumarul "<<a<<" nu face parte din interval"<<endl;
g<<"\nNumarul "<<a<<" nu face parte din interval"<<endl;}
}
Rezolvare:
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("intrare.in.txt");
ofstream g("iesire.out.txt");
int main(){
int a,n=0,s=0,c,maxim=0,b,r,d;
f>>a;cout<<"Numarul introdus este: "<<a<<endl;
g<<"Numarul introdus este: "<<a<<endl;c=a,b=a,d=a;
while(a>0)
{
a=a/10;
n++;
}
cout<<"\nNumarul are "<<n<<" cifre"<<endl;
g<<"\nNumarul are "<<n<<" cifre"<<endl;
while (c>0) {
s=s+c%10;
c=c/10;
}
cout<<"Suma cifrelor numerului este "<<s<<endl;
g<<"Suma cifrelor numerului este "<<s<<endl;
while (b > 0) {
r = b % 10;
if (maxim < r) {
maxim = r;
}
b = b / 10;
}
cout<<"Cel mai mare numar este "<<maxim<<endl;
g<<"Cel mai mare numar este "<<maxim<<endl;n=0;
while (d > 0) {
if (d % 10 == 5)
n++;
d = d / 10;
}
cout<<"Cifra 5 apare de "<<n<<" ori"<<endl;
g<<"Cifra 5 apare de "<<n<<" ori"<<endl;
}
Rezultate obținute în urma execuției programului:
8. Din fișirul note.in se citesc cele 5 note obținute de un elev la informatică pe parcursul unui semestru și
nota de la teză. Scrieți un algoritm care să afișeze media lui și să o scrie într-un fișier numit media.out.
Ultima notă din fișier este nota de la teză. Media semestrială se va calcula după formula:
0,55*N.S.+0,45*N.T., N.S. este media primelor 4 note, iar N.T. este nota de la teză. Rezultatul final se
va scrie în fișier cu 3 cifre după virgulă, fără rotungire.
Rezolvare:
#include <iostream>
#include <fstream>
#include <math.h>
#include <iomanip>
using namespace std;
ifstream f("note.in.txt");
ofstream g("media.out.txt");
int main(){
int a,b,c,d,t;
float nf,ns;
f>>a>>b>>c>>d>>t;
ns=(a+b+c+d)/4;nf=0.55*ns+0.45*t;
cout<<"Notele obtinute pe parcursul semestrului: "<<a<<" "<<b<<" "<<c<<" "<<d<<", cu o medie de:
"<<ns<<endl;
g<<"Notele obtinute pe parcursul semestrului: "<<a<<" "<<b<<" "<<c<<" "<<d<<", cu o medie de:
"<<ns<<endl;
cout<<"Nota de la teza: "<<t<<endl;
g<<"Nota de la teza: "<<t<<endl;
cout<<"Nota semestriala: "<<setprecision(3)<<fixed<<nf<<endl;
g<<"Nota semestriala: "<<setprecision(3)<<fixed<<nf<<endl;
}
9. Să presupunem că avem următorul fișier care pe prima linie conține un număr natural nenul n,
iar pe a doua linie se află n numere întregi reprezentând elementele unui vector. Se cere
citirea vectorului, pentru elementele pare să se calculeze cuburile lor, iar pentru elementele
impare să se scadă elementul minim din vector, apoi salvarea rezultatelor în fișierul gigel.out.
În fișierul de ieșire se va scrie pe prima linie vectorul initial, iar pe linia a doua – vectorul
obținut.
Rezolvare:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
int nr[1000], poz[10000],i,j,n,sw,minim=0;
ifstream fin("gigel.in.txt");
ofstream fout("gigel.out.txt");
fin>>n;
for(i=0;i<n;i++)
fin>>nr[i];
for(i=0;i<n;i++)
cout<<nr[i]<<" ";
for(i=0;i<n;i++)
fout<<nr[i]<<" ";
minim=nr[0];
for(i=0;i<n;i++){
if(minim>nr[i]){ minim=nr[i];}
if(nr[i]%2==0){
nr[i]=nr[i]*nr[i]*nr[i];}
else if(nr[i]%2!=0)
nr[i]=nr[i]-minim;
}
cout<<endl;
fout<<endl;
for(i=0;i<n;i++)
cout<<nr[i]<<" ";
for(i=0;i<n;i++)
fout<<nr[i]<<" ";
fin.close();
fout.close();
}
10. Se citește un șir de la tastatură până la întâlnirea caracterului "$". După citiredatele se scriu în
fișierul mesaj.in. Apoi se preiau din fișierul respectiv și se facecontorizarea fiecărei vocale din
fișier. Rezultatul se va afișa în fișierul vocale.out.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream f("mesaj.in.txt");
ofstream g("mesaj.in.txt");
ofstream l("vocale.out.txt");
string a;
char b;
cin>>a;
int marime=a.length(),v=0,o=0,p=0,h=0,t=0,i=0,n=0;
for(i=0;i<=marime;i++)
if(a[i]=='$')
marime=i-1;
cout<<"Expresia: ";
l<<"Expresia: ";
for(i=0;i<=marime;i++)
cout<<a[i];
for(i=0;i<=marime;i++)
g<<a[i];
for(i=0;i<=marime;i++)
l<<a[i];
f>>a[i];
for(i=0;i<=marime;i++)
switch(a[i]){
case 'a':n++;v++;break;
case 'e':n++;o++;break;
case 'o':n++;h++;break;
case 'u':n++;t++;break;
case 'i':n++;p++;break;
}
cout<<" contine "<<n<<" vocale."<<endl;
l<<" contine "<<n<<" vocale."<<endl;;
cout<<"\nVocala a apare de "<<v<<" ori.";
l<<"\nVocala a apare de "<<v<<" ori.";
cout<<"\nVocala e apare de "<<o<<" ori.";
l<<"\nVocala e apare de "<<o<<" ori.";
cout<<"\nVocala o apare de "<<h<<" ori.";
l<<"\nVocala o apare de "<<h<<" ori.";
cout<<"\nVocala u apare de "<<t<<" ori.";
l<<"\nVocala u apare de "<<t<<" ori.";
cout<<"\nVocala i apare de "<<p<<" ori.";
l<<"\nVocala i apare de "<<p<<" ori.";
g.close();
}
11. Se citește un șir de la tastatură până la întâlnirea caracterului "$". După citiredatele se scriu în
fișierul mesaj.in. Apoi se preiau din fișierul respectiv și se facecontorizarea fiecărei vocale din
fișier. Rezultatul se va afișa în fișierul vocale.out.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream f("felicitare.in.txt");
ofstream g("felicitare.in.txt");
ofstream l("diftong.out.txt");
string a;
char b;
cout<<"Introduceti sirul de caractere, intrerupand-ul folosind '#': ";
cin>>a;
int marime=a.length(),v=0,r=0,i=0,n=0;
for(i=0;i<=marime;i++)
if(a[i]=='#')
marime=i-1;
for(i=0;i<=marime;i++)
cout<<a[i];
for(i=0;i<=marime;i++)
g<<a[i];
for(i=0;i<=marime;i++)
f>>a[i];
for(i=0;i<=marime;i++)
if(a[i-1]=='i'&&a[i]=='u')
v++;
for(i=0;i<=marime;i++)
if(a[i-1]=='o'&&a[i]=='a')
r++;
cout<<"\nNumarul de diftongi 'iu' este: "<<v<<endl;
l<<"Numarul de diftongi 'iu' este: "<<v<<endl;
cout<<"Numarul de diftongi 'oa' este: "<<r<<endl;
l<<"Numarul de diftongi 'oa' este: "<<r<<endl;
}
12. Se citește un șir de la tastatură până la întâlnirea caracterului "$". După citiredatele se scriu în
fișierul mesaj.in. Apoi se preiau din fișierul respectiv și se facecontorizarea fiecărei vocale din
fișier. Rezultatul se va afișa în fișierul vocale.out.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream f("felicitare.in.txt");
ofstream g("felicitare.in.txt");
ofstream l("triftong.out.txt");
string a;
char b;
cout<<"Introduceti sirul de caractere, intrerupand-ul folosind '*': ";
cin>>a;
int marime=a.length(),v=0,r=0,i=0,n=0,p=0,k=0;
for(i=0;i<=marime;i++)
if(a[i]=='*')
marime=i-1;
cout<<"\nExpresia: ";
l<<"Expresia: ";
for(i=0;i<=marime;i++)
cout<<a[i];
for(i=0;i<=marime;i++)
g<<a[i];
for(i=0;i<=marime;i++)
l<<a[i];
for(i=0;i<=marime;i++)
f>>a[i];
for(i=0;i<=marime;i++)
if(a[i-2]=='e'&&a[i-1]=='a'&&a[i]=='u')
v++;
for(i=0;i<=marime;i++)
if(a[i-2]=='i'&&a[i-1]=='o'&&a[i]=='a')
r++;
for(i=0;i<=marime;i++)
if(a[i-2]=='i'&&a[i-1]=='a'&&a[i]=='u')
p++;
for(i=0;i<=marime;i++)
if(a[i-2]=='e'&&a[i-1]=='a'&&a[i]=='i')
k++;
cout<<"\nNumarul de triftongi 'eau' este: "<<v<<endl;
cout<<"Numarul de triftongi 'ioa' este: "<<r<<endl;
cout<<"Numarul de triftongi 'iau' este: "<<p<<endl;
cout<<"Numarul de triftongi 'eai' este: "<<k<<endl;
l<<"\nNumarul de triftongi 'eau' este: "<<v<<endl;
l<<"Numarul de triftongi 'ioa' este: "<<r<<endl;
l<<"Numarul de triftongi 'iau' este: "<<p<<endl;
l<<"Numarul de triftongi 'eai' este: "<<k<<endl;
}
13. Se citește un șir de la tastatură până la întâlnirea caracterului "0". După citire datele se scriu în
fișierul invitatie.in. Apoi se preiau din fișierul respectiv și se face contorizarea fiecărui hiat:
“ue”, ”ai”, ”oe” și ”ae” din fișier. Rezultatul se va afișa în fișierul hiat.out.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream f("invitatie.in.txt");
ofstream g("invitatie.in.txt");
ofstream l("hiat.out.txt");
string a;
char b;
cout<<"Introduceti sirul de caractere, intrerupand-ul folosind '0': ";
cin>>a;
int marime=a.length(),v=0,r=0,i=0,n=0,p=0,k=0;
for(i=0;i<=marime;i++)
if(a[i]=='0')
marime=i-1;
cout<<"\nExpresia: ";
l<<"Expresia: ";
for(i=0;i<=marime;i++)
cout<<a[i];
for(i=0;i<=marime;i++)
g<<a[i];
for(i=0;i<=marime;i++)
l<<a[i];
for(i=0;i<=marime;i++)
f>>a[i];
for(i=0;i<=marime;i++)
if(a[i-1]=='u'&&a[i]=='e')
v++;
for(i=0;i<=marime;i++)
if(a[i-1]=='a'&&a[i]=='i')
r++;
for(i=0;i<=marime;i++)
if(a[i-1]=='o'&&a[i]=='e')
p++;
for(i=0;i<=marime;i++)
if(a[i-1]=='a'&&a[i]=='e')
k++;
cout<<"\nNumarul de hiaturi 'ue' este: "<<v<<endl;
cout<<"Numarul de hiaturi 'ai' este: "<<r<<endl;
cout<<"Numarul de hiaturi 'oe' este: "<<p<<endl;
cout<<"Numarul de hiaturi 'ae' este: "<<k<<endl;
l<<"\nNumarul de hiaturi 'ue' este: "<<v<<endl;
l<<"Numarul de hiaturi 'ai' este: "<<r<<endl;
l<<"Numarul de hiaturi 'oe' este: "<<p<<endl;
l<<"Numarul de hiaturi 'ae' este: "<<k<<endl;
}
14. Se citește de pe prima linia a unui fișier un număr natural n>2, apoi de pe următoarele n linii
se citesc elementele unei matrici. Datele se citesc din fișierul matrice.in. Să se afișeze în fișierul
matrice.out următoarele date: pe prima linie – vafi elementul minim par din matrice,iar pe a
doua linie – va fi elementul maxim impar.
Rezolvare:
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ifstream f("matrice.in.txt");
ofstream g("matrice.out.txt");
int a,i,j,b[10][20],minim=0,maxim=0;
f>>a;
for(i=0;i<5;i++)
for(j=0;j<a;j++)
f>>b[i][j];
cout<<"Matricea: ";
g<<"Matricea: ";
for(i=0;i<5;i++)
for(j=0;j<a;j++)
cout<<"\nM["<<i<<"]["<<j<<"]="<<b[i][j];
for(i=0;i<5;i++)
for(j=0;j<a;j++)
g<<"\nM["<<i<<"]["<<j<<"]="<<b[i][j];
minim=b[0][0];
for(i=0;i<5;i++)
for(j=0;j<a;j++)
if(b[i][j]%2==0)
if(minim>b[i][j]) minim=b[i][j];
maxim=b[0][0];
for(i=0;i<5;i++)
for(j=0;j<a;j++)
if(b[i][j]%2!=0)
if(maxim<b[i][j]) maxim=b[i][j];
cout<<"\nElementul minim par este: "<<minim<<endl;
g<<"\nElementul minim par este: "<<minim<<endl;
cout<<"Elementul maxim impar este: "<<maxim<<endl;
g<<"Elementul maxim impar este: "<<maxim<<endl;
}