Sunteți pe pagina 1din 24

ARTICOLE

//articol care are campurile cod, cantitate si pret si calculeaza valoarea fiecarui produs si
valoarea totala obtinuta

# include <stdio.h>
# include <malloc.h>
# include <conio.h> Pasul 1. Definim articolul cu
campurile sale:
struct produs
{
int cod; cod, cantitate, pret
float cantitate;
float pret;
};

void traversare(produs *p, int n)


{
int i; Pointer care retine adresa

printf("\nCod Cantitate Pret"); articolului produs


printf("\n");
for (i = 0; i<n; i++)
printf("\n %d %5.2f %5.2f", p[i].cod, p[i].cantitate, p[i].pret);
printf("\n");

float val = 0, valori[100]; operator de


for (i = 0; i<n; i++) { accesare
valori[i] = p[i].cantitate * p[i].pret;
val = val + valori[i];
pas 3:
}
parcurge
printf("\nValoare"); m
printf("\n");
for (i = 0; i<n; i++) structura
printf("%5.2f ", valori[i]);
printf("\nValoare totala=%5.2f", val);
}

void main()
{
int i, n;

printf("Numar produse=");
scanf("%d", &n);
//alocare
produs *p = (produs*)malloc(n*sizeof(produs));

for (i = 0; i<n; i++)


{
printf("c[%d]=", i + 1); Pasul 2. Trebuie sa
scanf("%d", &p[i].cod);
introducem
printf("q[%d]=", i + 1);
scanf("%f", &p[i].cantitate);
printf("p[%d]=", i + 1); valori de la tastatura pt
scanf("%f", &p[i].pret); articolul
}

traversare(p, n);
//dezalocare
free(p);

se foloseste pt determinarea
lungimii zonei de memorie
_getch();
}

data de
Produs
grup

Cod Cantitate Pret

date elementare

Campurile
articolului

Cantitate*pret pt fiecare
produs

Aduna valorile pt fiecare


produs

Exercitii:

1.Realizati un articol care sa contina campurile : Cod_student,


Nota_romana,Nota_mate,Nota_fizica si un camp Medie_BAC care sa calculeze
media fiecarui student. Sa se faca alocare dinamica pentru structura.

Pas 1: Definim structura care contine campurile Cod_student,,


Nota_romana,Nota_mate si Nota_fizica.

Pas 2: In void main() trebuie sa introducem valorile de la tastatura


Pas 3: Parcurgem structura folosind un subprogram pe care il vom numi
traversare si tot in subprogram vom calcula media.

#include<stdio.h>
#include<malloc.h> //necesara pt alocare dinamica, folosind malloc si free
#include<conio.h>
#include<stdlib.h>

//definim structura, nu inseamna ca am alocat spatiu de memorie pentru ea

struct student
{
int Cod_student;
float Nota_romana;
float Nota_mate;
float Nota_fizica;
};

//traversam structura
void traversare(student *s, int n)
{
int i;
printf("\nCod_student Nota_romana Nota_mate Nota_fizica");
printf("\n");
for (i = 0; i <n; i++)
printf("\n %d %5.2f %5.2f %5.2f", s[i].Cod_student, s[i].Nota_romana, s[i].Nota_mate,
s[i].Nota_fizica);

printf("\n");
float Medie[100];
printf("\nMedia de bacalaureat");
printf("\n");
for (i = 0; i <n; i++)
{
Medie[i] = (s[i].Nota_romana + s[i].Nota_mate + s[i].Nota_fizica)/3;
printf("%5.2f", Medie[i]);
}
}

