/* program p117_28; {10} */ // program p117_28; {10} #include // uses crt; #include // {uses system;} #include #define nm 100 // const nm=100; // type typedef char Denum[16]; // Denum=string[16]; typedef struct { // Produs=record Denum Num; // Num:Denum; unsigned int Pr; // Pr:word; } Produs; // end; // var Produs Lst[101]; // Lst:array[1..100]of Produs; unsigned int i,j,n; // i,j,n:0..nm; FILE *f; // f:file of Produs; Denum s, fn, buf; // s, fn:denum; unsigned int PrMin; // Prmin:word; void main(void) { // begin clrscr(); // clrscr; n = 0; // n:=0; do{ // repeat n++; // inc(n); printf("Produsul %u:\n", n); // Writeln('Produsul ',n,':'); printf("- Denumirea: "); scanf("%s", Lst[n].Num); // write('- Denumirea: '); readln(Lst[n].Num); if(strlen(Lst[n].Num)==0) break; // if Lst[n].Num='' then break; printf("- Pretul: "); scanf("%u", Lst[n].Pr); // write('- Pretul: '); readln(Lst[n].Pr); } while ( n!=nm || strlen(Lst[n].Num)!=0 ); // until (n=nm) or (Lst[n].Num=''); n--; // dec(n); //{a} printf("Nume fisier (fara extensie): "); // Write('Nume fisier (fara extensie): '); scanf("%s", fn); // Readln(fn); strcpy(buf, fn); strcat(buf, ".dat"); f = fopen(buf, "wb"); // assign(f,fn+'.dat'); rewrite(f); for(i=1;i<=n;i++){fprintf(f,"%u %s\n",Lst[i].Pr, Lst[i].Num);} // for i:=1 to n do write(f,Lst[i]); fclose(f); // close(f); //{b} clrscr(); // clrscr; PrMin = 0xffff; // PrMin:=$ffff; for(i=1;i<=n;i++) if(Pr0){ // for j:=i+1 to n do if Num>Lst[j].Num then begin s = Lst[j].Num; Lst[j].Num = Lst[i].Num; Lst[i].Num = s; // s:=Lst[j].Num; Lst[j].Num:=Num; Num:=s; PrMin:=Lst[j].Pr; Lst[j].Pr:=Lst[i].Pr; Lst[i].Pr:=PrMin; // PrMin:=lst[j].Pr; lst[j].Pr:=Pr; Pr:=PrMin; } // end; printf("%s - %u\n", Lst[i].Num, Lst[i].Pr); // Writeln(num,' - ',Pr); fprintf(f,"%u %s\n",Lst[i].Pr, Lst[i].Num);} // Write(f,Lst[i]); } // end; fclose(f); // Close(f); getch(); // readkey; // {e} clrscr(); // clrscr; printf("Lista produselor descrescatoare dupa preturi:\n"); // Writeln('Lista produselor descrescatoare dupa preturi:'); for(i=1;i<=n;i++){ // for i:=1 to n do with Lst[i] do begin for(j=i+1;j<=n;j++) if(strcmp(Lst[i].Num, Lst[j].Num)<0){ // for j:=i+1 to n do if Num0){ // for j:=i+1 to n do if Num>Lst[j].Num then begin s = Lst[j].Num; Lst[j].Num = Lst[i].Num; Lst[i].Num = s; // s:=Lst[j].Num; Lst[j].Num:=Num; Num:=s; PrMin:=Lst[j].Pr; Lst[j].Pr:=Lst[i].Pr; Lst[i].Pr:=PrMin; // PrMin:=lst[j].Pr; lst[j].Pr:=Pr; Pr:=PrMin; } // end; fprintf(f,"%u %s\n",Lst[i].Pr, Lst[i].Num);} // Write(f,Lst[i]); } // end; fclose(f); // Close(f); }// end.