Составить программу, которая находит самого молодого научного сотрудника и выдает все сведения о нем - Pascal ABC
Формулировка задачи:
Будьте добры!Никак не могу написать программу.
Нужно написать с помощью записей.
Составить программу, которая находит самого молодого научного сотрудника и выдает все сведения о нем. Если таких сотрудников несколько, то сообщить обо всех. Подсчитать в этом случае их количество.
Ввод данных задаются с клавиатуры. Вывести исходные данные в виде таблицы и вывод данных в виде таблицы тоже.
ФИО |
Учёная степень |
Год рождения |
Количество статей |
Петров Г. В. | Доцент |
1975 |
7 |
... |
Решение задачи: «Составить программу, которая находит самого молодого научного сотрудника и выдает все сведения о нем»
textual
Листинг программы
uses crt; type sotr=record fio:string[15]; stp:string[10]; grz:integer; kst:integer; end; const nmax=20; var a:array[1..nmax] of sotr; n,i,k,min:integer; begin repeat write('Количество сотрудников от 2 до ',nmax,' n='); readln(n); until n in [2..nmax]; writeln('Введите данные о сотрудниках'); min:=0; k:=1; for i:=1 to n do begin writeln('Сотрудник ',i); with a[i] do begin write('Фамилия И.О.: ');readln(fio); write('Ученая степень: ');readln(stp); write('Год рождения: ');readln(grz); if grz=min then inc(k) else if grz>min then begin min:=grz; k:=1 end; write('Количество статей: ');readln(kst) end; end; clrscr; writeln('Полный список сотрудников'); writeln('--------------------------------------------------------'); writeln('| | Ученая | |Количество|'); writeln('| Ф.И.О | |Год рождения| |'); writeln('| | степень | | статей |'); writeln('--------------------------------------------------------'); for i:=1 to n do with a[i] do begin gotoXY(1,whereY);write('| ',fio); gotoXY(19,whereY);write('| ',stp); gotoXY(32,whereY);write('|',grz:7); gotoXY(45,whereY);write('|',kst:6); gotoXY(56,whereY);writeln('|'); end; writeln('--------------------------------------------------------'); write('Press Enter'); readln; if k=1 then writeln('Самый молодой сотрудник') else writeln('Самые молодые сотрудники'); writeln('--------------------------------------------------------'); writeln('| | Ученая | |Количество|'); writeln('| Ф.И.О | |Год рождения| |'); writeln('| | степень | | статей |'); writeln('--------------------------------------------------------'); for i:=1 to n do with a[i] do if grz=min then begin gotoXY(1,whereY);write('| ',fio); gotoXY(19,whereY);write('| ',stp); gotoXY(32,whereY);write('|',grz:7); gotoXY(45,whereY);write('|',kst:6); gotoXY(56,whereY);writeln('|'); end; writeln('--------------------------------------------------------'); if k>1 then write('Их количество=',k) end.
Объяснение кода листинга программы
- Создается тип данных sotr, который представляет запись о научном сотруднике.
- Создается переменная nmax, которая определяет максимальное количество сотрудников, которое можно хранить в массиве a.
- Создается переменная a, которая представляет массив для хранения данных о сотрудниках.
- Задаются начальные значения переменной n, i, k, min.
- В цикле повторяется запрос количества сотрудников и ввод их данных до тех пор, пока n не будет равно максимальному количеству сотрудников.
- Внутри цикла выводится информация о каждом сотруднике, включая его фамилию, имя, ученую степень, год рождения и количество статей.
- После завершения цикла выводится полный список сотрудников.
- Выводится информация о самом молодом сотруднике или о нескольких самых молодых сотрудниках, если есть несколько сотрудников с одинаковым годом рождения.
- Завершается программа.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д