Advertisement
Guest User

Pascal lista dinamica

a guest
Jan 20th, 2020
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.85 KB | None | 0 0
  1. Program students_dynamic_list;
  2. type itemAddress = ^item;
  3.     item = record
  4.         name: string;
  5.         grade: real;
  6.         next: itemAddress;
  7.     end;
  8.  
  9. var p, v: itemAddress;
  10.     name: string;
  11.     grade: real;
  12.     option: char;
  13.  
  14. procedure initializeList;
  15. var r: itemAddress;
  16.     name: string;
  17.     grade: real;
  18. begin
  19.     writeln();writeln();
  20.     if p<>nil then
  21.         writeln('Lista deja exista')
  22.     else begin
  23.         write('Introdu numele: ');
  24.         readln(name);
  25.         while name<>'' do begin
  26.             write('Introdu nota medie: ');
  27.             readln(grade);
  28.             new(r);
  29.             r^.name:= name;
  30.             r^.grade:= grade;
  31.             r^.next:= nil;
  32.             if p=nil then
  33.                 p:= r
  34.             else
  35.                 v^.next:= r;
  36.             v:= r;
  37.             write('Introdu numele: ');
  38.             readln(name);
  39.         end;
  40.     end;
  41. end;
  42.  
  43. procedure printList;
  44. var r: itemAddress;
  45. begin
  46.     writeln('');writeln('');
  47.     if p=nil then writeln('Lista este vida.')
  48.     else begin
  49.         writeln('Lista curenta:');
  50.         r:= p;
  51.         while r<>nil do begin
  52.             writeln(r^.name:15, r^.grade:10:2);
  53.             r:= r^.next;
  54.         end;
  55.     end;
  56. end;
  57.  
  58. procedure removeItem(target: string);
  59. var q, r: itemAddress;
  60. begin
  61.     writeln('');writeln('');
  62.     r:= p;
  63.     q:= r;
  64.     while r<>nil do begin
  65.         if r^.name = target then break;
  66.         q:= r;
  67.         r:= r^.next;
  68.     end;
  69.     if r=nil then writeln('Element inexistent')
  70.     else begin
  71.         if r=p then
  72.             p:= r^.next
  73.         else
  74.             q^.next:= r^.next;
  75.         writeln('Elevul a fost sters');
  76.     end;
  77. end;
  78.  
  79.  
  80. procedure addItem(newName: string; newGrade: real);
  81. var r: itemAddress;
  82. begin
  83.     writeln('');writeln('');
  84.     new(r);
  85.     v^.next:= r;
  86.     r^.name:= newName;
  87.     r^.grade:= newGrade;
  88.     v:= r;
  89.     writeln('Elevul a fost adaugat');
  90. end;
  91.  
  92.  
  93. begin
  94.     repeat
  95.         writeln();writeln();
  96.         writeln('Alege optiunea:');
  97.         writeln('c - creare lista');
  98.         writeln('p - afiseaza lista');
  99.         writeln('a - adauga un elev nou');
  100.         writeln('s - sterge un elev din lista');
  101.         writeln('q - termina executia programului');
  102.         readln(option);
  103.         case option of
  104.             'c': initializeList();
  105.             'p': printList();
  106.             'a': begin
  107.                 writeln();
  108.                 write('Introdu numele noului elev: ');
  109.                 readln(name);
  110.                 write('Introdu nota lui medie: ');
  111.                 readln(grade);
  112.                 addItem(name, grade);
  113.             end;
  114.             's': begin
  115.                 writeln();
  116.                 write('Introdu numele elevului: ');
  117.                 readln(name);
  118.                 removeItem(name);
  119.             end;
  120.         end;
  121.     until option = 'q';
  122.  
  123. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement