Sunteți pe pagina 1din 14

MINISTERUL EDUCAȚIEI, CULTURII ȘI CERCETĂRII AL REPUBLICII MOLDOVA

IP CENTRUL DE EXCELENȚĂ ÎN INFORMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE

DISCIPLINA

PROGRAMARE PROCEDURALĂ

LUCRAREA DE LABORATOR NR.1

Tipul de date fișier. Instrucțiuni de citire și afișare a datelor

Specialitatea: Rețele de calculatoare

Elev: Frasinesco Denis, grupa R-1911

Profesor: Dascal Andrian

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.";
}

Rezultate obținute în urma execuției programului:


3. Să se verifice dacă 3 numere a,b,c - citite din fișierul pitagora.in – sunt pitagorice (pătratul
unuia poate fi scris ca suma pătratelor celorlalte două). Numerele, respectiv rezultatul testului
vor fi scrise în fisierul pitagora.out.
Rezolvare: .
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pitagora.in.txt");
ofstream g("pitagora.out.txt");
int main()
{
int a,b,c;
f>>a;f>>b;f>>c;
cout<<"Numerele introduse sunt: "<<a<<" "<<b<<" "<<c;
g<<"Numerele introduse sunt: "<<a<<" "<<b<<" "<<c;
if(a*a==b*b+c*c || b*b==a*a+c*c || c*c==a*a+b*b)
{
cout<<"\nDa, numerele sunt pitagorice."<<endl;
g<<"\nDa, numerele sunt pitagorice."<<endl;
}
else
{
cout<<"\nNu, numerele nu sunt pitagorice."<<endl;
g<<"\nNu, numerele nu sunt pitagorice."<<endl;
}
}

Rezultate obținute în urma execuției programului:

4. Fișierul segmente.in conține pe câte un rând perechi de numere reprezentând coordonatele


extremităților a două segmente. Să se afișeze lungimea segmentului mai mare și să se scrie în
fișierul segmente.out.
Rezolvare:
#include <iostream>
#include <fstream>
#include <math.h>
using namespace std;
ifstream f("segmente.in.txt");
ofstream g("segmente.out.txt");
int main(){
float x1, x2, y1, y2;
float d;
f>>x1>>y1;
f>>x2>>y2;
d = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
cout<<x1<<" "<<y1<<endl;
g<<x1<<" "<<y1<<endl;
cout<<x2<<" "<<y2<<endl;
g<<x2<<" "<<y2<<endl;
cout<<"\nDistanta dintre cele 2 segmente este de: "<<d<<" cm."<<endl;
g<<"\nDistanta dintre cele 2 segmente este de: "<<d<<" cm."<<endl;
if(y1-x1>y2-x2){
cout<<"\nSegmentul "<<x1<<" "<<y1<<" este mai mare."<<endl;
g<<"\nSegmentul "<<x1<<" "<<y1<<" este mai mare."<<endl;
}
else{
cout<<"\nSegmentul "<<x2<<" "<<y2<<" este mai mare."<<endl;
g<<"\nSegmentul "<<x2<<" "<<y2<<" este mai mare."<<endl;
}
}

Rezultate obținute în urma execuției programului:

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;}
}

Rezultate obținute în urma execuției programului:

6. Dintr-un fișier intrare.in se va citi un număr natural n, de minim 5 cifre. Să se scrie, pe linii
separate, în fișierul iesire.out:
a) câte cifre are numărul citit;
b) suma cifrelor numărului citit;
c) cea mai mare cifră a numărului citit;
d) de câte ori se găsește cifra 5 în numărul citit

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:

7. Să se scrie în fișierul factorial.out pe 2 coloane, primele n cupluri deforma (n n!). numărul n se


va citi din fișierul factorial.in.
Rezolvare:
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("factorial.in.txt");
ofstream g("factorial.out.txt");
int main()
{
int n;
int factorial = 1;
f>>n;cout<<"Numarul: "<<n<<endl;
g<<"Numarul: "<<n<<endl;
for(int i = 1; i <=n; ++i)
{
factorial *= i;
cout<<i<<" = "<< factorial<<endl;;
g<<i<<" = "<< factorial<<endl;;
}
return 0;
}

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;
}

Rezultate obținute în urma execuției programului:

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();
}

Rezultate obținute în urma execuției programului:

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();
}

Rezultate obținute în urma execuției programului:

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;
}

Rezultate obținute în urma execuției programului:

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;
}

Rezultate obținute în urma execuției programului:

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;
}

Rezultate obținute în urma execuției programului:

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;
}

Rezultate obținute în urma execuției programului:

S-ar putea să vă placă și