View difference between Paste ID: Pz4AUunw and fgVaD8eQ
SHOW: | | - or go back to the newest paste.
1
program rekordy;
2
uses crt;
3
type
4
dziennik=record
5
nr : byte;
6
nazwisko : string[20];
7
ocena_polski : byte;
8
ocena_matematyka : byte;
9
ocena_mepr : byte;
10
srednia : real;
11
end;
12
const
13-
n = 3;
13+
n = 10;
14
ileWklasie = 40;
15-
wybor,nrOsoby,iloscPrzedmiotow : byte;
15+
16-
procedure menu;
16+
x,wybor,nrOsoby,iloscPrzedmiotow,a,b,ktoreMenu,coSkopiuj : byte;
17
procedure menu(ktoreMenu : byte);
18
begin
19
case ktoreMenu of
20
1:begin
21
writeln('1 - wypelnij danej jednej osoby');
22
writeln('2 - wyswietl dane jednej osoby');
23
writeln('3 - wyswietl dane wszystkich osob');
24-
writeln('7 - wyjscie');
24+
25-
write('Twoj wybor: ');read(wybor);
25+
26
writeln('6 - usun rekord');
27
writeln('7 - Wyswietl od do...');
28-
var x,jest : byte;
28+
writeln('8 - sortuj');
29
writeln('9 - wyjscie');
30
write('Twoj wybor: ');read(wybor);end;
31
2:begin  end;
32
end;
33-
          write('Podaj numer osoby: ');readln(osoba[x].nr);
33+
34
procedure wypelnijLosowo;
35
var y,rNr,jest : byte;
36
begin randomize;
37
for x:=1 to n do begin
38
REPEAT jest:=1;
39-
          write('Dodano.')
39+
rNr:=random(ileWklasie)+1;
40-
          end ELSE write('Dziennik zapelniony (liczba osob)');
40+
    for y:=1 to x do begin
41
        if rNr=osoba[y].nr then begin jest:=0;break;end;
42
    end;
43-
var x,jest : byte;
43+
UNTIL jest=1;
44
osoba[x].Nr:=rNr;osoba[x].nazwisko:=chr(random(25)+61);
45
osoba[x].ocena_polski:=random(6)+1;osoba[x].ocena_matematyka:=random(6)+1;
46
osoba[x].ocena_mepr:=random(6)+1;
47
osoba[x].srednia:=(osoba[x].ocena_polski+osoba[x].ocena_matematyka+osoba[x].ocena_mepr)/3;
48
end;
49
end;
50
procedure jednaOsobaWpr;
51
var y,schowek,jest,enda : byte;
52
begin jest:=0;
53
      for x:=1 to n do begin
54
          if osoba[x].nr=0 then begin jest:=1;break;end;end;
55
          if jest=1 then begin
56
          write('Podaj numer osoby: ');
57-
var x,jest : byte;
57+
          readln(schowek);
58
          enda:=1;
59
              for y:=1 to n do begin
60
                  if osoba[y].nr=schowek then begin
61
                  write('Uczen o takim numerze juz istnieje (',osoba[y].nazwisko,')');
62
                  readkey;enda:=0;break;end;
63
              end;
64
          if enda = 1 then begin
65
          osoba[x].nr:=schowek;
66
          write('Wpisz nazwisko: ');readln(osoba[x].nazwisko);
67
          write('Wpisz ocene z polskiego: ');readln(osoba[x].ocena_polski);
68
          write('Wpisz ocene z matematyki: ');readln(osoba[x].ocena_matematyka);
69
          write('Wpisz ocene z mepr-u: ');readln(osoba[x].ocena_mepr);
70-
var x,poz,jest : byte;
70+
71
          write('Dodano.');delay(1500);end;
72
          end ELSE begin write('Dziennik zapelniony (maks: ',n,' osob)');readkey;end;
73
end;
74
procedure jednaOsobaZcz;
75
var jest : byte;
76
begin jest:=0;
77
write('Podaj nr osoby: ');read(nrOsoby);
78
for x:=1 to n do begin
79
    if osoba[x].nr = nrOsoby then begin
80
    write('Nr ',nrOsoby,' to ',osoba[x].nazwisko);
81-
var x,poz,jest : byte;
81+
82
    write(' ocena z matematyki: ',osoba[x].ocena_matematyka);
83
    writeln(' ocena z mepr-u: ',osoba[x].ocena_mepr);write('srednia: ',osoba[x].srednia:2:2);
84
    jest:=1;break;
85
    end;
