Содержание
Задача 3. 3
Задача 4. 5
Задача 5. 7
Задача 6. 8
Задача 3.
Решение
uses crt;
Const
N=3;
Type
Vedomost=Record{Запись ведомость}
fio:string;{фамилия}
pr1:integer;{1 оценка}
pr2:integer;{2}
pr3:integer;{3}
end;
Var
mas:array [1..N] of Vedomost;{массив списков}
o:array [1..N] of string;{массив индексов повышенной и обычной стипендии}
i,j:integer;{параметры цикла}
sr:real;{средний балл}
begin
clrscr;
for i:=1 to N do{ввод данных}
with (mas[i]) do
begin
writeln('Vvedite FIO studenta');
readln(fio);
writeln('Ocenka po pervomu predmetu');
readln(pr1);
writeln('Ocenka po vtoromu predmetu');
readln(pr2);
writeln('Ocenka po tret''emu predmetu');
readln(pr3);
writeln;
end;
clrscr;
for i:=1 to N do
begin
with mas[i] do
begin
if (pr1=5) and (pr2=5) and (pr3=5) then o[i]:='p' {поиск отличников}
else
if (pr1>3) and (pr1>3) and (pr3>3) then o[i]:='o'{поиск хорошистов}
else
o[i]:='n';
sr:=(pr1+pr2+pr3)/3;{подсчет среднего балла}
write(fio,' ','Ocenki:',pr1:4,pr2:4,pr3:4,' sredniy ball:',sr:6:2);{вывод на экран}
writeln;
end;
end;
Writeln('Povishennaya stipendia:');{Вывод студентов с повышенной стипендией}
For i:=1 to n do
if o[i]='p' then writeln(mas[i].fio);
Writeln('Obichnaya stipendia:');{Вывод студентов с обычной стипендией}
writeln;
For i:=1 to n do
if o[i]='o' then writeln(mas[i].fio);
readln;
end.
Пример выполнения программы
Vvedite FIO studenta
Petrov
Ocenka po pervomu predmetu
5
Ocenka po vtoromu predmetu
4
Ocenka po tret'emu predmetu
5
Vvedite FIO studenta
Sidorov
Ocenka po pervomu predmetu
5
Ocenka po vtoromu predmetu
5
Ocenka po tret'emu predmetu
5
Vvedite FIO studenta
Ivanov
Ocenka po pervomu predmetu
3
Ocenka po vtoromu predmetu
3
Ocenka po tret'emu predmetu
3
Petrov Ocenki: 5 4 5 sredniy ball: 4.67
Sidorov Ocenki: 5 5 5 sredniy ball: 5.00
Ivanov Ocenki: 3 3 3 sredniy ball: 3.00
Povishennaya stipendia:
Sidorov
Obichnaya stipendia:
Petrov
Задача 4.
uses crt;
const n=3;
Type
Raspisanie=Record{список расписание}
day:string;
k:integer;
tn:real;
tk:real;
f:string;
p:string;
end;
Var
mas:array [1..N] of Raspisanie;
i:integer;
procedure vivod(a:Raspisanie);{процедура вывода записи на экран}
begin
with a do
begin
writeln('Nazvanie predmeta ',p);
writeln('Den'' nedeli: ',day);
writeln('Kolichestvo par: ',k);
writeln('Vremya nachala ',tn:5:2);
writeln('Vremya konca ',tk:5:2);
writeln('Familia prepodavatelya: ',f);
writeln;
end;
end;
begin
clrscr;
for i:=1 to N do{ввод данных}
with (mas[i]) do
begin
writeln('Den'' nedeli:');
readln(day);
writeln('Kolichestvo par:');
readln(k);
writeln('Vremya nachala');
readln(tn);
writeln('Vremya konca');
readln(tk);
writeln('Familia prepodavatelya');
readln(f);
writeln('Nazvanie predmeta');
readln(p);
end;
writeln('Informacia otnasyashayasya k Informatike');
for i:=1 to N do
if (mas[i].p='Informatika') then{вывод данных с предметом Информатика}
vivod(mas[i]);
readln;
end.
Задача 5.
Решение.
uses crt;
const n=200;
var s:string;{s-строка}
m:array [1..n] of char;{массив символов}
i,j,x:integer;{параметры циклов}
k:array [1..n] of integer;{массив индексов символов}
sk:string;{строковое представление числа k}
BEGIN
writeln('Vvedite stroku');{ввод строки}
readln(s);
x:=length(s);{определение длины введенной строки}
for i:=1 to x do m[i]:=s[i];
for i:=1 to x do
for j:=1 to x do
if (i<>j) and (m[i]=m[j]) then m[j]:=' ';{обнуление повторяющихся символов}
for i:=1 to x do k[i]:=0;{обнуление индексов}
for i:=1 to x do
for j:=1 to x do
if (m[i]=s[j]) and (s[j]<>' ') then inc(k[i]);{подсчет индексов}
for i:=1 to x do
if k[i]<>0 then begin
str(k[i],sk);
case sk[length(sk)] of{вывод в грамматической форме}
'1','5','6','7','8','9','0': begin
writeln(m[i],'-',k[i],' raz');
end;
'2','3','4': begin
writeln(m[i],'-',k[i],' raza');
end;
end;
end;
readln;
END.
Пример:
Vvedite stroku
aaabbbabbbcccdedd
a-4 raza
b-6 raz
c-3 raza
d-3 raza
e-1 raz Задача 6.
Решение
uses crt;
const n=200;
var s:string;{строка}
m:array [1..n] of char;{массив символов}
i,j,k:integer;
BEGIN
writeln('Vvedite stroku');
readln(s);
for i:=1 to n do m[i]:=s[i];
for i:=1 to n do
for j:=1 to n do
if (i<>j) and (m[i]=m[j]) then m[j]:=' ';{обнуление повторяющихся символов}
k:=0;
for i:=1 to n do
if m[i]<>' ' then begin{подсчет количества каждого символа}
writeln(m[i]);
k:=k+1;
end;
writeln('Vsego ',k-1,' simvolov');{вывод количества}
readln;
END.
Пример выполнения.
Vvedite stroku
aaabbcccddeddd
a
b
c
d
e
Vsego 5 simvolov