Помощь - Поиск - Пользователи - Календарь
Полная версия: файлы, записи.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Евгения
Помогите пожалуйста найти ошибку в курсовике..
Проблема, после ввода данных в таблицу отображаются только последняя введенная фамилия. После сохранения в файл, сохраняется тоже только последняя запись.
Задание:
1 Оформить ввод исходных данных в файл данных. Отсортировать данные по суммарному кол-ву часов в порядке возрастания. Результаты напечатать в файл в след. виде:
Код

____________________________________________________________________
ФИО               Лекции                Пpактики             Всего
             ________________________________________              
                 час          %         час       %          часов
____________________________________________________________________
fam             kol1         pr1        kol2      pr2         kol
____________________________________________________________________
В среднем                    -                     -           -
____________________________________________________________________

Нажмите для просмотра прикрепленного файла
Romtek
В функции Proverka неверное определение существования файла.
Надо сделать так:
Код
function FileExists(str:string): boolean;
var
 ff: text;
begin
 assign(ff,str);
 {$I-}
 reset(ff);
 {$I+}
 if IORESULT=0 then
 begin
   close(ff);
   FileExists:=true;
 end
 else FileExists:=false;
end;


А не лучше ли было прикрепить архив с исходником?
Romtek
Проверка на наличие фамилии в файле делается так:
Код
while not EOF(F) do
begin
 read(F, rec);
 if rec.fio=fio then
 begin
 {...}
 end;
end;
Altair
в procedure SaveTable;
заменить

Код
TextColor(red);
Writeln('Фаил таблицы:');
NAME:='';
WHILE NAME='' DO readln(name);


на

Код
TextColor(red);
Writeln('Фаил таблицы:');
readln(name);
Евгения
Спасибо... rolleyes.gif
Romtek
Здесь ещё уйму чего можно делать.
Romtek
Дальше:
выводится только последняя запись, т.к. ты просто выводишь за пределами цикла
Romtek
Чуть лучше smile.gif
Евгения
Пасябки.. А я тут уснула не надолго.... :p2:
Romtek
Вот ещё обновлённый вариант.
Может и не последний.

Но на сегодня точно хватит!
Студент
ХВАТИТ ЗДЕСЬ ЛАЗАТЬ, УХОДИ!!!!!!!!!!!!!!

модератор
Еще один такой пост и Студент пойдет в баню...

Модератор 2 (Oleg_Z):
1. GLuk, подписывайся, тут 2 модера (про меня не забывай smile.gif )
2. А как ты его можешь забанить?
to СТУДЕНТ
GLuk прав!



1. Какая разница, думаю ты сделал бы тоже самое, в смысле с предупреждением.. (но впредь буду подписываться)
2. Никто не говорил, что буду его банить его буду именно я... ;)
Евгения
Чтобы посчитать в среднем нужно поставить счетчик на количество фамилий и 2 переменные чтоб считали значеия количество лекций и практик ?
подскажите пожалуста как это правильнее сделать... :p2:
Romtek
Count - кол-во преподов
Practice_Total - общее кол-во практик у всех преподов
Practice_Average - среднее кол-во практик у всех преподов
Код
Practice_Average:=Practice_Total/Count;
Theory_Average:=Theory_Total/Count;
Romtek
В цикле (при считывании записей из файла) складываешь все практики, лекции и людей, потом делишь на кол-во тех самых людей.

Код
Practice_Total:=0;
Theory_Total:=0;
while Not EOF(F) do
begin
 read(F,rec);
 inc(Practice_Total, практик_у_препода); { inc(k,n);  <=>  k:=k+n; }
 inc(Theory_Total, лекций_у_препода);
 inc(Count);
 {...}
end;
Practice_Average:=Practice_Total/Count;
Theory_Average:=Theory_Total/Count;
Евгения
Спасибочкиsmile.gif))))
Евгения
Помгите пожалуйста исправить 2 бага.. Срок сдачи через 5 часов

Один при сохранении в файл теряется среднее значение (kol1_average и kol2_average), в таблицу вносятся нули...

Второй как правильно сделать ограничение...

Исходник прилагаю...
Altair
первый глюк попробуй исправить так
Цитата
Writeln(TXT);
      Writeln(TXT, translate(' ‚ бpҐ¤­Ґ¬:'),
    kol1_Average:5:1,kol2_average:26:1);

Это надо изменить. убери первую строку writeln(txt);
или замени ее на writeln(txt,' ');
второй оператор тоже какой-то навороченный, у меня нет сейчас компилера, не могу проверить, но мне кажется это из-за него теряется значение, разбей его на несколько вот так:
Цитата
write(txt,translate(' ‚ бpҐ¤­Ґ¬:')); 
и так далее, т.е. на более простые.
А какие проблеммы с ограничением?
Romtek
Oleg_Z , эту прогу я уже помог доделать. Курсовик Евгения
уже может даже сдала.


ОК. Я не знал.
Евгения
Огромное спасибо Romtek

Сегодня сдала курсовик на 4.. почему на 4?
Преод просто повредничала и сказала, что у меня используется много функций которые она не давала
Romtek
Я рад был помочь. smile.gif
Цитата(Евгения)
Преод просто повредничала и сказала, что у меня используется много функций которые она не давала
Она просто дура blink.gif
Так НАДО программировать.

Кстати, ты хотела, чтобы я тебе пояснил некоторые вещи по курсовику. Желательно, чтобы ты их понимала.
Werwolf86
Чистый шестой фак господа! :D
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.