Подскажите, где ошибка
редставить данные о кафедрах института в виде массива записей со структурой :
кафедра номер кафедры ЗавКафедры кол-во сотрудников 1)напишите процедуры заполнения/вывода содержимого данного массива 2)напишите процедуру вывода сведений о кафедрах на которых работает не более N человек в формате ( номер кафедры : кол-во сотрудников). список должен быть отсортирован в порядке возрастания числа сотрудников. задача все делает ,но не по порядку возрастания числа сотрудников. преподаватель сказал одну стоку поменять что то не очень понимаю какую . type sot=record kaf:string; num_K:integer; zav_K:string; kol_sot:integer; end; mas=array[1..3] of sot; var m:mas; n:integer; procedure zap(var m:mas); var i:integer; begin for i:=1 to 3 do begin write('kafedra? '); readln(m[i].kaf); write('zaved_Kaf? '); readln(m[i].zav_K); write('kol_sotr? '); readln(m[i].kol_sot); write('nomer_kaf? '); readln(m[i].num_K); end; end; procedure vivod (var m:mas); var a:mas;i,k:integer;r:sot; begin for i:=1 to n do begin a[k]:=m[i]; for i:=1 to n-1 do if m[i+2].kol_sot<m[i+1].kol_sot then begin r:=m[i+1]; m[i+1]:=m[i]; m[i]:=r end; end; for i:=1 to 3 do begin writeln('Êàôåäðà:',m[i].kaf); writeln ('Çàâ:',m[i].zav_K); writeln ('Êîë-âî:',m[i].kol_sot); writeln ('¹',m[i].num_K); end; end; begin zap(m); vivod (m); end. |
Вынужден с сожалением констатировать, что процедура упорядочения и вывода содержит грубейшие ошибки:
Цитата:
Const n=3; а потом всюду явные тройки убрать, заменив их на n. Цитата:
Цитата:
Еще ошибка: в процедуре vivod параметр m является входным, а не выходным, а потому var перед ним - не допустим. И вообще, именовать параметры подпрограмм одинаково с глобальными хоть и допустимо, но является дурным тоном и приводит к путанице и ошибкам. В случае процедуры vivod на мой взгляд параметр вообще не нужен, поскольку вы работаете с глобальным массивом m. Предлагаю вариант грамотной реализации: Код:
procedure vivod; |
Часовой пояс GMT +4, время: 08:02. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.