void main()
{

//definim contorul si dimensiunea structurii


int i, n;
student *s;
//avem nevoie de un pointer care sa memoreze adresa structurii
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
printf("\n");
//trebuie sa introducem valorile pt fiecare camp al structurii, folosind alocare dinamica,
noi doar am
//definit structura, e timpul sa-i alocam memorie in Heap
// sintaxa <tip_de_baza>
*<nume_pointer>=(tip_de_baza*>malloc<dim*sizeof(tip_de_baza);
s = (student*)malloc(n*sizeof(student));
for (int i = 0; i < n; i++)
{
printf("cod[%d]=", i + 1);
scanf("%d", &s[i].Cod_student);
printf("Nota_romana[%d] = ", i + 1);
scanf("%f", &s[i].Nota_romana);
printf("Nota_mate[%d]=", i + 1);
scanf("%f", &s[i].Nota_mate);
printf("Nota_fizica[%d]=", i + 1);
scanf("%f", &s[i].Nota_fizica);
}
traversare(s, n);
//dezalocare
free(s);
_getch();
}

//un articol cu campurile: cod, denumire, cantitate si pret, iar programul calculeaza valoarea
fiecarui produs si valoarea totala a produselor.

# include <stdio.h>
# include <malloc.h>
# include <conio.h> biblioteca pt siruri de
# include <string.h>
caractere
struct produs
{
int cod; definim structura, la definire
char *denumire; nu i se
float cantitate;
float pret;
};

denumire este numele


pointerului

care va memora adresa la care


void traversare(produs *p, int n)
{ se afla denumirea produsului
int i;

printf("\nCod Denumire Cantitate Pret");


printf("\n");
for (i=0;i<n;i++) printf("\n %d %s %5.2f
%5.2f",p[i].cod,p[i].denumire,p[i].cantitate,p[i].pret);
printf("\n");

float val=0,valori[100];

for (i=0;i<n;i++) {
valori[i]= p[i].cantitate * p[i].pret;
val+=valori[i];
}

printf("\nValoare");
printf("\n");
for (i=0;i<n;i++) printf("%5.2f ",valori[i]);
printf("\nValoare totala=%5.2f",val);
}

void main()
{ avem nevoie de un tablou
int i,n; unidimensional care
char buffer[20];

printf("Numar produse="); sa retina o insiruire de caractere,


scanf("%d",&n); punem intr-un vector fiecare litera
//alocare (char retine doar un caracter)
produs *p = (produs*)malloc(n*sizeof(produs));

for (i=0;i<n;i++)
{
printf("c[%d]=",i+1);
scanf("%d",&p[i].cod);
printf("d[%d]=",i+1);
scanf("%s",buffer);
//alocare
p[i].denumire = (char*)malloc((strlen(buffer)+1)*sizeof(char));
strcpy(p[i].denumire,buffer);
printf("q[%d]=",i+1); fiecare sir de car
scanf("%f",&p[i].cantitate);
are un caracter /0
printf("p[%d]=",i+1);
scanf("%f",&p[i].pret); care arata sfarsitul
} rata
lungimea
traversare(p,n);
sirului
//dezalocare
for (i=0;i<n;i++)
free(p[i].denumire);
free(p);

_getch();
}
2. Realizati un articol care sa contina campurile : Cod_student, Nume_student
Nota_romana,Nota_mate,Nota_fizica si un camp Medie_BAC care sa calculeze
media fiecarui student,iar daca media>6 sa se specifice ca studentul este
promovat, in caz contrar, acesta nu a promovat. Sa se faca alocare dinamica
pentru structura.

#include<stdio.h>
#include<malloc.h> //necesara pt alocare dinamica, folosind malloc si free
#include<conio.h>
#include<string.h> //necesara pt sirurile de caractere

//definim structura, nu inseamna ca am alocat spatiu de memorie pentru ea

struct student
{
int Cod_student;
char *Nume_student;
float Nota_romana;
float Nota_mate;
float Nota_fizica;
};

//traversam articolul
void traversare(student *s, int n)
{
int i;
printf("\nCod_student Nume_student Nota_romana Nota_mate Nota_fizica");
printf("\n");
for (i = 0; i < n; i++)
printf("\n %d %s %5.2f %5.2f %5.2f", s[i].Cod_student, s[i].Nume_student,
s[i].Nota_romana, s[i].Nota_mate, s[i].Nota_fizica);
printf("\n");
//calculam media pt fiecare student
float medii[100];
printf("\nMedia de BAC");
for (i = 0; i < n; i++)
{
medii[i] = (s[i].Nota_romana + s[i].Nota_mate + s[i].Nota_fizica) / 3;
printf("%5.2f", medii[i]);
}
printf("\n");
//spunem cine a promovat/nu a promovat examenul
for (i = 0; i < n; i++)
{
if (medii[i]>6)
printf("\nStudentul %s a promovat examenul",
s[i].Nume_student);
else
printf("\nStudentul %s nu a promovat examenul",
s[i].Nume_student);
}

}
void main()
{

//definim contorul si dimensiunea structurii


int i, n;
student *s;
//avem nevoie de un vector in care sa memoram fiecare caracter al numelui fiecarui
student
char buffer[25];
//avem nevoie de un pointer care sa memoreze adresa structurii
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
// alocam memorie sintaxa <tip_de_baza>
*<nume_pointer>=(tip_de_baza*>malloc<dim*sizeof(tip_de_baza);
s = (student*)malloc(n*sizeof(student));
for (int i = 0; i < n; i++)
{
printf("cod[%d]=", i + 1);
scanf("%d", &s[i].Cod_student);
//alocam memorie pentru vectorul care contine numele studentilor
s[i].Nume_student = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
printf("Nume[%d]=", i + 1);
scanf("%s", buffer);
//copiem din buffer numele studentului
strcpy(s[i].Nume_student, buffer);
printf("Nota_romana[%d] = ", i + 1);
scanf("%f", &s[i].Nota_romana);
printf("Nota_mate[%d]=", i + 1);
scanf("%f", &s[i].Nota_mate);
printf("Nota_fizica[%d]=", i + 1);
scanf("%f", &s[i].Nota_fizica);
}
traversare(s, n);
//dezalocare
for (i = 0; i < n; i++)
free(s[i].Nume_student);
free(s);
_getch();
}
//se citeste din fisier un articol care are campurile: cod, denumire, pret si cantitate si se
calculeaza valoarea pt fiecare produs
//si valoarea totala a produselor.

# include <stdio.h>
# include <malloc.h>
# include <conio.h>
# include <string.h>
#include<stdlib.h>

struct produs
{
int cod;
char *denumire;
float cantitate;
float pret;
};

void traversare(produs *p, int n)


{
int i;

printf("\nCod Denumire Cantitate Pret");


printf("\n");
for (i = 0; i<n; i++)
printf("\n %d %s %5.2f %5.2f", p[i].cod, p[i].denumire, p[i].cantitate, p[i].pret);
printf("\n");

float val = 0, valori[100];

for (i = 0; i<n; i++) {


valori[i] = p[i].cantitate * p[i].pret;
val += valori[i];
}
printf("\nValoare");
printf("\n");
for (i = 0; i<n; i++)
printf("%5.2f ", valori[i]);
printf("\nValoare totala=%5.2f", val);
}

void main()
{
int i, n;
char buffer[20];
produs *p = NULL;;

FILE *f;
f = fopen("fisier.txt", "r");
if (f)
{
fscanf(f, "%d", &n);
//alocare
p = (produs*)malloc(n*sizeof(produs));
for (i = 0; i<n; i++)
{
fscanf(f, "%d", &p[i].cod);
fscanf(f, "%s", buffer);
//alocare
p[i].denumire = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(p[i].denumire, buffer);
fscanf(f, "%f", &p[i].cantitate);
fscanf(f, "%f", &p[i].pret);
}
}
else printf("\n Fisierul nu exista!");
fclose(f);

traversare(p, n);

//dezalocare
for (i = 0; i<n; i++)
free(p[i].denumire);
free(p);

_getch();
}
3. Scrieti un program care sa citeasca din fisier un articol care are campurile:
Cod_student, Nume_student, Nota_romana, Nota_mate, Nota_fizica si dupa ce a
preluat datele din fisier sa se calculeze media pt fiecare student.

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>

//definim articolul
struct student
{
int Cod_student;
char *Nume_student;
float Nota_romana;
float Nota_mate;
float Nota_fizica;
};

void traversare(student *s, int n)


{
int i;
printf("\nCod_student Nume_student Nota_romana Nota_mate Nota_fizica");
printf("\n");
for (i = 0; i < n; i++)
printf("\n %d %s %5.2f %5.2f %5.2f", s[i].Cod_student, s[i].Nume_student,
s[i].Nota_romana, s[i].Nota_mate, s[i].Nota_fizica);
printf("\n");
//definim un vector in care sa memoram media fiecarui student
float medii[100];
printf("\nMedia de BAC");
printf("\n");
for (i = 0; i < n; i++)
{
medii[i] = (s[i].Nota_romana + s[i].Nota_mate + s[i].Nota_fizica) / 3;
printf("%5.2f", medii[i]);
}
}

void main()
{
int i, n;
student *s=NULL;
FILE *f;
char buffer[25];
f = fopen("Studenti.txt", "r");
if (f)
{
fscanf(f, "%d", &n);
//alocam memorie pt articol
s = (student*)malloc(n*sizeof(student));
for (i = 0; i < n; i++)
{
fscanf(f, "%d", &s[i].Cod_student);
fscanf(f, "%s", buffer);
//alocam memorie pt nume
s[i].Nume_student = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
//copiem din buffer
strcpy(s[i].Nume_student, buffer);
fscanf(f, "%f", &s[i].Nota_romana);
fscanf(f, "%f", &s[i].Nota_mate);
fscanf(f, "%f", &s[i].Nota_fizica);
}
}
else
printf("\nFisierul nu exista");
fclose(f);
traversare(s, n);
//dezalocare memorie
for (i = 0; i < n; i++)
free(s[i].Nume_student);
free(s);
_getch();
}

Cod Cantitate Pret


a[1][1] a[1][2] a[1][3]

a[2][1] a[2][2] a[2][3]

//articol care are campurile cod, cantitate si pret, iar valorile campurilor sunt retinute in
elementele unei matrici cu n linii si 3 coloane.(dinamic)

# include <stdio.h>
# include <malloc.h>
# include <conio.h>

void traversarematrice(float **mag, int n)


{
int i, j;
printf("\nCod Cantitate Pret");
printf("\n");
for (i = 0; i<n; i++)
{
for (j = 0; j<3; j++)
printf("%5.2f", mag[i][j]);
printf("\n");
}
float val = 0, valori[100];
for (i = 0; i<n; i++) {
valori[i] = mag[i][1] * mag[i][2];
val += valori[i];
}
printf("\nValoare");
printf("\n");
for (i = 0; i<n; i++) printf("%5.2f ", valori[i]);
printf("\nValoare totala=%5.2f", val);
}

void main()
{
int i, j, n;

printf("Numar produse=");
scanf("%d", &n);

//alocare
float **mag = (float**)malloc(n*sizeof(float*));
for (i = 0; i<n; i++)
mag[i] = (float*)malloc(3 * sizeof(float));

for (i = 0; i<n; i++)


for (j = 0; j<3; j++)
{
printf("mag[%d][%d]=", i + 1, j + 1);
scanf("%f", &mag[i][j]);
}

traversarematrice(mag, n);

//dezalocare
for (i = 0; i<n; i++)
free(mag[i]);
free(mag);

_getch();
}
4. Scrieti un program care sa contina un articol sub forma unei matrice, ale carui
campuri sa fie Cod_student, Nota_romana, Nota_mate si Nota_fizica, elementele
articolului sa fie valorile campurilor, iar programul sa calculeze media de bac pt
fiecare student. (dinamic)

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

void traversarematrice(float **stud, int n)


{
int i, j;
printf("Cod_student Nota_romana Nota_mate Nota_fizica");
printf("\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < 4; j++)
printf("%5.2f", stud[i][j]);
printf("\n");
}

//calculam media pt fiecare student


printf("\Media de BAC");
float medii[100],media=0;
for (i = 0; i < n; i++)
{
media = 0;
for (j = 1; j < 4; j++)
media = media + stud[i][j];
medii[i] = media / 3;
printf("%5.2f", medii[i]);
}

void main()
{
int n, i, j;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
//alocam memorie pt matricea stud
float **stud = (float**)malloc(n*sizeof(float*));
//introducem valorile de la tastatura
for (i = 0; i < n; i++)
stud[i] = (float*)malloc(4*sizeof(float));

for (i = 0; i < n; i++)


for (j = 0; j < 4; j++)
{
printf("stud[%d][%d]=", i + 1, j + 1);
scanf("%f", &stud[i][j]);
}
traversarematrice(stud, n);
for (i = 0; i < n; i++)
free(stud[i]);
free(stud);
_getch();
}

//articol care are campurile cod, cantitate si pret, iar valorile campurilor sunt retinute in
elementele unei matrici cu n linii si 3 coloane.(static)

# include <stdio.h>
# include <malloc.h>
# include <conio.h>

void traversarematrice(float mag[100][3], int n)


{
int i,j;

printf("\nCod Cantitate Pret");


printf("\n");
for (i=0;i<n;i++) {
for (j=0;j<3;j++)
printf("%5.2f",mag[i][j]);
printf("\n");
}
float val=0,valori[100];
for (i=0;i<n;i++) {
valori[i]=mag[i][1]*mag[i][2];
val+=valori[i];
}
printf("\nValoare");
printf("\n");
for (i=0;i<n;i++) printf("%5.2f ",valori[i]);
printf("\nValoare totala=%5.2f",val);
}

void main()
{
int i,j,n;
float mag[100][3];

printf("Numar produse=");
scanf("%d",&n);

for (i=0;i<n;i++)
for (j=0;j<3;j++) {
printf("mag[%d][%d]=",i+1,j+1);
scanf("%f",&mag[i][j]);
}

traversarematrice(mag,n);
getch();
}

5. Scrieti un program care sa contina un articol sub forma unei matrice, ale carui
campuri sa fie Cod_student, Nota_romana, Nota_mate si Nota_fizica, elementele
articolului sa fie valorile campurilor, iar programul sa calculeze media de bac pt
fiecare student. (static)

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

void traversarematrice(float stud[100][4], int n)


{
int i,j;
printf("Cod_student Nota_romana Nota_mate Nota_fizica");
printf("\n");
for (i = 0; i < n; i++)
{
for (j = 0; j < 4; j++)
printf("%5.2f", stud[i][j]);
printf("\n");
}

printf("\nMedia");
float medii[100],media;
for (i = 0; i < n; i++)
{
media = 0;
for (j = 1; j < 4; j++)
media= media + stud[i][j];
medii[i] = media / 3;
printf("%5.2f", medii[i]);
}

void main()
{
float stud[100][4];
int n, i,j;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
for (i = 0; i < n;i++)
for (j = 0; j < 4; j++)
{
printf("stud[%d][%d]=", i+1, j+1);
scanf("%f", &stud[i][j]);
}
traversarematrice(stud, n);
_getch();
}
//program care pune valorile campurilor unui articol (Cod, Cantitate si Pret) in
niste vectori, alocati dinamic.

# include <stdio.h>
# include <malloc.h>
# include <conio.h>

void traversare(int *c, float *q, float *p, int n)


{
int i;

printf("\nCod ");
for (i = 0; i < n; i++)
{
printf("%d", c[i]);
printf(" ");
}
printf("\nCantitate");
for (i = 0; i<n; i++)
printf("%5.2f", q[i]);
printf("\n");
printf("\nPret");
for (i = 0; i<n; i++) printf("%5.2f", p[i]);
printf("\n");

float val = 0, valori[100];

for (i = 0; i<n; i++) {


valori[i] = q[i] * p[i];
val += valori[i];
}

printf("\nValoare");
printf("\n");
for (i = 0; i<n; i++) printf("%5.2f ", valori[i]);
printf("\nValoare totala=%5.2f", val);
}

void main()
{
int i, n;

printf("Numar produse=");
scanf("%d", &n);

//alocare
int *c = (int*)malloc(n*sizeof(int));
float *q = (float*)malloc(n*sizeof(float));
float *p = (float*)malloc(n*sizeof(float));

for (i = 0; i<n; i++)


{
printf("c[%d]=", i + 1);
scanf("%d", &c[i]);
printf("q[%d]=", i + 1);
scanf("%f", &q[i]);
printf("p[%d]=", i + 1);
scanf("%f", &p[i]);
}

traversare(c, q, p, n);
//dezalocare
free(c);
free(q);
free(p);

_getch();
}

6. Scrieti un program care sa contina un articol ale carui campuri sa fie


Cod_student, Nota_romana, Nota_mate si Nota_fizica, elementele articolului sa fie
memorate in niste vectori.(alocarea se face dinamic) , si calculeaza media de
BAC a fiecarui student.

#include<stdio.h>
#include<conio.h>
#include<malloc.h>

void traversarevectori(int *Cod_student, float *Nota_romana, float *Nota_mate, float


*Nota_fizica,int n)
{
int i;
printf("\nCod_student ");
for (i = 0; i < n; i++)
{
printf("%d", Cod_student[i]);
printf(" ");
}
printf("\n");
printf("\nNota_romana ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_romana[i]);
printf("\n");
printf("\nNota_mate ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_mate[i]);
printf("\n");
printf("\nNota_fizica ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_fizica[i]);
//calculam media
printf("\n");
printf("\nMedia de BAC ");
float media, medii[100];
for (i = 0; i < n; i++)
{
media = 0;
media = media + Nota_romana[i] + Nota_mate[i] + Nota_fizica[i];
medii[i] = media / 3;
printf("%5.2f", medii[i]);
}

void main()
{
int *Cod_student;
float *Nota_romana;
float *Nota_mate;
float *Nota_fizica;
int n, i;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
Cod_student = (int*)malloc(n*sizeof(int));
for (i = 0; i < n; i++)
{
printf("Cod_student[%d]=", i+1);
scanf("%d", &Cod_student[i]);
}
Nota_romana = (float*)malloc(n*sizeof(float));
for (i = 0; i < n; i++)
{
printf("Nota_romana[%d]=", i + 1);
scanf("%f", &Nota_romana[i]);
}
Nota_mate = (float*)malloc(n*sizeof(float));
for (i = 0; i < n; i++)
{
printf("Nota_mate[%d]=", i + 1);
scanf("%f", &Nota_mate[i]);
}
Nota_fizica = (float*)malloc(n*sizeof(float));
for (i = 0; i < n; i++)
{
printf("Nota_fizica[%d]=", i + 1);
scanf("%f", &Nota_fizica[i]);
}
traversarevectori(Cod_student, Nota_romana, Nota_mate, Nota_fizica, n);
free(Cod_student);
free(Nota_romana);
free(Nota_mate);
free(Nota_fizica);
_getch();
}
//program care pune valorile campurilor unui articol (Cod, Denumire, Cantitate si
Pret) in niste vectori, alocati dinamic

# include <stdio.h>
# include <malloc.h>
# include <conio.h>
# include <string.h>

void traversare(float *c, char *d[20], float *q, float *p, int n)
{
int i;

printf("\nCod ");
for (i = 0; i < n; i++)
{
printf("%5.2f", c[i]);
printf(" ");
}
printf("\n");
printf("\nDenumire ");
for (i = 0; i<n; i++) printf("%s ", d[i]);
printf("\n");
printf("\nCantitate ");
for (i = 0; i<n; i++) printf("%5.2f", q[i]);
printf("\n");
printf("\nPret ");
for (i = 0; i<n; i++) printf("%5.2f", p[i]);
printf("\n");

float val = 0, valori[100];

for (i = 0; i<n; i++) {


valori[i] = q[i] * p[i];
val += valori[i];
}

printf("\nValoare");
printf("\n");
for (i = 0; i<n; i++) printf("%5.2f ", valori[i]);
printf("\nValoare totala=%5.2f", val);
}

void main()
{
int i, n;
char buffer[20];

printf("Numar produse=");
scanf("%d", &n);

//alocare
float *c = (float*)malloc(n*sizeof(float));
char *d[20];
float *q = (float*)malloc(n*sizeof(float));
float *p = (float*)malloc(n*sizeof(float));

for (i = 0; i<n; i++)


{
printf("c[%d]=", i + 1);
scanf("%f", &c[i]);
printf("d[%d]=", i + 1);
scanf("%s", buffer);
//alocare
d[i] = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
strcpy(d[i], buffer);
printf("q[%d]=", i + 1);
scanf("%f", &q[i]);
printf("p[%d]=", i + 1);
scanf("%f", &p[i]);
}

traversare(c, d, q, p, n);

//dezalocare
for (i = 0; i<n; i++) free(d[i]);
free(c);
free(q);
free(p);

_getch();
}
7. Scrieti un program care sa contina un articol ale carui campuri sa fie
Cod_student, Nume_student Nota_romana, Nota_mate si Nota_fizica, elementele
articolului sa fie memorate in niste vectori.(alocarea se face dinamic)

#include<stdio.h>
#include<conio.h>
#include<malloc.h>
#include<string.h>

void traversarevectori(int *Cod_student, char *Nume_student[25], float *Nota_romana, float


*Nota_mate, float *Nota_fizica, int n)
{
int i;
printf("\nCod_student ");
for (i = 0; i < n; i++)
{
printf("%d", Cod_student[i]);
printf(" ");
}
printf("\n");
printf("\nNume_student ");
for (i = 0; i < n; i++)
printf("%s", Nume_student[i]);
printf("\n");
printf("\nNota_romana ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_romana[i]);
printf("\n");
printf("\nNota_mate ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_mate[i]);
printf("\n");
printf("\nNota_fizica ");
for (i = 0; i < n; i++)
printf("%5.2f", Nota_fizica[i]);
printf("\n");
float medii[100], medie;
printf("\nMedia de BAC");
for (i = 0; i < n; i++)
{
medie = 0;
medie = medie + Nota_romana[i] + Nota_mate[i] + Nota_fizica[i];
medii[i] = medie / 3;
printf("%5.2f", medii[i]);
}
}

void main()
{
int n, i;
int *Cod_student;
char *Nume_student[25];
char buffer[25];
float *Nota_romana;
float *Nota_mate;
float *Nota_fizica;
printf("Introduceti numarul de studenti=");
scanf("%d", &n);
//alocam memorie pt fiecare vector care retine valori
Cod_student = (int*)malloc(n*sizeof(int));
Nota_romana = (float*)malloc(n*sizeof(float));
Nota_mate = (float*)malloc(n*sizeof(float));
Nota_fizica = (float*)malloc(n*sizeof(float));
for (i = 0; i < n; i++)
{
printf("Cod_student[%d]=", i + 1);
scanf("%d", &Cod_student[i]);
Nume_student[i] = (char*)malloc((strlen(buffer) + 1)*sizeof(char));
printf("Nume_student[%d]=", i + 1);
scanf("%s", buffer);
strcpy(Nume_student[i], buffer);
printf("Nota_romana[%d]=", i + 1);
scanf("%f", &Nota_romana[i]);
printf("Nota_mate[%d]=", i + 1);
scanf("%f", &Nota_mate[i]);
printf("Nota_fizica[%d]=", i + 1);
scanf("%f", &Nota_fizica[i]);
}
traversarevectori(Cod_student, Nume_student, Nota_romana, Nota_mate, Nota_fizica,
n);
for (i = 0; i < n; i++)
free(Nume_student[i]);
free(Cod_student);
free(Nota_romana);
free(Nota_mate);
free(Nota_fizica);
_getch();
}

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