Sunteți pe pagina 1din 14

INREGISTRARI - aplicatii

1. Se citeste un vector de inregistrari reprezentand elevii unei clase. Se va retine: numele,


prenumele, trei note si media. Sa se afiseze elevii clasei sortati descrescator in functie de
media fiecaruia.

#include<iostream.h>
#include<string.h>
#include<conio.h>
void main() {
clrscr();
int n,i,j;
float med[50],x;
struct elev {char np[60];int nota1,nota2;float media;};
elev e[50];char aux[60];
cout<<"Introduceti numarul de elevi ";
cin>>n;
cin.get();
for (i=1;i<=n;i++) {
cout<<"Introduceti numele elevului "<<i<<" ";
cin.get(e[i].np,40);cin.get();
cout<<"Introduceti nota 1 ";
cin>>e[i].nota1;
cout<<"Introduceti nota 2 ";
cin>>e[i].nota2;
e[i].media=(e[i].nota1+e[i].nota2)/2;
cin.get();
}

for (i=1;i<=n-1;i++)
for (j=i+1;j<=n;j++)
if (e[i].media<e[j].media) {
x=e[i].media;e[i].media=e[j].media;
e[j].media=x;
//aux="";

strcpy(aux,e[i].np);
strcpy(e[i].np,e[j].np);
strcpy(e[j].np,aux);}
cout<<"elevii cu mediile cele mai mari sunt:";cout<<endl;
for (i=1;i<=n;i++)
cout<<e[i].np<<endl;
getch();
}//ok
////////////
2.Se citesc n fractii dintr-un fisier text. Sa se afiseze fractiile reductibile ordonate crescator.
Ex: Daca se citesc urmatoarele 4 fractii: 3/6 2/8 3/7 2/20 se vor afisa 2/20 2/8 3/6

#include<fstream.h>
struct fractie {int nu,nr;
};
ifstream f("fractii.in");
void citire(fractie &e)
{f>>e.nr>>e.nu;
}
void afisare(fractie e)
{cout<<e.nr<<"/"<<e.nu<<" ";
}
void ordonare(int n,fractie e[20])
{int i,gata;
fractie aux;
do{gata=1;
for(i=1;i<n;i++)
if (e[i].nr*e[i+1].nu>e[i].nu*e[i+1].nr)
{aux=e[i];
e[i]=e[i+1];
e[i+1]=aux;
gata=0;
}
}while (!gata);
}
int cmmdc(int a,int b)
{while(a!=b)
if (a>b) a=a-b;
else b=b-a;
return a;
}
int main()
{int i,n;
fractie a[20];
f>>n;
for (i=1;i<=n;i++) citire(a[i]);
ordonare(n,a);
for (i=1;i<=n;i++)
if(cmmdc(a[i].nr,a[i].nu)!=1)
afisare (a[i]);
return 0;
}

//////////////////////

3.Despre fiecare dintre cei n elevi dintr-o clasa se citesc urmatoarele date:
- numele (sir de caractere de lungime maxima 20)
- numele (sir de caractere de lungime maxima 20)
- media notelor in oral la informatica
- nota in teza la informatica
Sa se afiseze ordonati alfabetic elevii corigenti la informatica. Pentru fiecare elev corigent se
vor afisa: numele, prenumele si media la informatica.

#include<fstream.h>
#include<string.h>
struct elev {char nume[30];
char pren[30];
float mo;
int teza;
float media;
};
ifstream f("elev.in");
elev c[100];
void citire(elev &e)
{f>>e.nume;
f>>e.pren;
f>>e.mo;
f>>e.teza;
e.media=(e.mo*3+e.teza)/4;
}
void afisare(elev e)
{cout<<e.nume<<" "<<e.pren<<" "<<e.media;
cout<<endl;
}
void ordonare(int n,elev c[100])
{int i,gata;
elev aux;
do {gata=1;
for (i=1;i<n;i++)
if (strcmp(c[i].nume,c[i+1].nume)>0)
{aux=c[i];
c[i]=c[i+1];
c[i+1]=aux;
gata=0;
}
}while (!gata);
}
int main ()
{ int n,i;
f>>n;
for (i=1;i<=n;i++) citire(c[i]);
ordonare (n,c);
for (i=1;i<=n;i++)
if (c[i].media<4.5)
afisare(c[i]);
return 0;
}
//////////////////////

