|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
|
Опции темы | Опции просмотра |
28.05.2011, 14:31 | #1 (permalink) |
Новичок
Регистрация: 23.05.2011
Сообщений: 4
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Подскажите, где ошибка
кафедра номер кафедры ЗавКафедры кол-во сотрудников 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. |
28.05.2011, 14:31 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Проблема встречалась и ранее, вот, что нашлось Подскажите по HDD Подскажите, что означает ошибка? Подскажите, что это? |
28.05.2011, 20:02 | #2 (permalink) | |||
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Вынужден с сожалением констатировать, что процедура упорядочения и вывода содержит грубейшие ошибки:
Цитата:
Const n=3; а потом всюду явные тройки убрать, заменив их на n. Цитата:
Цитата:
Еще ошибка: в процедуре vivod параметр m является входным, а не выходным, а потому var перед ним - не допустим. И вообще, именовать параметры подпрограмм одинаково с глобальными хоть и допустимо, но является дурным тоном и приводит к путанице и ошибкам. В случае процедуры vivod на мой взгляд параметр вообще не нужен, поскольку вы работаете с глобальным массивом m. Предлагаю вариант грамотной реализации: Код:
procedure vivod; var i,j:integer; r:sot; begin for j:=1 to n do for i:=1 to n-j do if m[i+1].kol_sot<m[i].kol_sot then begin r:=m[i+1]; m[i+1]:=m[i]; m[i]:=r end; for i:=1 to n do begin writeln('Êàôåäðà ;:',m[i].kaf); writeln ('Çàâ:',m[i].zav_K); writeln ('Êîë-âî:',m[i].kol_sot); writeln ('¹',m[i].num_K); end; end; |
|||
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
Опции темы | |
Опции просмотра | |
|
|