Var Info array of record
після того, як ми прочитали фактичну кількість учнів N, у циклі зчитуємо та розшифровуємо інформацію про них, зберігаючи всі дані у структурах
for i:=1 to N do begin
спочатку в поліnameчергової структури записуємо порожній рядок''(в якому немає жодного символу, довжина дорівнює нулю)
потім зчитуємо символи прізвища і одразу приписуємо їх у кінець поляname:
Info[i].name := Info[i].name + c;
потім також читаємо з вхідного потоку ім'я, до пробілу, і записуємо його в кінець того ж поля name :
Info[i].name := Info[i].name + c;
зауважте, що ці два цикли однакові, тому введення імені та прізвища можна записати у вигляді вкладеного циклу так:
Info[i].name := Info[i].name + c;
важливо!зверніть увагу, що для організації внутрішнього циклу використовується інша змінна,k(а неi, тому щоi– змінна головного циклу, вона позначає номер поточного учня)
тепер у вхідному потоці залишилися три числа, які ми можемо послідовно зчитувати в цілу зміннуmark, а потім додавати до поляInfo[i].sum:
for k:=1 to 3 do begin
Info[i].sum := Info[i].sum + mark;
остання командаreadlnпропускає всі символи до нового рядка (з цього ми прочитали все, що потрібно)
ось повний цикл введення даних, після його закінчення всі вихідні дані будуть записані в першіNзаписів масивуInfo:
for i:=1 to N do begin
Info[i].name := Info[i].name + c;
for k:=1 to 3 do begin
Info[i].sum := Info[i].sum + mark;
Пошук трьох найгірших даних:
тепер треба вигадати,як за один прохід по масиву знайти три найгірші результати;
на папірці вести записи у три стовпчики, у першому записувати мінімальне число, у другому – наступне за величиною, у третьому – «третє мінімальне»
спочатку пишемо перше число в перший стовпчик, воно мінімальне, тому що інших ми не ще бачили; нехай це число 14:
нехай наступне число – 12; воно менше мінімального, тому його потрібно записувати в перший стовпець, а «старе» мінімальне число «переїде» у другий стовпець
нехай далі йде число 10 - тепер воно стане мінімальним, його потрібно записувати у перший стовпець; при цьому 12 «переїде» з першого стовпця до другого, а 14 – з другого до третього
нехай наступне число – 11; воно більше мінімального, але менше «другого», тому його потрібно поставити у другий стовпець; число 12 з другого стовпця переміщається до третього, а число 14 з третього стовпця видаляється з кандидатів у «три мінімальні»
залишається лише перекласти цей алгоритм на мову програмування
виділимо у пам'яті три цілих змінних:min1(мінімальний),min2(«другий мінімальний»),min3(«третій мінімальний»), у вигляді початкових значень запишемо в кожну з них число, що явно перевищує максимальну можливу суму трьох оцінок, наприклад, 20 (5+5+5)