4.Se citesc elevii unei clase, numele prenumele si notele acestora folosind tipul struct. Sa se
calculeze si sa se afiseze media acestora.

#include<iostream.h>
struct elev
{ char nume[20],prenume[20];
struct
{ int zi,luna,an; }data;
float mate,info,engleza,media;
};
elev e[10];
main()
{ unsigned i,n;
cout<<"Cati elevi sunt in clasa ? "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nume: "; cin>>e[i].nume;
cout<<"prenume: "; cin>>e[i].prenume;
cout<<"zi: "; cin>>e[i].data.zi;
cout<<"luna: "; cin>>e[i].data.luna;
cout<<"an: "; cin>>e[i].data.an;
cout<<"nota mate: "; cin>>e[i].mate;
cout<<"nota info: "; cin>>e[i].info;
cout<<"nota engleza: "; cin>>e[i].engleza;
e[i].media=(e[i].mate+e[i].info+e[i].engleza)/3;
}

for(i=1;i<=n;i++)
{ cout<<i<<"."<<e[i].nume<< " "<<e[i].prenume<<endl;
cout<<"Media elevului "<<e[i].nume<<" "<<e[i].prenume<<" este "<<e[i].media<<endl;
cout<<"Data de nastere a elevului "<<e[i].nume<<" "<<e[i].prenume<<" este
"<<e[i].data.zi<<"."<<e[i].data.luna<<"."<<e[i].data.an<<endl;
}}
//////////////

5.In fisierul sarituri.in sunt notate numele, prenumele si lungimea sariturii pentru cei n elevi
dintr-o clasa. Numele si prenumele sunt siruri de caractere, iar lungimea sariturii este numar
real. Sa se construiasca doua fisiere text baieti.out si fete.out in care sa se afiseze baeietii si
respective fetele din clasa, ordonati/ordonate descrescator dupa lungimea sariturii. Se
considera ca toate fetele din clasa au prenumele terminat cu litera a.

#include<fstream.h>
#include<string.h>
struct elev
{ char nume[40],prenume[40];
float lung;};
elev a[100];
ifstream f("sarituri.in");
ofstream g1("baieti.out");
ofstream g2("fete.out");
void citire(elev &e)
{
f>>e.nume>>" ">>e.prenume>>" ">>e.lung;
}
void afisare(elev e)
{
if(e.prenume[strlen(e.prenume)-1]=='a')
g2<<e.nume<<" "<<e.prenume<<" "<<e.lung<<endl;
else
g1<<e.nume<<" "<<e.prenume<<" "<<e.lung<<endl;
}
void ordonare(elev a[100],int n)
{ int i,gata;
elev aux;
do
{ gata=1;
for(i=1;i<n;i++)
if(a[i].lung<a[i+1].lung)
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
gata=0;
}
}
while(gata==0);
}
int main(){
int n,i;
f>>n;
for(i=1;i<=n;i++)
citire(a[i]);
ordonare(a,n);
for(i=1;i<=n;i++)
afisare(a[i]);
f.close();
g2.close();
g1.close();
return 0;}
//////////////////////
6.Se citesc doua numere rationale x si y. Sa se calculeze si sa se afiseze suma lor.

#include<iostream.h>

struct rational
{ int nr,nu;
}x,y,s;

void main()
{ int a,b;
cin>>x.nr>>x.nu;
cin>>y.nr>>y.nu;
s.nr=x.nr*y.nu+x.nu*y.nr;
s.nu=x.nu*y.nu;
a=s.nr;
b=s.nu;
while(a!=b)
if(a>b) a=a-b;
else b=b-a;
s.nr=s.nr/a;
s.nu=s.nu/a;
cout<<s.nr<<"/"<<s.nu;
}
////////////////////

