IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Списки, Считать с файла
Rom1k
сообщение 16.05.2007 14:59
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 119
Пол: Мужской

Репутация: -  0  +


Считать список с файла(.txt) и вывести его на экран.
в файле дано
Фамилию имя отчество 4 оценки и дополнительный балл(если он есть,тогда занести,если его нет,оставить пустым) и подсчитать средний балл.

Пример работы программы:

Цитата

Иванов Иван Иванович 3 4 3 3 3
Петров Петр Петрович 3 4 4 2
Юрьев Юрий Юрьевич 2 2 3 4


Вот что программа должна выводить на экран:
Цитата

ФИО оценка 1 оценка 2 оценка 3 доп. балл средний балл
Иванов Иван Иванович 3 4 3 3 3.2
Петров Петр Петрович 3 4 4 0 3.25
Юрьев Юрий Юрьевич 2 2 3 0 2.75


вот текст программы.Я думаю,что у меня даже с файла считывает неправильно:

program m1;
Uses CRT;
type
 PData = ^TData;
 TData = record
  fam,imya,otch:string;  {Фамилия, имя, отчество}
  marks:array[1..3] of integer; {3 оценки}
  bal:byte;   {Дополнительный балл}
  SB:real;    {Средний балл}
  next:PData;
 end;
Var
 Head,Tail,P:PData;
 i:integer;
 N:byte;
 nn:byte;
{--------------------------------------------------------------------------}
procedure vvod(var Rec:TData;var n:byte);
  var
   s:real;{Сумма 3 оценок}
   p:integer;{Позиция в строке ввода}
   error:integer;{код ошибки при преобраз. строки в число}
   f:text;
   st:string;
   bals:string;{Строки,содерж bal}
   Smarks:array[1..3] of string;
  Begin
    Assign (f,'sot.txt');
   reset(f);
   s:=0;
   p:=pos(' ',st);   {Р присваивает позицию пробела}
   while not eof (f) do {Пока не конец файла,делаем}
   begin
    readln(f,st);
    rec.fam:=copy(st,1,p-1);  {Вырезаем фамилию}
    delete(st,1,p);
    rec.imya:=copy(st,1,p-1); {Вырезаем имя}
    delete(st,1,p);
    rec.otch:=copy(st,1,p-1); {Вырезаем отчество}
    delete(st,1,p);
    for i:=1 to 3 do          {От 1ой до 3ей оценки}
    begin
     Smarks[i]:=copy(st,1,p-1);          {Вырезаем оценку}
     val(Smarks[i],rec.marks[1],error);  {Преобразовываем строку в число}
     s:=s+rec.marks[i];                  {Накапливаем сумму оценок}
     delete(st,1,p);                     {Удаляем i оценку из строки}
    end;
    bals:=copy(st,1,p-1);
    val(bals,rec.bal,error);
    if rec.bal = 0 then {Если дополнительного балла нет}
     rec.sb:=s/3
    else
     rec.sb:=s+rec.bal/4;
    n:=n+1;
    close(f);
   end;{while}
end;{vvod}
{--------------------------------------------------------------------------}
procedure add(var nn:byte);
var
 p:PData;
begin
 Head:=nil;
 Tail:=nil;
   new(p);
   vvod(p^,nn);
   for i:=1 to nn do
   begin
    if Head=nil then head:=p
    else tail^.next:=p;
    Tail:=p;
    p^.next:=nil;
   end;{for}
end;{add}
{--------------------------------------------------------------------------}
procedure prosmotr(var nn:byte);
var
 p:pdata;
 i,v:byte;
begin
 WriteLn('Результат: ');
 P:=Head;
 While P<>nil do
 for v:=1 to nn do
  begin
   Write(n,') ',P^.fam:3,p^.imya:3,p^.otch:3);
   for i:=1 to 3 do
    write(p^.marks[i]:3);
    writeln(p^.bal:3,' ',p^.SB:4:1);
    P:=P^.next;
    v:=v+1;
  end;{while}
end;{prosm}
{--------------------------------------------------------------------------}
Begin{main}
 clrscr;
 add(n);
 prosmotr(n);
 readkey;
END.



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Rom1k   Списки   16.05.2007 14:59
volvo   Парсит строку точно неправильно... Вот так можно п...   16.05.2007 17:09
Rom1k   Что-то с файлом не то.Он его не читает.Что я там м...   16.05.2007 17:23
volvo   :blink: А зачем ты Close(f) внутрь цикла While за...   16.05.2007 17:29
Rom1k   Убрал.А всё равно ничего не выводит.Я думаю не пра...   16.05.2007 17:37
volvo   Погоди... У тебя задание на списки, так? Тогда наб...   16.05.2007 18:24
Rom1k   щас.попробую.спасибо большое.если что не будет пол...   16.05.2007 18:44
Rom1k   что-то вот это я не понимаю :blink: Что сдесь l...   16.05.2007 19:14
volvo   Ты же делал нечто подобное... Я, кстати, немного о...   16.05.2007 19:31
Rom1k   а это я понял.тут мы заполняем список.я не понимал...   16.05.2007 20:11
volvo   Ну, допустим сделал ты ДАЛЕКО не все, что я сказал...   16.05.2007 21:47
Rom1k   вау...да.3 оценки вводить надо.   16.05.2007 21:50
Rom1k   Смотрите,когда я ввожу так Он мне выводит : http...   16.05.2007 22:41
volvo   Ты ориентируешься по пробелам, когда читаешь числа...   16.05.2007 23:03
Rom1k   ааа...точно.а я сразу не догадался,спасибо большое...   16.05.2007 23:22
Rom1k   аааа....мне ещё дали дополнительное условие.сформи...   17.05.2007 0:22
volvo   Да, именно так...   17.05.2007 0:27
Rom1k   вроде бы всё правильно,но опять он ничего не вывод...   17.05.2007 0:57
volvo   var head2, tail2, p: pdata; ... head2 := nil; ...   17.05.2007 1:06
Rom1k   volvo спасибо Вам большое.Вы не представляете,как ...   17.05.2007 8:19
Rom1k   оказывается мне ещё надо это все разместить в типи...   17.05.2007 18:46
volvo   begin ... assign(n,'sot2.dat'); { ...   17.05.2007 19:09
Rom1k   ну,так получилось.Мне просто преподаватель условие...   17.05.2007 19:20
volvo   Я что, тепепат, знать как именно ты описываешь фай...   17.05.2007 19:24
Rom1k   а как его надо описать? n:text ? много там надо пе...   17.05.2007 19:35
Rom1k   погмогите пожалуйста(   17.05.2007 20:33
volvo   Я уже говорил тебе, что ты в задании делаешь одно,...   17.05.2007 20:43
Rom1k   ну,да.мне нужно в типизированном файле.Тогда как е...   17.05.2007 20:45
volvo   Тогда объяви var n: file of TData; и будет тебе сч...   17.05.2007 20:53
Rom1k   volvo если Вам не тяжело, вы можете посмотреть мою...   17.05.2007 21:00
volvo   Ну я же тебе говорил, что просмотреть типизированн...   17.05.2007 21:38
Rom1k   нет,мне просто надо исправить,чтобы в типизированн...   17.05.2007 21:41
volvo   Нельзя сделать так, чтобы выводилось "нормаль...   17.05.2007 21:54
Rom1k   так.значит,смотрите.с меня не будут требовать тогд...   17.05.2007 22:06
volvo   Ну, правильно, убери эту строку, я же компилирую п...   17.05.2007 22:30


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 24.07.2025 9:13
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"