Sunteți pe pagina 1din 10

Ministerul Educaiei i Tineretului al Republicii

Moldova
Universitatea Tehnic a Moldovei
Facultatea de Radioelectronic i Telecomunicaii

Dare de seam
La disciplina: Programare
Lucrare de laborator nr.8
Tema: Structuri n C++

A elaborat
Studentul gr.SER-101

Cernogal Laurentiu

A verificat:

Pocotilenco V.

Chiinu2011

2.Condiia problemei:
1)De alctuti un articol cu n nscrieri, care conine informaia despre studentii unei facultati.
a)De realizat cautarea studentilor dupa denumirea grupei.
b)De aranjat nscrierile n ordine inversa.
Cimpuri necesare:
Familia studentului, Grupa academica, Catedra.
3.Schema logic a algoritmului (a)-cautarea dupa grupa academica (b)-aranjarea in ordine
inversa.

Mod Coala
.
Elaborat
Verificat

docum.

Semnat Data

CPAE 525.1 005 08


Lit.

Cernogal L.
Pocotilenco V.

Coala
2

Structuri in C++

Coli
12

UTM FRT SER-101

4.Textul programului:
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<iostream.h>
struct restaurant{char nume[20]; int pret;};
void main()
{struct restaurant a[50],aux,q; char a1[20],a2[20],a3[20];int i,j,r,n,k;
FILE *f1;
//Afisarea meniului
m0:clrscr();
printf("\n\n\t***Meniu***\n\n");
printf("1. Completarea bazei de date\n");
printf("2. Citirea bazei de date din fisier\n");
printf("3. Introducerea unei noi inscrieri\n");
printf("4. Aflarea preturilor a trei bucate alese de client\n");
printf("5. Aranjarea inscrierilor in ordine descrescatoare dupa pretul bucatelor\n");
printf("6. Iesire");
printf("\n\n");
scanf("%d",&r);
switch(r)
{ case 1: goto m1;
case 2: goto m2;
case 3: goto m3

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

case 4: goto m4;


case 5: goto m5;
case 6: goto m6;
default: goto m0;}

//Completarea bazei de date


m1:clrscr();
printf("\n\nIntroduce numarul de bucate:\n"); scanf("%d",&n);
for(i=1;i<=n;i++)
{printf("Culege denumirea bucatei %d: ",i); scanf("%s",a[i].nume);
printf("Introdu pretul bucatei %d: ",i); scanf("%d",&a[i].pret);}
//Inscrierea bazei in fisierul baza.txt
f1=fopen("baza.txt","w");
for(i=1;i<=n;i++)
fwrite(&a[i],sizeof(a[i]),1,f1);
fclose(f1);
printf("\nBaza de date completata a fost inscrisa in fisierul \"baza.txt\"\n");
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch();goto m0;
//Citirea bazei din fisierul baza.txt si afiarea ei la monitor
m2:clrscr();

printf("\n\n\t ***Baza citita din fisier este***\n\n");


printf("\t------------------------------------\n");

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

printf("\t|Denumirea bucatei | Pretul bucatei|\n");


printf("\t|------------------|---------------|\n");
f1=fopen("baza.txt","r"); i=1;
while (fread(&a[i],sizeof(a[i]),1,f1)==1)
{printf("\t|%17s | %14d|\n",a[i].nume,a[i].pret); i++;
printf("\t|------------------|---------------|\n");}
fclose(f1);n=i;
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;
//Introducerea unei noi inscrieri
m3:clrscr();
printf("\nDoriti sa mai adaugati o inscriere y/n?\n");
r=getch();
if((r=='n')||(r=='N')) goto m0;
if((r=='y')||(r=='Y'))
{printf("Culege denumirea bucatei :"); scanf("%s",aux.nume);
printf("Introdu pretul bucatei : "); scanf("%d",&aux.pret);
f1=fopen("baza.txt","a");
fwrite(&aux,sizeof(aux),1,f1);

fclose(f1);
printf("\nInscrierea a fost adaugata la sfirsitul fisierului\n");
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0; }

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

//Aflarea preturilor a 3 bucate alese de client


m4:clrscr();
f1=fopen("baza.txt","r"); i=1;
while (fwrite(&a[i],sizeof(a[i]),1,f1)==1) i++;
n=i;
fclose(f1);
for(i=1;i<=3;i++)
{printf("\nIntroduceti bucata %d \n",i);
if(i==1)
{gets(a1);
for(j=1;j<=n;j++)
if(strcmp(a1,a[j].nume)==0)
goto r;}
if(i==2)
{gets(a2);
for(j=1;j<=n;j++)
if(strcmp(a2,a[j].nume)==0)

goto r;}
if(i==3)
{gets(a3);
for(j=1;j<=n;j++)
if(strcmp(a3,a[j].nume)==0)
goto r;}

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

r:{printf("\n\n\t***Rezultatul cautarii***\n\n");
printf("\t------------------------------------\n");
printf("\t|Denumirea bucatei | Pretul bucatei|\n");
printf("\t|------------------|---------------|\n");
k=0;
{printf("\t|%17s | %14d|\n",a[j].nume,a[j].pret);
printf("\t|------------------|---------------|\n");k++;}}}
if(k==0) printf("\nBucatele introduse nu sunt in meniul restaurantului\n");
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;

//Aranjarea inscrierilor
m5:clrscr();
f1=fopen("baza.txt","r"); i=1;
while (fread(&a[i],sizeof(a[i]),1,f1)==1) i++;

n=i; fclose(f1);
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
if(a[i].pret<a[j].pret)
{q=a[i];a[i]=a[j];a[j]=q;}
printf("\n\n\t***Baza aranjata este***\n\n");
printf("\t------------------------------------\n");

CPAE 525.1 005 08


Mod Coal
a

document

Semnat Data

Coal
a

printf("\t|Denumirea bucatei | Pretul bucatei|\n");


printf("\t|------------------|---------------|\n");
for(i=1;i<n;i++)
{printf("\t|%17s | %14d|\n",a[i].nume,a[i].pret);
printf("\t|------------------|---------------|\n");}
printf("\nPentru iesire in meniu culegeti ENTER\n");
getch(); goto m0;

//Iesire
m6:clrscr();
printf("\nPentru iesire culegeti orice tasta..."); getch();}

