Комбінований тип
1. Задано список з 30
учнів, для кожного вказані такі дані: прізвище, ім’я, вага, зріст, адреса (record з назви вулиці, номерів
будинку та квартири) та 10 оцінок.
Знайти
а) середню
вагу учнів;
б) максимальний зріст учнів;
в) прізвище та ім’я учня з максимальним зростом;
г) кількість учнів класу з ім’ям Андрій;
д) прізвища та імена учнів, прізвища яких починаються на ‘А’.
program pr1;
type Pupil = record
Surname, Name: string[20];
Vaga:integer;
Zrist: real;
Adress:record
Street:string[15];
House, flat:integer
end;
Marks: array [1..10] of 1..12;
end;
var klass: array[1..30] of Pupil;
I,j:integer;
Begin
{ Вводимо дані }
for i := 1 to 30 do
begin
writeln('Введіть прізвище');
readln(Klass[i].Surname);
writeln('Введіть імя');
readln(Klass[i].Name);
writeln('Введіть вагу');
readln(Klass[i].Vaga);
writeln('Введіть зріст');
readln(Klass[i].Zrist);
writeln('Введіть адресу');
readln(Klass[i].Adress.Street);
readln(Klass[i].Adress.House,
Klass[i].Adress.Flat);
for j:=1 to 10 do
begin
writeln('Введіть оцінку');
readln(Klass[i].Marks[j]);
end;
end;
{Використаємо оператор приєднання для вводу }
for i:=1 to 30 do
with klass[i] of
begin
readln(Surname);
readln(Name);
readln(Vaga, Zrist);
readln(Adress.Street);
readln(Adress.House, Adress.Flat);
for j:=1 to 10 do readln(Marks[j]);
end;
{ а) Знайти середню вагу школярів }
SerVaga := 0;
for i := 1 to 30 do
SerVaga:= SerVaga+Klass[i].Vaga;
SerVaga:= SerVaga /30;
writeln(SerVaga);
{ б) Знайти максимальний зріст }
MaxZrist := 0; {Описати змінну MaxZrist }
for i := 1 to 30 do
if Klass[i].Zrist>
MaxZrist then MaxZrist := Klass[i].Zrist;
writeln(MaxZrist);
{ г) Знайти кількість щколярів на ім'я Андрій }
NameCount := 0;
for i := 1 to 30 do
if Klass[i].Name
= 'Андрій' then NameCount:= NameCount+1;
writeln(NameCount);
{ д) Вивести прізвища та
імена школярів, у яких прізвище починається на літеру ‘А’ }
for i := 1 to 30 do
if Klass[i].SurName[1] =’A then writeln(Klass[i].Surname ,'
',Klass[i].Name);
-------------------------------------------------------------------------------------------------------------------
Продовжуємо цю задачу
{ Знайти кількість щколярів, у яких середня оцінка не менша 8 і не більша 10}
Count := 0;
for i := 1 to 30 do
begin
MarkSum := 0;
for j := 1 to 10 do
MarkSum:=MarkSum+Klass[i].Marks[j]; { inc(MarkSum,Klass[i].Marks[j])
}
AvgMark := MarkSum/10;
if (AvgMark
>= 8) and (AvgMark <= 10) then
Inc(Count);
end;
writeln(Count);
{
Вивести прізвища та імена школярів, у
яких найменша оцінка 10 }
for i := 1 to 30 do
begin
MinMark := 13;
for j := 1 to 10 do
if Klass[i].Marks[j] < MinMark then MinMark
:= Klass[i].Marks[j];
if MinMark = 10 then
writeln(Klass[i].Surname ,' ',Klass[i].Name);
end;
end. {Кінець
програми}
Д/з №1
- Знайти кількість учнів з вагою більше середньої.
- Вивести прізвища та імена учнів, прізвища яких починаються на літери ‘Бо’.
- Знайти кількість учнів, які проживають по вулицях Петлюри та Садова.
- Вивести прізвища учнів, які проживають у будинках та квартирах з парними номерами
Д/з №2 (виконати ті завдання, що не
встигли на уроці)
Знайти
- Середнє арифметичне значення
оцінок кожного учня.
- Максимальну оцінку кожного
учня.
- Середнє арифметичне оцінок по кожному предмету.
- Максимальну оцінку по кожному предмету.
- Вивести прізвища та імена учнів, у яких всі оцінки не менші 10 балів.
- Вивести прізвища учнів, які мають оцінки не нижче 8 балів та прізвища
яких починаються з літер Б або В.
- обчислити середній бал класу і вивести список учнів, які мають
середній бал вищий за середній бал
класу;
- Вивести дані про учня, який
найкраще вчиться.
- Вивести дані учня з ім’ям Андрій, який найкраще вчиться.
Немає коментарів:
Дописати коментар