Sunteți pe pagina 1din 12

Universitatea Tehnic a Republicii Moldova

Facultatea Calculatoare, Informatic i Microelectronic

Lucrare de Laborator Nr.6

Tema:Prelucrarea masivelor de structure in limbajul C Varianta: 10

A efectuat: Sava Cristian, gr.TI-125

A verificat: Micleuanu Nicu

Chiinu 2012

Scopul lucrrii: S se proiecteze un algoritm de prelucrare a unui masiv din structuri care sa indeplineasca urmatoarele cerinte: Numarul de inregistrari trebuie sa fie variabil si sa nu treaca de valoarea 100; Elementele sunt adaugate de la tastatura; Sa fie posibila cautarea unui element; Sa fie posibila sortarea masivului; Sa fie posibila editarea unei inregistrari; Sa fie posibila adaugarea unui element la sfarsit; Varianta 10:Stat[denumire, capital,suprafata,populatie,PIB]

Codul Surs:
#include<stdio.h> #include<conio.h> #include<string.h> struct Stat { char* Denumire[255]; char* Capitala[255]; int Suprafata; int Populatie; int PIB;

}; int i, oper,n,x,rez=-1,p; struct Stat list[5]; int main() { fflush(stdin);

char *text; char* caut; char *pch;

puts("Nr. de state:"); scanf("%i",&n); for (i=0;i<n;i++) { printf("\nStat nr.%i\n",i+1); printf("Denumire:\n"); scanf("%s",&list[i].Denumire); printf("Capitala:\n"); scanf("%s",&list[i].Capitala); printf("Suprafata:\n"); scanf("%i",&list[i].Suprafata); printf("Populatie:\n"); scanf("%i",&list[i].Populatie); printf("PIB:\n"); scanf("%i",&list[i].PIB); }

puts("---------- Lista statelor ------------"); for (i=0;i<n;i++) { printf("\nStat nr.%i\n",i+1); printf("Denumire:%s\n",list[i].Denumire); printf("Capitala:%s\n",list[i].Capitala); printf("Suprafata:%i\n",list[i].Suprafata); printf("Populatie:%i\n",list[i].Populatie); printf("PIB:%i\n",list[i].PIB); } while(1) { puts("\nCe operatie doresti sa efectuezi?"); puts("1-Cautare program"); | 2-Sortare | 3-Editare | 4-Adaugare | 9-Iesire

scanf("%i",&oper); p=n;

if(oper==1) { puts("Ce doresti sa cauti?"); scanf("%s",&caut); i=0; while(i!=p) { pch=strchr(list[i].Denumire,caut); if(pch!=0) { rez=i; } i++;

} if(rez!=-1) { printf("\nStat nr.%i\n",rez+1); printf("Denumire:%s\n",list[rez].Denumire); printf("Capitala:%s\n",list[rez].Capitala); printf("Suprafata:%i\n",list[rez].Suprafata); printf("Populatie:%i\n",list[rez].Populatie); printf("PIB:%i\n",list[rez].PIB); } else puts("Nu s-a returnat nici un rezultat"); } else if(oper==2) { double temp,j; int numbers[n],p=1,count[n] ;

for (i=0;i<n;i++) { numbers[i]=list[i].PIB;

count[i]=i; } while(p==1) { p=0; for (i=0;i<n;i++){ if (numbers[i] > numbers[i+1]){ temp = numbers[i]; numbers[i] = numbers[i+1]; numbers[i+1] = temp; temp = count[i]; count[i] = count[i+1]; count[i+1] = temp; p=1; } } } puts("------Lista statelor sortate crescator dupa PIB--------"); for (i=0;i<n;i++) { rez=count[i]; printf("\nStat nr.%i\n",rez+1); printf("Denumire:%s\n",list[rez].Denumire); printf("Capitala:%s\n",list[rez].Capitala); printf("Suprafata:%i\n",list[rez].Suprafata); printf("Populatie:%i\n",list[rez].Populatie); printf("PIB:%i\n",list[rez].PIB); } } else if(oper==3) { int ed; puts("\nNumarul statului pe care doresi sa-l editezi:\n"); scanf("%i",&ed); ed--;

printf("\nStat nr.%i\n",ed+1); printf("Denumire:%s\n",list[ed].Denumire); printf("Capitala:%s\n",list[ed].Capitala); printf("Suprafata:%i\n",list[ed].Suprafata); printf("Populatie:%i\n",list[ed].Populatie); printf("PIB:%i\n",list[ed].PIB);

puts("\nIntrodu datele noi:\n"); printf("Denumire:\n"); scanf("%s",&list[ed].Denumire); printf("Capitala:\n"); scanf("%s",&list[ed].Capitala); printf("Suprafata:\n"); scanf("%i",&list[ed].Suprafata); printf("Populatie:\n"); scanf("%i",&list[ed].Populatie); printf("PIB:\n"); scanf("%i",&list[ed].PIB);

puts("\nUpdate:\n"); printf("\nStat nr.%i\n",ed+1); printf("Denumire:%s\n",list[ed].Denumire); printf("Capitala:%s\n",list[ed].Capitala); printf("Suprafata:%i\n",list[ed].Suprafata); printf("Populatie:%i\n",list[ed].Populatie); printf("PIB:%i\n",list[ed].PIB);

} else if(oper==4) { puts("Introdu un nou stat:"); n++; printf("\nStat nr.%i\n",n);

printf("Denumire:\n"); scanf("%s",&list[n].Denumire); printf("Capitala:\n"); scanf("%s",&list[n].Capitala); printf("Suprafata:\n"); scanf("%i",&list[n].Suprafata); printf("Populatie:\n"); scanf("%i",&list[n].Populatie); printf("PIB:\n"); scanf("%i",&list[n].PIB); } else { break; } } getch(); }

START

Stati,oper,n,x, rez=-1,p;

Finish Oper=1

Cautare()

Oper=2

Soartare()

Oper=3

Editare()

Oper=4

Oper=9

Adaugare()

break

Concluzie: n lucrarea dat am studiat masivele de date in limbajul C. Am elaborate un program-meniu care stocheaza informatiile despre un stat, iar apoi permite de efectuat operatii cu acest masiv. Operatiile premise sunt: cautare, sortare, editare si adaugare.Am folosit pentru acest program ciclurile for, swich si while, functiile din string.h dar si structura if-else.

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