Orar semigroup #2

Orar semigroup #2

15 decembrie

Se citeşte din fişierul "elevi.in" un număr n şi n linii de forma:
Nume Prenume Clasa Varsta MedieGenerala
a) să se afişeze elevii
b) să se afişeze elevii cu media cea mai mare
c) să se afişeze elevii ordonaţi descrescător după vârstă
d) să se afişeze elevii ordonaţi descrescător după nume şi prenume
e) să se afişeze media generală a fiecărei clase

#include<iostream>
#include<fstream>
using namespace std;
struct elev
{char nume[100],prenume[100],clasa[5];
int varsta;
float mg;};

struct medie
{char cls[100];
float nr;};

int main()

{int i,j=0,n,k,ok,r;
float p;
elev e[100],aux;
medie m[100];

ifstream f("elevi.in");
f>>n;

for(i=0;i<n;i++)
{f>>e[i].nume>>e[i].prenume>>e[i].clasa>>e[i].varsta>>e[i].mg;
cout<<e[i].nume<<" "<<e[i].prenume<<endl;}
p=0;
cout<<endl<<"Media cea mai mare"<<endl;
for(i=0;i<n;i++)
    if(e[i].mg>p)p=e[i].mg;
for(i=0;i<n;i++)
    if(e[i].mg==p)cout<<e[i].nume<<" "<<e[i].nume<<endl;
cout<<endl<<"Descrescator dupa varsta"<<endl;
for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
        if(e[i].varsta<e[j].varsta)
        {aux=e[i];e[i]=e[j];e[j]=aux;}
for(i=0;i<n;i++)
    cout<<e[i].nume<<" "<<e[i].prenume<<endl;
cout<<endl<<"Descrescator dupa nume si prenume"<<endl;
for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
        if(strcmp(e[i].nume,e[j].nume)<0)
            {aux=e[i];e[i]=e[j];e[j]=aux;}
        else if(strcmp(e[i].nume,e[j].nume)==0)
            if(strcmp(e[i].prenume,e[j].prenume)<0)
            {aux=e[i];e[i]=e[j];e[j]=aux;}
for(i=0;i<n;i++)
    cout<<e[i].nume<<" "<<e[i].prenume<<endl;

strcpy(m[0].cls,e[0].clasa);
j=1;
for(i=0;i<n;i++)
{    ok=1;
    for(k=0;k<j;k++)
        if(strcmp(e[i].clasa,m[k].cls)==0)ok=0;
          
    if(ok==1)
    {strcpy(m[j].cls,e[i].clasa);
    j++;}
}
cout<<endl<<endl;
for(i=0;i<j;i++)
    cout<<m[i].cls<<endl;

for(k=0;k<j;k++)
{    m[k].nr=0;r=0;  
    for(i=0;i<n;i++)
        if(strcmp(e[i].clasa,m[k].cls)==0)
            {m[k].nr=m[k].nr+e[i].mg;r++;}
m[k].nr=m[k].nr/r;
}
cout<<endl<<endl;
for(k=0;k<j;k++)
    cout<<m[k].cls<<" "<<m[k].nr<<endl;

}
Fişierul
10
Muresan Mihai XA 16 10
Vanea Sergiu XA 16 6.76
Dodel Aristotel XB 18 9.14
Martinica Cristian XC 15 7.87
Florian Walter XD 56 10
Niculescu Claudiu XA 34 6.18
Jaan Kronkamp XC 42 7.86
Diego Armando XD 45 6.88
Victor Ciutacu XB 40 7.66
Mircea Badea XA 45 9.29

miercuri, 15 decembrie 2010 by DlMuresan
Categories: , , , | Leave a comment

13 decembrie - triunghi echilateral, cadrane

1) Se citesc coordonatele a 3 puncte din plan. Sa se verifice daca punctele sunt varfurile unui triunghi isoscel.

#include<iostream>
using namespace std;
struct punct
{float x,y;};

