Documente Academic
Documente Profesional
Documente Cultură
AL REPUBLICII MOLDOVA
Universitatea Tehnică a Moldovei
Facultatea Calculatoare, Informatică şi Microelectronică
Departamentul Informatică şi Ingineria Sistemelor
Raport
pentru lucrarea de laborator Nr.5
Verificat:
Guțu Maria lect. univ.
Departamentul Informatică şi IS,
Facultatea FCIM, UTM
Chișinău – 2021
Sarcina: Pentru fișierele binare cu elemente de tip structură (conform variantelor) să se
afișeze la ecran următorul meniu de opțiuni:
în acest fișier.
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
typedef struct
char denumire[50];
char tara[50];
char producatorul[50];
int articolul;
float pret;
}marfa;
typedef struct
char denumirea[50];
char capitala[25];
int populatia;
}tara;
*arr=(marfa*)malloc(n*sizeof(marfa));
printf("Numarul marfei:%d\n",i+1);
printf("Denumirea:");
scanf("%s",arr[i].denumire);
fflush(stdin);
printf("Tara:");
scanf("%s",arr[i].tara);
fflush(stdin);
printf("Producatorul:");
scanf("%s",arr[i].producatorul);
fflush(stdin);
printf("Articolul:");
scanf("%d",&arr[i].articolul);
fflush(stdin);
printf("Pretul:");
scanf("%f",&arr[i].pret);
printf("\n");
fflush(stdin);
return;
printf("Numarul marfei:%d\n",i+1);
printf("Denumirea: %s\n",arr[i].denumire);
printf("Tara:%s\n",arr[i].tara);
printf("Producatorul:%s\n",arr[i].producatorul);
printf("Articolul:%d\n",arr[i].articolul);
printf("Pretul:%.2f\n",arr[i].pret);
}
}
FILE *fp1;
fp1=fopen("marfa.bin","rb");
int ch = getc(fp1);
while (ch!=EOF)
putchar(ch);
ch=getc(fp1);
printf("Numarul tarei:%d\n",i+1);
printf("Denumirea:");
scanf("%s",arr1[i].denumirea);
fflush(stdin);
printf("Capitala:");
scanf("%s",arr1[i].capitala);
fflush(stdin);
printf("Populatia:");
scanf("%d",&arr1[i].populatia);
fflush(stdin);
printf("\n");
fflush(stdin);
}
return;
FILE *fp1;
FILE *fp2;
fp1=fopen("marfa.bin","rb");
fp2=fopen("marfa2.bin","wb");
int nr=0;
fflush(stdin);
scanf("%d",&nr);
marfa mag;
fread(&mag,sizeof(mag),1,fp1);
if(i!=nr){
fwrite(&mag,sizeof(mag),1,fp2);
fclose(fp2);
fclose(fp1);
fp2=fopen("marfa2.bin","rb");
fp1=fopen("marfa.bin","wb");
if(index1>index2){
int temp;
temp=index1;
index1=index2;
index2=temp;
if(strcmp(arr[i].producatorul,producatorul)==0)
arr[i].producatorul;
getchar();
marfa aux;
if (strcmp(&arr[i].pret,&arr[i+1].pret)<0){
aux=arr[i];
arr[i]=arr[i+1];
arr[i+1]=aux;
FILE *fp1;
FILE *fp2;
fp1=fopen("marfa.bin","rb");
fp2=fopen("marfa2.bin","wb");
int nr=0;
fflush(stdin);
scanf("%d",&nr);
marfa mag;
for(int i=1;i<=n;i++){
fread(&mag,sizeof(mag),1,fp1);
if(i!=nr){
fwrite(&mag,sizeof(mag),1,fp2);
}
fclose(fp2);
fclose(fp1);
fp2=fopen("marfa2.bin","rb");
fp1=fopen("marfa.bin","wb");
while(fread(&mag,sizeof(mag),1,fp2)){
fwrite(&mag,sizeof(mag),1,fp1);
n--;
fclose(fp2);
fclose(fp1);
printf("\n***Eliminat cu succes***\n");
free(arr);
int complet=0;
printf("--------------------------\n");
do{
scanf("%d", &aleg);
printf("--------------------------\n");
switch(aleg){
case 1:
scanf("%d",&n);
if(n <= 0) {
scanf("%d",&n);
}
aloc_mem(&arr,n);
if (arr==NULL){
else{
mem=1;
printf("\n\n--------------------------\n");
break;
case 2:
if(mem==1){
scrie_marfa(&arr,n);
complet=1;
printf("--------------------------\n");
else{
system("cls");
printf("Nu ati alocat memorie pentru tablou\nAccesati punctul '1' pentru a efectua
introducerea in tablou\n\n");
printf("--------------------------\n");
break;
//afisarea datelor
case 3:
if(!mem){
system("cls");
else if(!complet){
system("cls");
printf("Te rugam sa accesezi punctul '1' din meniu apoi punctul '2'\n");
printf("--------------------------\n");
else{
afisare_marfa(&arr,n);
printf("--------------------------\n");
break;
case 4:
if(mem==1){
add_marfa(&arr,n);
complet=1;
printf("--------------------------\n");
else{
system("cls");
printf("Nu ati alocat memorie pentru tablou\nAccesati punctul '1' pentru a efectua
introducerea in tablou\n\n");
printf("--------------------------\n");
break;
case 5:
//modificarea
break;
case 6:
if(!mem){
system("cls");
printf("Nu ati alocat memorie pentru tablou\n");
else if(!complet){
system("cls");
printf("Te rugam sa accesezi punctul '1' din meniu apoi punctul '2'\n");
printf("--------------------------\n");
else{
cautare(&arr,index1,index2,producatorul);
printf("--------------------------\n");
break;
case 7:
if(!mem){
system("cls");
else if(!complet){
system("cls");
printf("--------------------------\n");
else{
sortare(&arr,n);
printf("--------------------------\n");
break;
case 8:
if(!mem){
system("cls");
else if(!complet){
system("cls");
printf("Te rugam sa accesezi punctul '1' din meniu apoi punctul '2'\n");
printf("--------------------------\n");
else{
eliminare(&arr,n);
printf("--------------------------\n");
}
break;
case 9:
eliberare(&arr,n);
if (arr==NULL){
else{
mem=1;
printf("\n\n--------------------------\n");
break;
break;
case 0:
break;
default:
system("cls");
printf("--------------------------\n");
}
while(aleg!=0);
int main(void)
int n;
marfa* arr[2];
FILE *fp1;
FILE *fp2;
fp1=fopen("marfa.bin","wb");
fp2=fopen("marfa2.bin","rb");
if(!fp1){
return printf("Eroare!");
else{
meniu(arr,n);
fclose(fp1);
fclose(fp2);
return 0;
}
Figura 1 – Optiunea 1
Figura 2 – Opțiunea 2
Figura 3 – Opțiunea 3
#include <stdio.h>
#include <stdlib.h>
int *array;
srand(time(0));
a[i] = rand()%10;
}
else printf("%d;\n",a[i]);
int i,j,schimb;
for(i=0;i<=n-2;i++)
for(j=i+1;j<=n-1;j++)
if(a[i]>a[j])
schimb=a[i];
a[i]=a[j];
a[j]=schimb;
for(i=0;i<=n-1;i++)
array = malloc(schimb*sizeof(int));
for(i=0;i<=n;i++)
array[i] = a[i];
int main()
int n;
scanf("%d",&n);
int a[n];
WriteArray(a,n);
showArray(a,n);
Cautare(a, n);
return 0;
#include <stdlib.h>
#include <string.h>
typedef struct {
char nume[25];
char prenume[25];
char denumirea_carte[30];
float pret;
} carte;
printf("Cartea :%d\n",i+1);
printf("Numele autorului:");
scanf("%s",carti[i].nume);
fflush(stdin);
printf("Prenume autorului:");
scanf("%s",carti[i].prenume);
fflush(stdin);
printf("Denumirea cartii:");
scanf("%s",carti[i].denumirea_carte);
fflush(stdin);
printf("Anul editiei:");
scanf("%d",&carti[i].anul);
fflush(stdin);
printf("Numarul de pagini:");
scanf("%d",&carti[i].nr_pagini);
fflush(stdin);
printf("Pretul:");
scanf("%f",&carti[i].pret);
printf("\n");
fflush(stdin);
return;
{
for (int i=0;i<n;i++){
printf("Cartea:%d\n",i+1);
printf("Denumirea cartii:%s\n",carti[i].denumirea_carte);
printf("Anul editiei:%d\n",carti[i].anul);
printf("Numarul de pagini:%d\n",carti[i].nr_pagini);
printf("Pretul:%.2f\n",carti[i].pret);
int min_idx = i;
*(carti+min_idx)= *(carti+i);
*(carti+i) = temp;
return 1;
else {
carte *carti;
unsigned int n;
scanf("%u",&n);
citire(carti,n);
afisare(carti,n);
Sort(carti,n);
fclose(fisier);
return 0;