13.05.2011, 21:07 | #1 (permalink) |
Новичок
Регистрация: 13.05.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Помогите отсортировать. Записи
Не могу отсортировать min количество кв.метров на человека. Спасибо! program sp; uses crt; const n=3; type spisok=record fio:string; kolchel:integer; kolkvmetrov:real; metrnachel:real; end; var i,K:integer; min:real; rabotnik:array[1..n] of spisok; begin clrscr; i:=0; for i:=1 to n do with rabotnik[i] do begin writeln('vvedite svedenia o rabotnike'); writeln('vvedite fam, name, otch'); readln(fio); writeln('vvedite kolichestvo chel'); readln(kolchel); writeln('vvedite kolichestvo kvad.metrov'); readln(kolkvmetrov); metrnachel:=kolkvmetrov/kolchel; end; write('K:='); readln(K); writeln('spisok rabotnikov:'); min:=rabotnik[1].metrnachel; for i:=1 to n do begin if rabotnik[1].metrnachel<=min then begin min:=rabotnik[i].metrnachel; write(rabotnik[i].fio,' '); write('kolichestvo kvadrat. metrov na 1 cheloveka:',' '); write(min,' '); end; end; readln; end. |
13.05.2011, 21:07 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Представлю вашему вниманию схожие с вашей темы Записи Помогите разобраться с обновлением и удалением записи в FoxPro 9 Паскаль. Записи Помогите создать форму по вводу новой записи в Excel |
13.05.2011, 21:37 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Главная ошибка - в цикле сравнения должно быть не
if rabotnik[1].metrnachel<=min then, а if rabotnik[i].metrnachel<=min then Кроме того, подправил и подчистил программу, например, убрал в начале абсолютно ненужное обнуление переменной цикла (i:=0), выбросил K - оно не используется, отредактировал вывод - вместо write('kolichestvo kvadrat. metrov na 1 cheloveka:',' '); write(min,' '); сейчас write('kolichestvo kvadrat. metrov na 1 cheloveka: '); writeln(min:5:1); . Итого: Код:
program sp; uses crt; const n=3; type spisok=record fio:string; kolchel:integer; kolkvmetrov:real; metrnachel:real; end; var i:integer; min:real; rabotnik:array[1..n] of spisok; begin clrscr; for i:=1 to n do with rabotnik[i] do begin writeln('vvedite svedenia o rabotnike'); writeln('vvedite fam, name, otch'); readln(fio); writeln('vvedite kolichestvo chel'); readln(kolchel); writeln('vvedite kolichestvo kvad.metrov'); readln(kolkvmetrov); metrnachel:=kolkvmetrov/kolchel; end; writeln('spisok rabotnikov:'); min:=rabotnik[1].metrnachel; for i:=1 to n do begin if rabotnik[i].metrnachel<=min then begin min:=rabotnik[i].metrnachel; write(rabotnik[i].fio,' '); write('kolichestvo kvadrat. metrov na 1 cheloveka: '); writeln(min:5:1); end; end; readln; end. |
13.05.2011, 21:56 | #3 (permalink) | |
Новичок
Регистрация: 13.05.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
Получается если min у второго работника, то в выводе он не отображается. |
|
13.05.2011, 22:26 | #5 (permalink) |
Новичок
Регистрация: 13.05.2011
Сообщений: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо!!!Vladimir_S
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|