Professional Documents
Culture Documents
rezolvate
1) Se va concepe o matrice bidimensional, avnd componente ntregi, prin iniializare n
momentul declarrii
2) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia
3) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia, iar apoi va calcula suma elementelor matricei
4) S se realizeze un program care ncarc numerele de la 1 la 12 ntr-o matrice
bidimensional i le afieaz rnd cu rnd, dup care realizeaz interschimbari ntre liniile
acesteia.
De asemenea se vor obine primul, respectiv ultimul element dintr-o matrice tablou.
5) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice
bidimensionale
6) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice
bidimensionale, astfel nct funciile vor transmite rezultatele, nu doar le vor afia n interiorul
corpului acestora
7) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia, iar apoi se va face o functie proprie care va returna suma elementelor matricei
de pe diagonala secundara
8) Suma a doua matrice
9) Inmultirea a doua matrice patratice
10) Sa se scrie un program care determina elementele de maxim i minim din ntreaga matrice
ptratic
Rezolvari
1) Se va concepe o matrice bidimensional, avnd componente ntregi, prin iniializare n
momentul declarrii.
#include<stdio.h>
void main()
{
int a[][3]={
coloane
{2,-9,0},
{7,11,-8},
{2,2,-20},
{12,7,90}
};
//operatia de afisare a matricei declarata avand 4 linii si 3
for(int i=0; i<4; i++)
{
for(int j=0; j<3; j++)
printf("%5d", a[i][j]);
printf("\n");
}
getchar();
int k;
scanf("%d", k);
2) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia.
#include<stdio.h>
void main()
{
int a[10][10]; /* matricea bidimensionala avand un nr. maximi
de 10 linii si 10 coloane ce vor putea fi memorate
*/
int m,n;
/* numarul real (la citire) de randuri, respectiv,
de
coloane, ale matricei */
int i,j;
//introducerea dimensiunilor matricei
printf("Introduceti nr de linii: ");
scanf("%d", &m);
printf("Introduceti nr de coloane: ");
scanf("%d", &n);
//introducerea elementelor matricii
printf("Introduceti elementele matricei: \n");
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("\tElem [%d,%d]= ", i+1, j+1);
scanf("%d", &a[i][j]);
}
//afisarea elementelor matricei
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
getchar();
int k;
scanf("%d", k);
}
3) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia, iar apoi va calcula suma elementelor matricei.
#include<stdio.h>
void main()
{
int a[10][10]; /* matricea bidimensionala avand un nr. maximi
de 10 linii si 10 coloane ce vor putea fi memorate
*/
int m,n;
/* numarul real (la citire) de randuri, respectiv,
de
coloane, ale matricei */
int i,j;
//introducerea dimensiunilor matricei
printf("Introduceti nr de linii: ");
scanf("%d", &m);
printf("Introduceti nr de coloane: ");
scanf("%d", &n);
//introducerea elementelor matricii
printf("Introduceti elementele matricei: \n");
for(i=0; i<m; i++)
for(j=0; j<n; j++)
{
printf("\tElem [%d,%d]= ", i+1, j+1);
scanf("%d", &a[i][j]);
}
//afisarea elementelor matricei
for(i=0; i<m; i++)
{
for(j=0; j<n; j++)
printf("%5d", a[i][j]);
printf("\n");
}
//calcularea sumei elementelor matricei
int s=0;
for(i=0; i<m; i++)
for(j=0; j<n; j++)
s=s+a[i][j];
printf("\nSuma elem. este: %d", s);
getchar();
int k;
scanf("%d", k);
}
for(j=0;j<col;j++)
{
a[i][j]=k;
k++;
}
}
//o alta functie de atribuire a valorilor de la 1 la 12 intr-o matrice
bidimensionala
void atribuire2(matrice a)
{
int i,j;
for(i=0;i<lin;i++)
for(j=0;j<col;j++)
a[i][j]=(i*col)+j+1;
}
//afisarea primului, respectiv, al ultimului element dintr-o matrice
void afis_prm_ult(matrice a)
{
printf("\nPrimul element este: %d",a[0][0]);
printf("\nUltimul element este: %d\n",a[lin-1][col-1]);
}
//afisarea unei matrice bidimensionale sub forma unui tablou
void afisare(matrice a, char c)
{
int i,j;
printf("\n");
printf("\nMatricea %c este:\n",c);
for(i=0;i<lin;i++)
{
for(j=0;j<col;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
//interschimbarea a doua linii citire intr-o matrice
void interschimbare(matrice a)
{
int x,y,j,aux;
printf("\nDati linia care se doreste a se interschimba : ");
scanf("%d",&x);
printf("Dati linia cu care se doreste interschimbarea : ");
scanf("%d",&y);
/* Interschimbarea ntre continutul liniei x cu y se face element
cu
}
//functia principala in rulare
void main()
{
matrice a,b;
atribuire1(a);
atribuire2(b);
afis_prm_ult(a);
afisare(a,'A');
afisare(b,'B');
interschimbare(a);
afisare(a,'A');
getchar();
int k;
scanf("%d", k);
5) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice
bidimensionale.
#include<stdio.h>
//definirea unui tip matrice cu un numar specificat de linii si coloane
typedef int matrice[10][10];
void citire(matrice a, int *n, char c)
{
int i,j;
printf("Introduceti datele matricei %c:\n",c);
//introducerea dimensiunii matricei
printf("\tnumarul de linii (coloane): ");
scanf("%d",n);
//introducerea elementelor matricei
printf("\telementele matricei:\n");
for(i=0;i<*n;i++)
for(j=0;j<*n;j++)
{
printf("\t\t%c[%d][%d]= ",c,i+1,j+1);
scanf("%d",&a[i][j]);
}
}
void afisare(matrice a, int n, char c)
{
int i,j;
printf("Matricea %c este:\n",c);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
//suma tuturor elementelor matricei
void suma1(matrice a, int n)
{
int s=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=a[i][j];
printf("\nSuma tuturor elementelor este: %d", s);
}
//suma elementelor de pe diagonala principala
void suma2(matrice a, int n)
{
int s=0,i;
for(i=0;i<n;i++)
s+=a[i][i];
matrice a,b,c;
int n,l;
citire(a,&n,'A');
afisare(a,n,'A');
suma1(a,n);
suma2(a,n);
suma3(a,n);
suma4(a,n);
suma5(a,n);
suma6(a,n);
suma7(a,n);
printf("\n\nDati linia dorita a se calcula suma: ");
scanf("%d",&l);
suma8(a,n,l);
getchar();
int k;
scanf("%d", k);
}
6) Se va scrie un program pentru realizarea principalelor sumri ntre elementele unei matrice
bidimensionale, astfel nct funciile vor transmite rezultatele, nu doar le vor afia n interiorul
corpului acestora.
#include<stdio.h>
//definirea unui tip matrice cu un numar specificat de linii si coloane
typedef int matrice[10][10];
void citire(matrice a, int *n, char c)
{
int i,j;
printf("Introduceti datele matricei %c:\n",c);
//introducerea dimensiunii matricei
printf("\tnumarul de linii (coloane): ");
scanf("%d",n);
//introducerea elementelor matricei
printf("\telementele matricei:\n");
for(i=0;i<*n;i++)
for(j=0;j<*n;j++)
{
printf("\t\t%c[%d][%d]= ",c,i+1,j+1);
scanf("%d",&a[i][j]);
}
}
void afisare(matrice a, int n, char c)
{
int i,j;
printf("Matricea %c este:\n",c);
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf("%5d",a[i][j]);
printf("\n");
}
}
//suma tuturor elementelor matricei
int suma1(matrice a, int n)
{
int s=0,i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s+=a[i][j];
return s;
}
//suma elementelor de pe diagonala principala
int suma2(matrice a, int n)
{
int s=0,i;
for(i=0;i<n;i++)
s+=a[i][i];
return s;
}
//suma elementelor de deasupra diagonalei principale
int suma3(matrice a,int n)
{
int s=0,i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
s+=a[i][j];
return s;
}
//suma elementelor de sub diagonala principala
int suma4(matrice a,int n)
{
int s=0,i,j;
for(i=1;i<n;i++)
for(j=0;j<=i-1;j++)
s+=a[i][j];
return s;
}
//suma elementelor de pe diagonala secundara
int suma5(matrice a,int n)
{
int s=0,i;
for(i=n-1;i>=0;i--)
s+=a[i][n-i-1];
return s;
}
//suma elementelor de deasupra diagonalei secundare
int suma6(matrice a,int n)
{
int s=0,i,j;
for(i=0;i<n-1;i++)
for(j=0;j<=n-2-i;j++)
s+=a[i][j];
return s;
}
//suma elemntelor de sub diagonala secundara
int suma7(matrice a,int n)
{
int s=0,i,j;
for(i=n-1;i>=1;i--)
for(j=n-i;j<n;j++)
s+=a[i][j];
return s;
}
//suma elementelor de pe o anumita linie
int suma8(matrice a,int n,int l)
{
int s=0,j;
for(j=0;j<n;j++)
s+=a[l-1][j];
return s;
}
void main()
{
matrice a,b,c;
int n,l;
citire(a,&n,'A');
afisare(a,n,'A');
printf("\nSuma tuturor elementelor este: %d", suma1(a,n));
printf("\nSuma elementelor de pe diagonala principala este: %d",
suma2(a,n));
printf("\nSuma elementelor de deasupra diagonalei principale e: %d",
suma3(a,n));
printf("\nSuma elementelor de sub diagonala principala este: %d",
suma4(a,n));
printf("\nSuma elementelor de pe diagonala secundara este: %d",
suma5(a,n));
printf("\nSuma elementelor de deasupra diagonalei secundare este: %d",
suma6(a,n));
printf("\nSuma elemntelor de sub diagonala secundara este: %d",
suma7(a,n));
printf("\n\nDati linia dorita a se calcula suma: ");
scanf("%d",&l);
printf("\nSuma elementelor de pe o anumita linie este: %d", suma8(a,n,l));
getchar();
int k;
scanf("%d", k);
}
7) Se va scrie o rutin care va citi o matrice bidimensional avnd componente ntregi, dup
care o va afia, iar apoi se va face o functie proprie care va returna suma elementelor matricei
de pe diagonala secundara.
#include<stdio.h>
//definirea unui tip matrice cu un numar specificat de linii si coloane
typedef int matrice[10][10];
//suma elementelor de pe diagonala secundara
int suma(matrice a, int n)
{
int s=0,i;
for(i=n-1;i>=0;i--)
s+=a[i][n-i-1];
return s;
}
void main()
{
matrice a;
/* matricea bidimensionala avand un nr. maximi de 10
linii
si 10 coloane ce vor putea fi
memorate */
int n;
/* numarul real (la citire) de randuri/coloane ale
matricei */
int i,j;
//introducerea dimensiunilor matricei
printf("Introduceti nr de linii: ");
scanf("%d", &n);
#include<stdio.h>
//definirea unui tip matrice cu un numar specificat de linii si coloane
typedef int matrice[10][10];
void citire(matrice x, int n) // n - nr. de linii/coloane
{
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
{
printf("\tElem [%d,%d]= ", i+1, j+1);
scanf("%d", &x[i][j]);
}
}
//afisarea unei matrice bidimesionala
void afisare(matrice x, int n, char* s)
{
printf("\nMatricea %s este:\n",s);
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
printf("\t%d",x[i][j]);
printf("\n");
}
}
//suma a doua matrice
void suma(matrice x, matrice y, matrice z, int n) /* in acest caz putem
returna matricea prin tipul rezultat,
pentru matricea este
un pointer (o adresa) */
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
z[i][j] = x[i][j] + y[i][j];
}
void main()
{
matrice A,B,C;
int n;
printf("Introduceti dimensiunile matricelor.\n");
printf("\tnr. de linii/coloane: ");
scanf("%d",&n);
printf("Introducem elementele matricei A.\n");
citire(A,n);
afisare(A,n,"A");
printf("Introducem elementele matricei B.\n");
citire(B,n);
afisare(B,n,"B");
suma(A,B,C,n);
afisare(C,n,"A+B");
getchar();
int k;
scanf("%d", &k);
}
z[i][j]=0;
for(int k=0;k<n;k++)
z[i][j]+=x[i][k]*y[k][j];
}
}
void main()
{
matrice A,B,C;
int n;
printf("Introduceti dimensiunile matricelor.\n");
printf("\tnr. de linii/coloane: ");
scanf("%d",&n);
printf("Introducem elementele matricei A.\n");
citire(A,n);
afisare(A,n,"A");
printf("Introducem elementele matricei B.\n");
citire(B,n);
afisare(B,n,"B");
inmultire(A,B,C,n);
afisare(C,n,"A*B");
getchar();
int k;
scanf("%d", &k);
}
10) Sa se scrie un program care determina elementele de maxim i minim din ntreaga matrice
ptratic.
#include<stdio.h>
void main()
{
int a[10][10]; /* matricea bidimensionala avand un nr. maximi de 10
linii
si 10 coloane ce vor putea fi
memorate */
int n; /* numarul real (la citire) de randuri/coloane, ale matricei
*/
int i,j;
//introducerea dimensiunilor matricei
printf("Introduceti nr de linii/col: ");
scanf("%d", &n);
//introducerea elementelor matricii
printf("Introduceti elementele matricei: \n");
for(i=0; i<n; i++)
for(j=0; j<n; j++)
{
printf("\tElem [%d,%d]= ", i+1, j+1);
scanf("%d", &a[i][j]);
}
//afisarea elementelor matricei
lin=a;
col=b;
val=c;
};
//lista in care avem memorata o matrice rara
template <class T>
class matrice
{
int nr_lin;
int nr_col;
int nr_elem;
element<T> data[10];
public:
matrice();
void atribuire(matrice<T> ob);
matrice<T> creare();
//creare matrice rara
void print();
//afisarea unei matrici
rare
void adaugaElement(element<T> e);
//adauga un element
void stergere(element<T> e);
//sterge un element
void modificaElement(element<T> e); //modifica un element
void adunare(matrice<T> ob1, matrice<T> ob2); //adunarea a doua
matrici rare
//void inmultire(matrice<T> ob1, matrice<T> ob2); //inmultirea a
doua matrici rare
//void inmulConstanta(int cst);
//inmultirea unei
matrici rare cu o constanta
matrice<T> transpusa(matrice<T> a);
//calcul
transpusa
};
ob2.print();
cout <<"Creare matrice 2 " <<endl;
ob2.creare();
cout <<"Afisare matrice 2 " <<endl;
ob2.print();
cout <<"ADUNAREA A 2 MATRICI"
ob3.adunare(ob1, ob2);
ob3.print();
<<endl;
int g;
cin >>g;
F(x)=
F(F(x+2)), x<12
0, n=0
1, n=1
Un-1+Un-2, altfel
0, n=0
1, n=1
Un-1+Un-2, altfel
Rezolvari
1) S se calculeze n! in varianta iterativa.
#include<stdio.h>
long int factorial (int n)
{
long int f=1;
for (int i=1; i<=n;i++)
f=f*i;
return f;
}
void main()
{
int n;
printf("Introduceti n= ");
scanf("%d", &n);
if(!n)
else
printf("0!=1\n");
printf("%d!=%ld\n",n,factorial(n));
getchar();
int var;
scanf("%d", var);
// factorial(3)=3*factorial(2)=3*2*factorial(1)=3*2*1
#include<stdio.h>
long int factorial (int n)
{
if (n==1) return 1;
else return n*factorial(n-1);
}
void main()
{
int n;
printf("Introduceti n= ");
scanf("%d", &n);
if(!n)
else
printf("0!=1\n");
printf("%d!=%ld\n",n,factorial(n));
getchar();
int var;
scanf("%d", var);
}
int n;
printf("Introduceti n: ");
scanf("%d", &n);
printf("Suma elementelor este %d\n",suma(n));
getchar();
int var;
scanf("%d", var);
}
4) Scrieti o functie proprie care realizeaza calculul recursiv al sumei elementelor unui vector,
de n<=10, de nr reale. Scrieti functia main care citeste datele de la tastatura, calculeaza suma,
utilizand functia recursiva anterior definita si afiseaza valoarea obtinuta.
#include <stdio.h>
#include <conio.h>
int a[10], n;
int Suma (int n, int a[10])
{
if(n==0) return 0;
else return(a[n]+Suma(n-1,a));
}
void main()
{
// Citire date de intrare
printf("Introduceti nr de elemente: ");
scanf("%d", &n);
for (int i=1; i<=n; i++)
{
printf("Elementul [%d] = ", i);
scanf("%d", &a[i]);
}
// Afisarea rezultatelor
printf("Suma = %d", Suma(n,a));
getch();
}
getch();
getch();
{
if (n==2) return cmmdc_2(x[0],x[1]);
else
return cmmdc_2(cmmdc_n(x,n-1),x[n-1]);
}
void main()
{
unsigned int x[20];
int n;
printf("Introduceti n: ");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("elementul %d= ",i+1);
scanf("%u",&x[i]);
}
if (n==1)
printf("\nCmmdc-ul numerelor: %u",x[0]);
else
printf("\nCmmdc-ul numerelor: %u",cmmdc_n(x,n));
getch();
#include<stdio.h>
#include<conio.h>
/* un tip propriu definit pentru memorarea sirurilor de elemente intregi,
cu o
dimensiune maxima de 20 de componente */
typedef int vector[20];
//functia de citire
void citire(vector x,int n) //n este dimensiunea reala a sirului
{
//citim ultimul element din sir
printf("\telementul %d: ",n);
scanf("%d",&x[n-1]);
if(n>=2)
citire(x,n-1); //apelul recursiv al functiei
}
//functia de afisare
void afisare(vector x,int n) //n este dimensiunea reala (nr. de elem. din
sir)
{
//afisam ultimul element
printf("%d ",x[n-1]);
if(n>=2)
afisare(x,n-1); //apelul recursiv al functiei
}
//adunarea componentelor unui sir
int suma(vector x,int n) //n in acest caz il consideram fiind indice
element dinsir
{
if(n==-1) return 0; //situatia in care nu mai sunt elemente in sir, pozitia
n=-1 nefiind in sir
else return x[n]+suma(x,n-1);
}
//produsul componentelor
int produs(vector x,int n)
{
if(n==-1) return 1;
else return x[n]*produs(x,n-1);
}
//numarul de componente negative
int numar_negative(vector x,int n)
{
//ne pozitionam pe primul element din sir si verificam dc acesta
este negativ
if(n==0) return (x[n]<0); //expresia conditionata va returna 1 in caz de
adv. si 0 in caz de fals
else return (x[n]<0)+numar_negative(x,n-1);
}
//produsul componentelor pozitive
int produs_pozitive(vector x,int n)
{
if(n==0) return (x[n]>0?x[n]:1); /* am folosit operatorul de
conditionare,
care, daca expresia evaluata ca fi adv. se va lua in calcul x[n],
altfel,
valoarea 1 */
else return (x[n]>0?x[n]:1)*produs_pozitive(x,n-1);
}
//media aritmetica a componentelor sirului
float media(vector x, int m, int n) //cu m am notat indicele elementelor,
iar cu n dimensiunea reala a sirului
{
return (float)x[m]/n + ((m!=0)?media(x,m-1,n):0);
/* - am folosit expresia (float) pentru o conversie explicita a
rezultatului
spre un tip real
- prin x[m]/n intelegem un element (in prima faza, acesta fiind
ultimul
element din sir) impartit la numarul total de componente */
}
//functia principala in rulare
void main()
{
vector x; //sirul de elemente
int n; //dimensiunea sa (numarul de componente citite)
//realizarea operatiei de citire a sirului
printf("Dati numarul de elemente: ");
scanf("%d",&n);
printf("Introduceti elementele sirului:\n");
citire(x,n);
//realizarea operatiei de afisare a sirului
printf("Sirul de elemente este: ");
afisare(x,n);
//sumarea elementelor
printf("\nSuma elementelor: %d",suma(x,n-1)); /* am apelat cu n-1,
ptr ca am
spus mai sus ca acest
parametru reprezinta
indicele ultimului element
din sir */
//produsul elementelor
printf("\nProdusul elementelor: %d",produs(x,n-1));
//numarul elementelor negative din sir
printf("\nNumarul elementelor negative: %d",numar_negative(x,n-1));
//produsul componentelor pozitive
printf("\nProdusul elementelor pozitive: %d",produs_pozitive(x,n1));
//media componentelor din sir
printf("\nMedia componentelor din sir: %.2f",media(x,n-1,n)); /*
primul parametru - sirul,
al doilea parametru - indicele
ultimului element din sir, al treilea
parametru - dimensiunea reala a
sirului (numarul de elemente citite) */
getch();
}
9) Sa se scrie o functie recursiva pentru determinarea sumei cifrelor unui numar natural.
Indicatie: Se izoleaza ultima cifra, iar lui n i se atribuie ctul ntreg dintre vechea valoare i
10.
#include<stdio.h>
#include<conio.h>
int suma(int n)
{
if(!n) return 0;
else return n%10+suma(n/10);
}
void main()
{
int n;
printf("Introduceti numarul: ");
scanf("%d", &n);
//!n=daca nu exista n
10) Sa se scrie o functie recursiva pentru a transforma un numar natural n, din baza 10 n baza
k (1<k<=10). Indicatie: Numarul se mparte la k, se retine restul, ctul se mparte la k, se
retine restul... pna cnd ctul este mai mic dect mpartitorul. Rezultatul se obtine prin
scrierea n ordine inversa a resturilor obtinute. Tiparirea restului se face dupa autoapel.
#include<stdio.h>
#include<conio.h>
void transform(int n,int b)
{
int rest=n%b;
if (n>=b) transform(n/b,b);
printf("%d",rest);
}
void main()
{
int n,b;
printf("n="); scanf("%d",&n);
printf("baza="); scanf("%d",&b);
transform(n,b);
getch();
}
F(x)=
F(F(x+2)), x<12
#include<stdio.h>
#include<conio.h>
int F(int x)
{
if (x>=12) return x-1;
return F(F(x+2));
}
void main()
{
int x;
printf("x="); scanf("%d",&x);
printf("Valoarea functiei este: %d",F(x));
getch();
}
0, n=0
1, n=1
Un-1+Un-2, altfel
void main()
{
int n,U0=0,U1=1,U2;
printf("n="); scanf("%d",&n);
if(!n) printf("%d",U0);
else
if (n==1) printf("%d",U1);
else
{
for (int i=2;i<=n;i++)
{
U2=U0+U1;
U0=U1;
U1=U2;
}
printf("%d",U2);
}
/*
ptr. n=3
i=2: U2=U0+U1
U0=U1
U1=U2
i=3: U2=U1+U2
*/
getch();
}
0, n=0
1, n=1
Un-1+Un-2, altfel
astfel de numere
5) S se scrie un program care sa administreze un parc de automobile. Informaiile relative la
un automobil sunt: numrul de locuri, puterea (n cai putere), marca, culoarea, anul fabricaiei
mainii
a) se vor citi informatiile relative la cele n automobile din parcul de autoturisme. Se vor afisa
doar acele automobilele care au 5 locuri;
b) sa se ordoneze crescator dupa putere automobilele se vor afisa datele ordonate;
c) sa se scrie o functie care afiseaza toate automobilele fabricate ntr-un anumit an dat ca
parametru.
Rezolvari
1) Declararea unei nregistrri i folosirea acesteia.
#include<stdio.h>
/* structurile declarate, in principiu vor fi declarate in afara
oricarei functii, pentru a putea fi utilizata in intreg programul */
struct angajat
{
int cod_angajat;
char* nume;
char* prenume;
struct
{
int an;
char luna;
char zi;
}data_angajarii;
float sal_incadrare;
};
void main()
{
angajat x;
x.cod_angajat=1021;
x.nume="Popescu";
x.prenume="Ioan";
x.data_angajarii.an=2002;
x.data_angajarii.luna=9;
x.data_angajarii.zi=10;
x.sal_incadrare=1250;
printf("angajat: %s %s\n",x.nume,x.prenume);
printf("data angajarii: %d/%d/%d\n",x.data_angajarii.zi,
x.data_angajarii.luna, x.data_angajarii.an);
printf("salariu incadrare: %.2f",x.sal_incadrare);
getchar();
int k;
scanf("%d", &k);
}
#include<stdio.h>
struct exemplu
{
long int a;
char* b;
char* c;
};
void main()
{
exemplu x;
printf("Spatiul ocupat de o variabila la structura:
%d\n",sizeof(x));
x.a=10;
x.b="ABCD";
x.c="EFG";
printf("%ld\n",x.a);
printf("%s\n",x.b);
printf("%s\n",x.c);
getchar();
int k;
scanf("%d", &k);
}
getchar();
int k;
scanf("%d", &k);
b=b/d;
}
}
}rational;
void citire(rational* x, char c)
{
printf("Dati numarul rational %c:\n",c);
printf("\tnumaratorul: ");
scanf("%d",&x->a);
int n;
do
{
printf("\tnumitorul: ");
scanf("%d",&n);
}
while(n==0);
x->b=n;
x->ireductibil();
}
void afisare(rational x, char c[])
{
printf("Numarul rational %s: %d/%d\n",c,x.a,x.b);
}
rational adunare(rational x, rational y)
{
rational r;
r.a=x.a*y.b+x.b*y.a;
r.b=x.b*y.b;
r.ireductibil();
return r;
}
rational inmultire(rational x, rational y)
{
rational r;
r.a=x.a*y.a;
r.b=x.b*y.b;
r.ireductibil();
return r;
}
void main()
{
rational x,y;
citire(&x,'x');
citire(&y,'y');
afisare(x,"x");
afisare(y,"y");
rational s;
s=adunare(x,y);
afisare(s,"x+y");
rational p;
p=inmultire(x,y);
afisare(p,"x*y");
getchar();
int k;
scanf("%d", &k);
}
printf("\tculoarea:
printf("\tan fabr.:
printf("\tnr locuri:
printf("\tputerea:
%s\n",a[i].cul);
%d\n",a[i].an);
%d\n",a[i].date.nl);
%d\n\n",a[i].date.put);
}
}
void an(masini a,int n,int p)
{
int i;
for(i=0;i<n-1;i++)
{
if(a[i].an=p)
//atribuire valori membrilor
structurii
{
printf("Automobil [%d]:\n",i+1);
printf("\tmarca:
%s\n",a[i].marca);
printf("\tmodelul:
%s\n",a[i].model);
printf("\tculoarea: %s\n",a[i].cul);
printf("\tan fabr.: %d\n",a[i].an);
printf("\tnr locuri: %d\n",a[i].date.nl);
printf("\tputerea:
%d\n\n",a[i].date.put);
}
}
}
void main()
{
masini a;
int n,aux,i,j,p;
citire(a,&n);
afisare(a,n);
for(i=0;i<n;i++)
{
if(a[i].date.nl=5)
//atribuire valori membrilor
structurii
{
printf("Automobil [%d]:\n",i+1);
printf("\tmarca:
%s\n",a[i].marca);
printf("\tmodelul:
%s\n",a[i].model);
printf("\tculoarea: %s\n",a[i].cul);
printf("\tan fabr.: %d\n",a[i].an);
printf("\tnr locuri: %d\n",a[i].date.nl);
printf("\tputerea:
%d\n\n",a[i].date.put);
}
}
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
{
if(a[i].date.put>a[j].date.put)
{
aux=i;
i=j;
j=aux;
}
}
afisare(a,n);
printf("\n\tDati anul dupa care vor fi afisate masinile: ");
scanf("%d",&p);
an(a,n,p);
getchar();
int k;
scanf("%d", &k);
}