Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с написанием программы на Pascal (в чём косяк?).

Schmarotzer Мастер (1549), закрыт 11 месяцев назад
Задание: В одномерном массиве типа TPeople находится информация о N студентах гр. з-81. Найти всех студентов одного роста.
Type
Tpeople = record
Name, SurName: string[30];
Height: byte;
end;

Программа: https://pastebin.com/f8ppELB6
Лучший ответ
Андрей Высший разум (437108) 6 лет назад
У тебя слишком много лишних действий. Всё намного проще:

for j := 1 to n-1 do begin
for i := j + 1 to n do
if mas[j].Height = mas[i].Height then
writeln(mas[j].Name, ' ', mas[j].Surname, ' и ', mas[i].Name, ' ', mas[i].Surname, ' одного роста')
end

Но в этом случае буду выведены все пары студентов одного роста (без повторов). Если же нужно списки, то лучше сначала отсортировать массив по росту - тогда все студенты одного роста окажутся рядом.
SchmarotzerМастер (1549) 6 лет назад
а почему на моменте:
writeln(' Введите через пробел имя и фамилию студента ');
write(' --> ');
readln(name1,SurName1);
writeln;
при первом вводе readln проскакивает. То есть я первого студента не могу вбить, только рост для него. Со второго ввод нормальный.
Подправил: https://pastebin.com/xfY1Rtez
Андрей Высший разум (437108) Потому, что выше у тебя стоит read(n);. И потому Pascal считает, что ввод продолжается и заносит в name,Surname всё, что находится между введённым в n числом и переводом строки (т. е. пустые строки). Замени read(n); на readln(n);
Остальные ответы
Похожие вопросы