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
сообщение 17.05.2007 22:06
Сообщение #2


Пионер
**

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

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


так.значит,смотрите.с меня не будут требовать тогда нормального отображения sot2.dat ? если в задании дано,что файл типизированный?!
Да,и что такое {$mode tp} ???
У меня пишет: Error 17: Invalid compiler directive.
 Оффлайн  Профиль  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

 



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