Documente Academic
Documente Profesional
Documente Cultură
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;
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] ;
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--;
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);
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.