86
end;if jest=0 then write('Nie ma ucznia o takim numerze.');
87
end; {schowek do 3(2), 7(2), 8(1)}
88
procedure bigSchowek(coSkopiuj : byte);
89
begin
90
case coSkopiuj of
91
1:begin
92-
var x,jest,schowekNumer : byte;
92+
93
2:begin
94
    write('Nr ',osoba[x].nr,' to ',osoba[x].nazwisko);
95
    write(' ocena z polskiego: ',osoba[x].ocena_polski);
96
    write(' ocena z matematyki: ',osoba[x].ocena_matematyka);
97
    writeln(' ocena z mepr-u: ',osoba[x].ocena_mepr);write('srednia: ',osoba[x].srednia:2:2);writeln;
98
end; {wypisywanie}
99
end;
100
end;
101
procedure wysWszystkich;
102
var jest : byte;
103
begin jest:=0;
104
for x:=1 to n do begin
105
    if osoba[x].nr<>0 then begin
106
    coSkopiuj:=2;bigSchowek(coSkopiuj);
107
    jest:=1;
108
    end;
109
end;if jest=0 then write('Pusto...');
110-
menu;
110+
111
procedure najwiekszaSr;
112
var poz,jest : byte;
113-
2:begin jednaOsobaZcz;end;
113+
114-
3:begin wysWszystkich;end;
114+
115-
4:begin najwiekszaSr;end;
115+
116-
5:begin najmniejszaSr;end;
116+
117-
6:begin usunRekord;end;
117+
118
if jest = 1 then begin write('Najwieksza srednia ma nr ',osoba[poz].nr,'. (',osoba[poz].nazwisko);
119-
readkey;clrscr;
119+
120-
UNTIL wybor=7;
120+
121
end;
122
procedure najmniejszaSr;
123
var poz,jest : byte;
124
min : real;
125
begin jest:=0;min:=255;
126
for x:=1 to n do begin
127
    if (osoba[x].srednia<min)AND(osoba[x].srednia<>0) then begin min:=osoba[x].srednia;poz:=x;jest:=1;end;
128
end;
129
if jest = 1 then begin write('Najmniejsza srednia ma nr ',osoba[poz].nr,'. (',osoba[poz].nazwisko);
130
write(') i wynosi ona: ',osoba[poz].srednia:2:2);end
131
ELSE write('Pusto...');
132
end;
133
procedure usunRekord;
134
var jest,schowekNumer : byte;
135
schowekNazwisko : string[20];
136
begin jest:=0;write('Podaj nr osoby: ');read(nrOsoby);
137
for x:=1 to n do begin
138
    if osoba[x].nr=nrOsoby then begin
139
       schowekNumer:=osoba[x].nr;osoba[x].nr:=0;schowekNazwisko:=osoba[x].nazwisko;
140
       osoba[x].nazwisko:='';osoba[x].ocena_polski:=0;
141
       osoba[x].ocena_matematyka:=0;osoba[x].ocena_mepr:=0;osoba[x].srednia:=0;jest:=1;
142
       break;
143
    end;
144
end;
145
if jest=0 then write('Nie ma osoby o tym numerze') ELSE begin write('Numer ',schowekNumer);
146
write('. (',schowekNazwisko,') zostal usuniety z dziennika');end;
147
end;
148
procedure wyswietlOdDo(a,b : byte);
149
begin
150
for x:=a to b do begin
151
    if osoba[x].nr<>0 then begin coSkopiuj:=2;bigSchowek(coSkopiuj);end;
152
end;
153
end;
154
procedure sortowanie;
155
begin
156
157
end;
158
procedure all;
159
begin wypelnijLosowo;
160
iloscPrzedmiotow:=3;
161
REPEAT
162
ktoreMenu:=1;menu(ktoreMenu);
163
case wybor of
164
1:begin jednaOsobaWpr;end;
165
2:begin jednaOsobaZcz;readkey;end;
166
3:begin wysWszystkich;readkey;end;
167
4:begin najwiekszaSr;readkey;end;
168
5:begin najmniejszaSr;readkey;end;
169
6:begin usunRekord;readkey;end;
170
7:begin
171
REPEAT
172
write('Podaj od ktorego nr indeksu: ');read(a);write('Do ktorego numeru indeksu: ');read(b);clrscr;wyswietlOdDo(a,b);
173
UNTIL (a<=b)AND(a>0)AND(b<=n);readkey;end;
174
8:begin end;
175
end;
176
clrscr;
177
UNTIL wybor=9;
178
end;{eng...}
179
begin clrscr;
180
all;
181
end.