5.Descrierea programului:
Primele 6 rnduri nu snt instruciuni ale limbajului C. Simbolul # indic c aceste snt
directive ale procesorului. Procesorul execut prelucrarea prealabil a textului programului
nainte de compilare. n cazul dat aceste directive ne dau de neles c n fiierul ce se
compileaz trebuie introdus informaia din fiierele sistemului Turbo C conio.h, stdio.h,
iostream.h ,math.h, string.h si #include<stdlib.h>. Rndul void main() definete titlul
funciei principale cu numele main(). Pina la functia principala are loc declararea si
descrierea corpurilor functiilor secundare. Perechea de accolade {} mrginete o secven
de instruciuni care se precaut ca un tot ntreg. Urmtorul rnd conine descrierea
vareabilelor folosite n funcia principal main(). In urmatoarele rinduri se prelucreaza
2
masivele si se afiseaza rezultatele. Functia getch() opreste executarea programului pina la
apasarea tastei necesare din meniu. De asemenea in aceste programe se utilizeaza
generatorul de numere randomize(); In program are loc cautarea unei persoane dupa
numarul de telefon si aranjarea in ordine descrescatoare dupa numarul de telefon. Semnele
dublu slash// indica inceperea unui comentariu intr-o linie. Operatorii if, for se utilizeaza
la introducerea datelor masivelor, calcularea cit si afisarea lor.

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

6.Rezultatele:

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

.Concluzii:
Elaborind aceasta lucrare de laborator m-am familiarizat cu metodele teoretice si practice de
programare a fisierilor. Am observat ca Fisierile se fplosesc pentru a pastra informatia cu scopul
folosirii ulterioare. Folosirea fisierilor permite pastrarea informatiei de orice natura pentru un timp
indelungat, transferarea datelor de pe un purtator informational pe altul si multe altele.

Mod Coal
a

document

Semnat Data

CPAE 525.1 005 08

Coal
a

10

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