C
Problema c++ lista liniara dublu inlantuita de produseSa se creeze o lista liniara dublu inlantuita de produse cu structura de la problema 2.2. anterior rezolvata care sa permita exploatarea directa cat si inversa a listei (adica listarea produselor din lista). Solutie : #include<stdio.h> #include<string.h> #include<alloc.h> #include<conio.h> #include<float.h> struct tipart *artcurent, *artprim, *artultim; int primapel=1; int t; char r,r1; void adaugare() //n++; printf('n cod articol(1..9999):'); scanf('%d',&artprim->ca); printf('n denumire articol:'); scanf('%s',&artprim->denumire); printf('n unitate de masura (bc,kg,ml,mp,mc.l,hl,etc):'); scanf('%s',&artprim->umas); printf('n pret articol(real):'); scanf('%ld',&artprim->pret); artprim->anterior=NULL; artultim=artprim; artcurent=artprim; primapel=0; } else //n++; printf('n cod articol(1..9999):'); scanf('%d',&artultim->ca); printf('n denumire articol:'); scanf('%s',&artultim->denumire); printf('n unitate de masura (bc,kg,ml,mp,mc.l,hl,etc):'); scanf('%s',&artultim->umas); printf('n pret articol(real):'); scanf('%ld',&artultim->pret); artultim->anterior=artcurent; artultim->urmator=NULL; artcurent->urmator=artultim; artcurent=artultim; } } void listare() void afisare1() listare(); printf('n ================================='); }
void afisare2() listare(); printf('n ================================='); } void main() r1='d'; while((r1=='d') || (r1=='D')) while((t<1) || (t>2)); if(t==1) afisare1(); else afisare2(); printf('n continuati afisarea listei de articole?(d/n):'); r1=getche(); } } Problema 3.3. Sa se creeze o lista dublu inlantuita cu angajatii unei firme ordonata dupa numele si prenumele angajatilor si sa se actualizeze aceasta lista (adaugarea la locul potivit a unui nou angajat, stergerea cat si modificarea datelor unui angajat) urmata de listarea la cerere a tuturor angajatilor. Solutie: #include<stdio.h> #include<conio.h> #include<string.h> #include<alloc.h> #include<ctype.h> #include<process.h> struct tipangajat ; struct tipangajat *angprim, *angultim, *angcurent; int ok,auxca; char auxnume[20], auxprenume[20], auxdep[20], auxpost[20]; int primapel=1; void creare_ins(void) printf('n nume angajat:'); scanf('%s',angprim->nume); printf('n prenume angajat:'); scanf('%s',angprim->prenume); dowhile((angprim->ca<1) || (angprim->ca>999)); printf('n departament angajat:'); scanf('%s',angprim->departament); printf('n post angajat:'); scanf('%s',angprim->post); angprim->ant=NULL; angprim->urm=NULL; angultim=angprim; angcurent=angprim; //nrangajat=1; primapel=0; } else printf('n nume angajat:'); scanf('%s',angultim->nume); printf('n prenume angajat:'); scanf('%s',angultim->prenume); dowhile((angultim->ca<1) || (angultim->ca>999)); printf('n departament angajat:'); scanf('%s',angultim->departament); printf('n post angajat:'); scanf('%s',angultim->post); angultim->ant=angcurent; angultim->urm=NULL; angcurent->urm=angultim; angcurent=angultim; /* nrangajat++; */ } } void modificare(void) else angcurent=angcurent->urm; }while(angcurent->urm!=NULL); if(angcurent->ca==cc) if(ok1==1) printf('n operatie de modificare reusita'); else printf('n angajatul cu codul %d nu exista in lista',cc); } void stergere(void) else } else angcurent=angcurent->urm; }while(angcurent->urm!=NULL); if(angcurent->ca==cc) if(ok1==1) else printf('n angajatul cu codul %d nu exista in lista',cc); } void inversare(struct tipangajat *xangajat) void sortare(void) ok=1; while(ok==1) else else angcurent=angcurent->urm;} else angcurent=angcurent->urm; } }while(angcurent->urm!=NULL); } } void listare(void) void afisare(void) listare(); printf('n================================================='); } void main() r=getch(); } }
|