int main ()
{ float p,q,r;
punct A,B,C;

cin>>A.x>>A.y;
cin>>B.x>>B.y;
cin>>C.x>>C.y;

p=sqrtl((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
q=sqrtl((A.x-C.x)*(A.x-C.x)+(A.y-C.y)*(A.y-C.y));
r=sqrtl((B.x-C.x)*(B.x-C.x)+(B.y-C.y)*(B.y-C.y));

if(p==q || p==r || q==r)
    cout<<"DA";
else cout<<"NU";
}
2. Se citesc coordonatele a n puncte in plan. Sa se afiseze numarul de puncte din fiecare cadran.
#include<iostream>
using namespace std;
struct punct
{float x,y;};

int main ()
{ int n,c1=0,c2=0,c3=0,c4=0,c5=0,i;
punct a[100];
cin>>n;

for(i=0;i<n;i++)
{    cin>>a[i].x>>a[i].y;
if(a[i].x>0 && a[i].y>0)c1++;
if(a[i].x<0 && a[i].y>0)c2++;
if(a[i].x<0 && a[i].y<0)c3++;
if(a[i].x>0 && a[i].y<0)c4++;
if(a[i].x==0 || a[i].y==0)c5++;
cout<<endl;}

cout<<c1<<endl<<c2<<endl<<c3<<endl<<c4<<endl<<"Pe axe: "<<c5;
}

luni, 13 decembrie 2010 by DlMuresan
Categories: , | Leave a comment

10 decembrie - suma fractiilor, distanta dintre puncte, aria dreptunghiului

1) Se citeşte din fişier un număr n şi n linii, reprezentând datele a n elevi(nume, prenume, clasa, varsta, numar de note, note). Să se afişeze numele elevilor şi media lor în ordine descrescătoare e mediei.

#include<iostream>
#include<fstream>
using namespace std;

struct elev
{char nume[20],prenume[20],clasa[5];
unsigned int varsta, note[10],l;
float medie;
};

int main(){
    int n,i,j,s,k;
    ifstream f("date");
    elev e[100],aux;
    f>>n;

    for(i=0;i<n;i++){
        f>>e[i].nume;
        f>>e[i].prenume;
        f>>e[i].clasa;
        f>>e[i].varsta;
        f>>e[i].l;
        for(j=0;j<e[i].l;j++)
            f>>e[i].note[j];
    }
   
    for(i=0;i<n;i++){s=0;
        for(j=0;j<e[i].l;j++)
            s=s+e[i].note[j];
        e[i].medie=(float)s/e[i].l;
    }

for(i=0;i<n;i++)
    for(j=i+1;j<n;j++)
        if(e[i].medie<e[j].medie)
        {aux=e[i];
        e[i]=e[j];
        e[j]=aux;
        }

for(i=0;i<n;i++)
    cout<<e[i].nume<<" "<<e[i].prenume<<"  "<<e[i].medie<<endl;

return 0;
}

fisierul
4
Muresan Mihai XA 16 4 10 10 1 1
Vanea Sergiu XA 15 4 8 4 10 7
Dodel Radu XA 16 4 6 6 1 10
Tothazan Septimiu XA 15 5 5 5 5 5 5
2) Se citesc de la tastatură într-o structură numitorul şi număratorul a două fracţii. Să se compare fracţiile şi să se afişeze suma lor.
#include<iostream>
using namespace std;
struct fractie
{int x,y;};
int main()
{
fractie A,B,C;
cout<<"Numaratorul primei fractii"<<endl;
cin>>A.x;
cout<<"Numitorul primei fractii"<<endl;
cin>>A.y;
cout<<"Numaratorul celei de a doua fractii"<<endl;
cin>>B.x;
cout<<"Numaratorul celei de a doua fractii"<<endl;
cin>>B.y;
cout<<"Care este suma?"<<endl;
if(A.y==B.y)
{    C.x=A.x+B.x;
    C.y=A.y;
    cout<<C.x<<"/"<<C.y<<endl;
   
}
else {
C.x=A.x*B.y+B.x*A.y;
C.y=A.y*B.y;
cout<<C.x<<"/"<<C.y<<endl;
}
A.x=A.x*B.y;
B.x=B.x*A.y;
cout<<"Care este mai mare?"<<endl;
if(A.x>B.x)
    cout<<"Prima("<<A.x/B.y<<"/"<<A.y<<")";
else if(B.x>A.x)
    cout<<"A doua("<<B.x/A.y<<"/"<<B.y<<")";
else cout<<"=";
cout<<endl<<"Bine, Mihai! Ai un plus!";
}
3) Se citesc de la tastatură coordonatele a doua puncte în plan: x1,y1,x2,y2. Să se afişeze distanţa dintre puncte. Să se folosească o structură pentru fiecare punct.
#include<iostream>
#include<math.h>
using namespace std;
struct punct
{int x,y;};
int main ()
{ punct A,B;
cin>>A.x>>A.y;
cin>>B.x>>B.y;
cout<<sqrt((A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
}
4) Să se definească structura dreptunghi cu câmpurile Lungime, lăţime şi Suprafaţă. Să se citească de la tastatură lungimile şi lăţimile a două dreptunghiuri şi să se afişeze care are aria mai mare.
#include<iostream>
#include<math.h>
using namespace std;
struct dreptunghi
{int L,l,S;};
int main ()
{dreptunghi a,b;
cout<<"Primul"<<endl;
cin>>a.L>>a.l;
cout<<"Al doilea"<<endl;
cin>>b.L>>b.l;
a.S=a.L*a.l;
b.S=b.L*b.l;
if(a.S>b.S)
    cout<<"Primul ocupa o arie gigantica fata de primul";
else if (b.S>a.S)
    cout<<"Al doilea ocupa o arie gigantica fata de primul";
else cout<<"=";
}

joi, 9 decembrie 2010 by DlMuresan
Categories: , , , , , , | Leave a comment

9 decembrie - structuri de date

#include<iostream>
using namespace std;
int main()
{
struct elev

{char nume[20],prenume[20];
unsigned int varsta, noteinfo[10];
char clasa[5];
};

elev e1,e2,*e3;// se comporta ca si o variabila
//
e1.varsta=18;
cout<<e1.varsta<<endl;
strcpy(e1.nume,"Marin"); // NU se poate atribuit e1.nume="Marin"
strcpy(e2.nume,"Dodel");
e1=e2; // se copiaza toate campurile din e2 in e1
e3=&e1;
cout<<(*e3).nume<<endl;

elev corig={"Vanea","Sergiu",5,{3,3,4},"XA"};
cout<<corig.noteinfo[0]<<endl; // trebuie parcurs sirul de intreg pentru a se afisa toate notele
//Se citeste dintr-un fisier text un numar n si n linii. Pe fiecare linie se afla campurile de mai sus
//Sa se afiseze toti elevii in ordine descrescatoare dupa media notelor.
}

by DlMuresan
Categories: , , , , , , , , | 2 comments