1)Sa se descompuna un numar in factori primi memorand rezultatul sub forma unui vector de structuri. Fiecare element va cuprinde doua campuri:
a. unul care contine divizorul prim
b. unul care contine puterea la care apare acesta in descompunere
#include<iostream.h>
struct factor
{ long d;
int p; } x[20];
long m;
int n, i;
void main()
{ cout<<"Introduceti numarul: ";
cin>>m;
long a=2;
while( m != 1 )
{ int q=0; //puterea la care apare a in descompunerea numarului m
while( m%a == 0 )
{ m = m/a;
q++; }
if( q != 0 )
{ n++;
x[n].d = a;
x[n].p = q; }
if( a == 2 ) a = 3;
else a+=2; }
cout<<"Descompunerea in factori primi: \n";
for(i=1; i<=n; i++)
cout<<x[i].d<<"^"<<x[i].p<<endl;
2)Se citesc datele despre elevii unei clase, respectiv numele şi data naşterii. Să se ordoneze elevii în ordinea crescătoare după data naşterii şi să se afişeze această situaţie.
# include <iostream.h>
void main()
{struct data
{int zi,luna,an;};
struct elev
{char nume[20];
data datan;};
int n,i,j;
elev e[30],x;
cout<<"Nr. de elevi:";cin>>n;
for(i=1;i<=n;i++)
{cin.get();cout<<"Elevul "<<i<<endl;
cout<<"nume: ";cin.get(e[i].nume,20);cin.get();
cout<<"zi: ";cin>>e[i].datan.zi;
cout<<"luna: ";cin>>e[i].datan.luna;
cout<<"an: ";cin>>e[i].datan.an;}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(e[i].datan.an>e[j].datan.an)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.an==e[j].datan.an)
if(e[i].datan.luna>e[j].datan.luna)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.luna==e[j].datan.luna)
if(e[i].datan.zi>e[j].datan.zi)
{x=e[i];e[i]=e[j];e[j]=x;}
for(i=1;i<=n;i++)
cout<<e[i].nume<<" "<<e[i].datan.an<<" "<<e[i].datan.luna<<" "<<e[i].datan.zi<<endl;}
3)Să se afişeze reprezentarea internă a unei date de tip caracter folosind reprezentarea pe biţi.
#include <iostream.h>
#include <conio.h>
struct biti
{unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
};
union caracter
{biti b;
char c;
};
caracter octet;
void main()
{cout<<"dati un caracter:"; cin>>octet.c;
cout<<"reprezentarea interna:";
cout<<octet.b.b7<<octet.b.b6<<octet.b.b5<<octet.b.b4;
cout<<octet.b.b3<<octet.b.b2<<octet.b.b1<<octet.b.b0;
getch();
}
4)Se dau n elevi. Pentru acestia se citesc: numele şi două note la matematica. Să se calculeze media fiecărui elev. Să se afişeze elevii în ordinea descrescătoare a mediilor, iar pentru medii egale, în ordine alfabetică
#include<iostream.h>
#include<string.h>
struct elev
{char nume[25];
int n1,n2;
float media;
};
elev a[25];
int n;
void citire()
{int i;
for(i=1; i<=n; i++)
{cout<<"numele: "; cin.get();cin.get(a[i].nume,20,'\n');
cout<<"nota1: "; cin>>a[i].n1;
cout<<"nota2: "; cin>>a[i].n2;
a[i].media=(((float)a[i].n1+a[i].n2)/2);
};};
void afisare()
{int i;
for(i=1; i<=n; i++)
cout<<a[i].nume <<" "<<a[i].n1<<" "<<a[i].n2<<" "<<a[i].media<<endl;
};
void ordonare()
{int i,g;
elev aux;
do{ g=1;
for(i=1; i<n; i++)
if((a[i+1].media>a[i].media)||(a[i+1].media==a[i].media && strcmp(a[i+1].nume,a[i].nume)<0))
{aux=a[i+1]; a[i+1]=a[i]; a[i]=aux; g=0; }
} while(!g);
};
void main()
{ cout<<"n=";cin>>n;
citire(); afisare();
ordonare();
cout<<"Elevii in ordinea descrescatoare a mediilor"<<endl;
afisare();
};
5)Se citesc de la tastatură două numere complexe. Să se efectueze adunarea, scaderea, înmulţirea şi împărţirea acestor doua numere complexe.
#include <iostream.h>
#include <conio.h>
struct complex
{float x,y;
};
complex a,b,c;
void afisare(complex e)
{if(e.y>=0)
cout<<e.x<<"+"<<e.y<<"i"<<endl;
else
cout<<e.x<<e.y<<"i"<<endl;
};
void adunare()
{c.x=a.x+b.x;
c.y=a.y+b.y;
};
void scadere()
{c.x=a.x-b.x;
c.y=a.y-b.y;
};
void inmultire()
{c.x=a.x*b.y-a.y*b.x;
c.y=a.x*b.y+a.y*b.x;
};
void impartire()
{c.x=(a.x*b.x+a.y*b.y)/(b.x*b.x+b.y*b.y);
c.y=(a.y*b.x-a.x*b.y)/(b.x*b.x+b.y*b.y);
};
void main()
{cout<<"primul numar:"; cin>>a.x>>a.y;
cout<<"al doilea numar:"; cin>>b.x>>b.y;
cout<<"a="; afisare(a);
cout<<"b="; afisare(b);
adunare();
cout<<"suma=";
afisare(c);
scadere();
cout<<"diferenta=";
afisare(c);
inmultire();
cout<<"produsul=";
afisare(c);
impartire();
cout<<"impartire=";
afisare(c);
};
a. unul care contine divizorul prim
b. unul care contine puterea la care apare acesta in descompunere
#include<iostream.h>
struct factor
{ long d;
int p; } x[20];
long m;
int n, i;
void main()
{ cout<<"Introduceti numarul: ";
cin>>m;
long a=2;
while( m != 1 )
{ int q=0; //puterea la care apare a in descompunerea numarului m
while( m%a == 0 )
{ m = m/a;
q++; }
if( q != 0 )
{ n++;
x[n].d = a;
x[n].p = q; }
if( a == 2 ) a = 3;
else a+=2; }
cout<<"Descompunerea in factori primi: \n";
for(i=1; i<=n; i++)
cout<<x[i].d<<"^"<<x[i].p<<endl;
2)Se citesc datele despre elevii unei clase, respectiv numele şi data naşterii. Să se ordoneze elevii în ordinea crescătoare după data naşterii şi să se afişeze această situaţie.
# include <iostream.h>
void main()
{struct data
{int zi,luna,an;};
struct elev
{char nume[20];
data datan;};
int n,i,j;
elev e[30],x;
cout<<"Nr. de elevi:";cin>>n;
for(i=1;i<=n;i++)
{cin.get();cout<<"Elevul "<<i<<endl;
cout<<"nume: ";cin.get(e[i].nume,20);cin.get();
cout<<"zi: ";cin>>e[i].datan.zi;
cout<<"luna: ";cin>>e[i].datan.luna;
cout<<"an: ";cin>>e[i].datan.an;}
for(i=1;i<=n-1;i++)
for(j=i+1;j<=n;j++)
if(e[i].datan.an>e[j].datan.an)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.an==e[j].datan.an)
if(e[i].datan.luna>e[j].datan.luna)
{x=e[i];e[i]=e[j];e[j]=x;}
else
if(e[i].datan.luna==e[j].datan.luna)
if(e[i].datan.zi>e[j].datan.zi)
{x=e[i];e[i]=e[j];e[j]=x;}
for(i=1;i<=n;i++)
cout<<e[i].nume<<" "<<e[i].datan.an<<" "<<e[i].datan.luna<<" "<<e[i].datan.zi<<endl;}
3)Să se afişeze reprezentarea internă a unei date de tip caracter folosind reprezentarea pe biţi.
#include <iostream.h>
#include <conio.h>
struct biti
{unsigned b0:1;
unsigned b1:1;
unsigned b2:1;
unsigned b3:1;
unsigned b4:1;
unsigned b5:1;
unsigned b6:1;
unsigned b7:1;
};
union caracter
{biti b;
char c;
};
caracter octet;
void main()
{cout<<"dati un caracter:"; cin>>octet.c;
cout<<"reprezentarea interna:";
cout<<octet.b.b7<<octet.b.b6<<octet.b.b5<<octet.b.b4;
cout<<octet.b.b3<<octet.b.b2<<octet.b.b1<<octet.b.b0;
getch();
}
4)Se dau n elevi. Pentru acestia se citesc: numele şi două note la matematica. Să se calculeze media fiecărui elev. Să se afişeze elevii în ordinea descrescătoare a mediilor, iar pentru medii egale, în ordine alfabetică
#include<iostream.h>
#include<string.h>
struct elev
{char nume[25];
int n1,n2;
float media;
};
elev a[25];
int n;
void citire()
{int i;
for(i=1; i<=n; i++)
{cout<<"numele: "; cin.get();cin.get(a[i].nume,20,'\n');
cout<<"nota1: "; cin>>a[i].n1;
cout<<"nota2: "; cin>>a[i].n2;
a[i].media=(((float)a[i].n1+a[i].n2)/2);
};};
void afisare()
{int i;
for(i=1; i<=n; i++)
cout<<a[i].nume <<" "<<a[i].n1<<" "<<a[i].n2<<" "<<a[i].media<<endl;
};
void ordonare()
{int i,g;
elev aux;
do{ g=1;
for(i=1; i<n; i++)
if((a[i+1].media>a[i].media)||(a[i+1].media==a[i].media && strcmp(a[i+1].nume,a[i].nume)<0))
{aux=a[i+1]; a[i+1]=a[i]; a[i]=aux; g=0; }
} while(!g);
};
void main()
{ cout<<"n=";cin>>n;
citire(); afisare();
ordonare();
cout<<"Elevii in ordinea descrescatoare a mediilor"<<endl;
afisare();
};
5)Se citesc de la tastatură două numere complexe. Să se efectueze adunarea, scaderea, înmulţirea şi împărţirea acestor doua numere complexe.
#include <iostream.h>
#include <conio.h>
struct complex
{float x,y;
};
complex a,b,c;
void afisare(complex e)
{if(e.y>=0)
cout<<e.x<<"+"<<e.y<<"i"<<endl;
else
cout<<e.x<<e.y<<"i"<<endl;
};
void adunare()
{c.x=a.x+b.x;
c.y=a.y+b.y;
};
void scadere()
{c.x=a.x-b.x;
c.y=a.y-b.y;
};
void inmultire()
{c.x=a.x*b.y-a.y*b.x;
c.y=a.x*b.y+a.y*b.x;
};
void impartire()
{c.x=(a.x*b.x+a.y*b.y)/(b.x*b.x+b.y*b.y);
c.y=(a.y*b.x-a.x*b.y)/(b.x*b.x+b.y*b.y);
};
void main()
{cout<<"primul numar:"; cin>>a.x>>a.y;
cout<<"al doilea numar:"; cin>>b.x>>b.y;
cout<<"a="; afisare(a);
cout<<"b="; afisare(b);
adunare();
cout<<"suma=";
afisare(c);
scadere();
cout<<"diferenta=";
afisare(c);
inmultire();
cout<<"produsul=";
afisare(c);
impartire();
cout<<"impartire=";
afisare(c);
};