7.Se citesc doua puncte in plan A si B date prin coordonatele lor. Sa se calculeze si sa se
afiseze distanta dintre ele.

#include<iostream.h>
#include<math.h>

struct punct
{ double x,y;
}A,B;

void main()
{ double d;
cin>>A.x>>A.y;
cin>>B.x>>B.y;
d=sqrt((A.x-B.x)*(A.x-B.x) +(A.y-B.y)*(A.y-B.y));
cout<<d;
}
/////////////////

8.Din fisierul text clasa.in se citesc urmatoarele informatii despre fiecare elev din clasa:
numele, prenumele si media.
Sa se afiseze elevii din clasa ordonati descrescator dupa medie.
#include<fstream.h>

ifstream f("clasa.in");

struct elev
{ char nume[20], prenume[20];
double media;
}C[30];

void main()
{ int i,n;
f>>n;
for(i=1;i<=n;i++)
f>>C[i].nume>>C[i].prenume>>C[i].media;
int gata;
do{ gata=1;
for(i=1;i<n;i++)
if(C[i].media<C[i+1].media)
{ elev aux=C[i];
C[i]=C[i+1];
C[i+1]=aux;
gata=0;
}
}while(!gata);
for(i=1;i<=n;i++)
cout<<C[i].nume<<" "<<C[i].prenume<<" "<<C[i].media<<endl;
}
/////////////////////

9.Se citesc urmatoarele informatii despre fiecare elev din clasa: numele, prenumele si
media.
Sa se afiseze elevii din clasa ordonati descrescator dupa medie.

#include<iostream.h>
#include<string.h>
struct elev
{ char nume[20],prenume[20];
struct
{ int zi,luna,an; }data;
float mate,info,media;
};
elev e[10];
main()
{ unsigned i,n,j;
float aux;
char aux1[20];
cout<<"Cati elevi sunt in clasa ? "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nume: "; cin>>e[i].nume;
cout<<"prenume: "; cin>>e[i].prenume;
/* cout<<"zi: "; cin>>e[i].data.zi;
cout<<"luna: "; cin>>e[i].data.luna;
cout<<"an: "; cin>>e[i].data.an; */
cout<<"nota mate: "; cin>>e[i].mate;
cout<<"nota info: "; cin>>e[i].info;
//cout<<"nota engleza: "; cin>>e[i].engleza;
e[i].media=(e[i].mate+e[i].info)/2;
}
/*for(i=1;i<=n;i++)
{ cout<<i<<"."<<e[i].nume<< " "<<e[i].prenume<<endl;
cout<<"Media elevului "<<e[i].nume<<" "<<e[i].prenume<<" este "<<e[i].media<<endl;
cout<<"Data de nastere a elevului "<<e[i].nume<<" "<<e[i].prenume<<" este
"<<e[i].data.zi<<"."<<e[i].data.luna<<"."<<e[i].data.an<<endl<<endl;
} */

/* for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(strcmp(e[i].nume,e[j].nume)>0)
{ strcpy(aux,e[i]);
strcpy(e[i],e[j]);
strcpy(e[j],aux); }
// {// aux=e[i].nume; e[i].nume=e[j].nume; e[j].nume=aux; } */

for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(e[i].media>e[j].media)
{ aux=e[i].media; e[i].media=e[j].media; e[j].media=aux;
strcpy(aux1,e[i].nume); strcpy(e[i].nume,e[j].nume); strcpy(e[j].nume,aux1);
strcpy(aux1,e[i].prenume); strcpy(e[i].prenume,e[j].prenume);
strcpy(e[j].prenume,aux1);}
for(i=1;i<=n;i++)
cout<<i<<"."<<e[i].nume<<" "<<e[i].prenume<<" "<<e[i].media<<endl;
}

/////////////////

10.Sa se defineasca o structura punct pentru memorarea coordonatelor unui punct din plan.
Sa se declare si sa se citeasca 3 puncte A, B, C. Sa se determine daca punctele sunt coliniare.

#include<iostream>
#include<math.h>
using namespace std;

struct punct
{ float x,y;}A,B,C;

