Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2016, 20:59   #1
xfdhjdgh
Новичок
Джуниор
 
Регистрация: 21.12.2016
Сообщений: 1
По умолчанию помогите исправить программу не выводит результат в чем может быть ошибка

Код:
type
	rez=record
	fam, im: string;
	a,b,c,d: integer;
	end;
var fail: file of rez;
x:rez; i,n: integer; mas: array [1..3] of rez;
begin
	assign(fail,'fail.dat');
readln(n);
rewrite(fail);

for i:=1 to n do begin
	readln(x.fam);
	readln(x.im);
	readln(x.a);
	readln(x.b);
	readln(x.c);
	readln(x.d);
	write(fail,x);
	end;
close(fail);
reset(fail);
while not(eof(fail)) do begin
read(fail,x);
if ((x.a+x.b+x.c+x.d)>(mas[1].a+mas[1].b+mas[1].c+mas[1].d)) then
	mas[1]:=x;
if ((x.a+x.b+x.c+x.d)>(mas[2].a+mas[2].b+mas[2].c+mas[2].d)) then
	mas[2]:=x;
if ((x.a+x.b+x.c+x.d)>(mas[3].a+mas[3].b+mas[3].c+mas[3].d)) then
	mas[3]:=x;
end;
for i:=1 to n do begin
writeln(mas[i].fam);
writeln(mas[i].im);
writeln(mas[i].a);
writeln(mas[i].b);
writeln(mas[i].c);
writeln(mas[i].d);
end;

end.


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE]
(это кнопочка на панели форматирования с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 22.12.2016 в 00:03.
xfdhjdgh вне форума Ответить с цитированием
Старый 21.12.2016, 21:26   #2
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Вся эта портянка - одна сплошная ошибка, и искать в этой галиматье смысл невозможно. Сначала читаются в цикле с клавиатуры элементы записи, каждый раз затирая предыдущее значение. При этом зачем-то открывается и закрывается файл, к которому обращения нет. Потом из этого файла, в котором неизвестно что, читается и потом сравнивается с массивом, в котором неизвестно что.
"О, дайте мне, дайте скорее вина -
Рассказывать больше нет мочи" . ©
Даю алгоритм решения этой задачи :
- по возможности внятно ( сомневаюсь ) изложить задание, не оскорбляя Паскаль своими экзерцисами
- во фрилансе бьем челом - напишите за меня, темного - и сумма прописью. Бо такой вынос мозга требует моральной компенсации хотя бы в размере пузырька коньяка средней паршивости.
digitalis вне форума Ответить с цитированием
Старый 21.12.2016, 21:41   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Это обфускация кода называется
Данные не затираются, они как раз в файл записываются после заполнения полей
Код:
write(fail,x);
Действительно, неплохо бы увидеть задание и данные которые вводятся.

Код:
for i:=1 to n do begin
writeln(mas[i].fam);
тут n должно быть не более 3? Или что?
eoln вне форума Ответить с цитированием
Старый 21.12.2016, 22:26   #4
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Пардон, эту строчку я недосмотрел
Код:
write(fail,x);
digitalis вне форума Ответить с цитированием
Старый 22.12.2016, 00:05   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

xfdhjdgh, что должна делать программа?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.12.2016, 10:04   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

В этом месте предусмотрено присвоение записи элементу массива только если сумма оценок больше суммы оценок ранее записанной записи:
Код:
if ((x.a+x.b+x.c+x.d)>(mas[1].a+mas[1].b+mas[1].c+mas[1].d)) then
	mas[1]:=x;
if ((x.a+x.b+x.c+x.d)>(mas[2].a+mas[2].b+mas[2].c+mas[2].d)) then
	mas[2]:=x;
if ((x.a+x.b+x.c+x.d)>(mas[3].a+mas[3].b+mas[3].c+mas[3].d)) then
	mas[3]:=x;
Вначале массив содержит нули. Первая запись попадет во все элементы массива. Следующая запись, если сумма оценок в ней больше ранее записанной, перезапишет все элементы массива и т.д.
Таким образом, в элементах массива будет запись только с максимальной суммой оценок.
Как поступить? Сформулировать задачу и выложить сюда ...


Как-то так, ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 22.12.2016, 11:19   #7
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,537
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Вначале массив содержит нули
Это не факт. Стандартом языка не гарантируется начальная инициализация объявленных переменных, это - забота юзера.
Однако ТСу это уже глубоко до Фени - прокукарекал - и долбитесь вы конем.
digitalis вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[РЕШЕНО] Помогите в чем может быть ошибка? Ошибка ';' expected but 'BEGIN' found АлександрDelphi Общие вопросы Delphi 7 06.03.2016 19:25
Подскажите, в чем может быть ошибка 1alex Помощь студентам 1 20.06.2015 14:07
В чем может быть ошибка MangoDGJ Общие вопросы C/C++ 3 02.11.2014 17:17
в чем может быть ошибка? Imposters Общие вопросы .NET 4 23.11.2012 14:11
В чем может быть ошибка? nervniy БД в Delphi 2 21.10.2010 15:47