float dist(punct A, punct B)


{ return sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y)); }

void citire(punct &A){


cin>>A.x>>A.y;}
int main(){
citire(A);
citire(B);
citire(C);
float a,b,c;
a=dist(B,C);
b=dist(A,C);
c=dist(A,B);
if(a==b+c || c==a+b || b==c+a)
cout<<"coliniare";
else cout<<"nu";
}
///////////////////

11. Definiti un tip inregistrare punct pentru a memora coordonatele unui punct din plan.
Definiti un tip inregistrare triunghi pentru a memora coordonatele celor 3 varfuri ale unui
triunghi.
Cititi 6 valori care reprezinta coordonatele celor 3 varfuri ale unui triunghi. Calculati si afisati
perimetrul triunghiului citit.
Exemplu: 0 0 1 0 0 1
perimetrul este 3.4142

#include<iostream>
using namespace std;

struct punct { float x,y; };


struct triunghi { punct A, B, C; };

void citirep(punct &p)


{ cin>>p.x>>p.y;
}

void citiret(triunghi &t)


{ citirep(t.A);
citirep(t.B);
citirep(t.C);}

float dist(punct a, punct b)


{return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}
float perimetru(triunghi t){
return dist(t.A,t.B)+dist(t.A,t.C)+dist(t.B,t.C); }
int main(){
triunghi t;
citiret(t);
cout<<perimetru(t);
return 0;}
///////////////////////////

12.Se citesc n fractii. Simplificati fractiile reductibile si afisati cel mai mare numar rational
obtinut.
Exemplu:
5
-4 3
-9 1
3 18
5 -2
6 -3
se va afisa 1/6

. #include<fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");

struct rational {int nr, nu;};

int cmmdc(int a, int b)


{ if (a % b == 0) return b;
else return cmmdc(b, a % b);}

void simplific(rational &r)


{ int c = cmmdc(abs(r.nr), abs(r.nu));
r.nu = r.nu / c;
r.nr = r.nr / c;
if(r.nr*r.nu<0)
{r.nu=abs(r.nu);
r.nr=-abs(r.nr); }
else
{r.nu=abs(r.nu);
r.nr=abs(r.nr); }}

void citire(rational &r){


fin>>r.nr>>r.nu;
simplific(r);}
void afisare(rational r)
{ fout<<r.nr<<"/"<<r.nu<<" ";}
int maimare (rational x, rational y){
int a = x.nr * y.nu;
int b = x.nu * y.nr;
return a > b;
}
int main(){int n,i;
rational a,max;
fin>>n;
citire(a);
max=a;
for(i=2;i<=n;i++)
{
citire(a);
if(maimare(a,max)) max=a;
}
afisare(max);
fin.close();
fout.close();
return 0;
}
//////////////

13. Se citeste un vector de inregistrari care simuleaza elevii unei clase. Se va folosi pentru
retinerea datei nasterii elevului tipul innregistrare imbricata. Sa se afiseze elevii sortati
crescator dupa nume.

#include<iostream.h>
#include<string.h>
struct elev
{ char nume[20],prenume[20];
struct
{ int zi,luna,an; }data;
float mate,info,engleza,media;
};
elev e[10];
main()
{ unsigned i,n,j;
char aux[20];
cout<<"Cati elevi sunt in clasa ? "; cin>>n;
for(i=1;i<=n;i++)
{ cout<<"nume: "; cin>>e[i].nume;
cout<<"prenume: "; cin>>e[i].prenume;
cout<<"zi: "; cin>>e[i].data.zi;
cout<<"luna: "; cin>>e[i].data.luna;
cout<<"an: "; cin>>e[i].data.an;
cout<<"nota mate: "; cin>>e[i].mate;
cout<<"nota info: "; cin>>e[i].info;
cout<<"nota engleza: "; cin>>e[i].engleza;
e[i].media=(e[i].mate+e[i].info+e[i].engleza)/3;
}
for(i=1;i<=n;i++)
{ cout<<i<<"."<<e[i].nume<< " "<<e[i].prenume<<endl;
cout<<"Media elevului "<<e[i].nume<<" "<<e[i].prenume<<" este "<<e[i].media<<endl;
cout<<"Data de nastere a elevului "<<e[i].nume<<" "<<e[i].prenume<<" este
"<<e[i].data.zi<<"."<<e[i].data.luna<<"."<<e[i].data.an<<endl<<endl;
}
for(i=1;i<n;i++)
for(j=i+1;i<=n;j++)
if(e[i].nume>e[j].nume)
{ strcpy(aux,e[i].nume);
strcpy(e[i].nume,e[j].nume);
strcpy(e[j].nume,aux); }
// {// aux=e[i].nume; e[i].nume=e[j].nume; e[j].nume=aux; }
for(i=1;i<=n;i++)
cout<<i<<e[i].nume<<" "<<e[i].prenume<<endl;
}
///////////////////
14. Se considera un sir de fractii, afisati nr de fractii
//echivalente cu ultima cifra citita
#include<iostream.h>
struct fractie{ int a,b;} v[10];

int cmmdc(int x,int y)


{ while(x!=y)
if(x>y) x=x-y;
else y=y-x;
return x;}

void main()
{ int c,n,i,nr=0;
cin>>n;
for(i=0;i<n;i++)cin>>v[i].a>>v[i].b;
c=cmmdc(v[n-1].a,v[n-1].b);
v[n-1].a=v[n-1].a/c;
v[n-1].b=v[n-1].b/c;
for(i=0;i<n-1;i++)
{ c=cmmdc(v[i].a,v[i].b);
v[i].a=v[i].a/c;
v[i].b=v[i].b/c;
if(v[i].a==v[n-1].a && v[i].b==v[n-1].b) nr++;
}
cout<<nr;}
////////////////////
15.Se citeste doua fractii, folosind tipul struct. Sa se calculeze suma si produsul
acestora, dupa ce au fost simplificate
#include <iostream.h>
#include <conio.h>

struct fractie {int x,y;};


int cmmdc(int a,int b){
while(a!=b)if(a>b)a=a-b;else b=b-a;
return a;}
fractie suma(fractie f1,fractie f2){
fractie s;int a;
s.x=f1.x*f2.y+f1.y*f2.x;s.y=f1.y*f2.y;a=cmmdc(s.x,s.y);s.x=s.x/a;
s.y=s.y/a;
return s;}
fractie produs(fractie f1,fractie f2){fractie p ;int a;
p.x=f1.x*f2.x;p.y=f1.y*f2.y;
a=cmmdc(p.x,p.y);
p.x=p.x/a;p.y=p.y/a;
return p;}
void main(){clrscr();
fractie f1,f2,s,p;
cout<<"prima fractie:0numaratorul:";cin>>f1.x;
cout<<"prima fractienumitorul:";cin>>f1.y;
cout<<"a doua fractie:numaratorul:";cin>>f2.x;
cout<<"a doua fractie:numitor:";cin>>f2.y;
s=suma(f1,f2);
cout<<"suma este:"<<s.x<<"/"<<s.y<<endl;
p=produs(f1,f2);cout<<"produsul este:"<<p.x<<"/"<<p.y<<endl;}//ok
///////////////////////

16.Se citesc numere complexe folosind tipul struct. Sa se afiseze aceste numere
ordonate cescator in finctie de modulul acestora
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
#include<conio.h>

struct complex
{ int x,y;
float m;
} v[10];

void main()
{ int n,i,a,b,j;
complex aux;
clrscr();
cin>>n;
for(i=1;i<=n;i++)
{ cin>>v[i].x>>v[i].y;
v[i].m=sqrt(pow(v[i].x,2)+pow(v[i],2)); }
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[i].m>v[j].m)
{ aux=v[i];
v[i]=v[j];
v[j]=aux;
}
cin>>a>>b;
for(i=1;i<=n;i++)
if(v[i].m || v[i].m>b)
{cout<<v[i].x" " <<v[i].y<<" ";
cout<<setprecision(3)<<v[i].m<<endl; }
getch(); }

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