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

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

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

> Списки, Считать с файла
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Пионер
**

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

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


оказывается мне ещё надо это все разместить в типизированном файле.т.е надо его создать и внести туда head2,tail2 ) т.е строки в новом файле должны выглядеть так:
Цитата

Сидоров Василий Васильевич 5 5 4 4.7
Юрьев Алексей Юрьевич 4 5 5 4 4.5

получается надо создать файл и разместить всё это в нём.Это делается так?

begin
...
....
head2:=nil;
assign(n,'sot2.txt');
rewrite(n)
while p<>nil do begin
write(n,{???});
p:=p^.next;
end{while}
close(n);
end.


Добавлено через 11 мин.
и всё-таки я думаю,что я как всегда намудрил в программе. blink.gif вот программа:
Прикрепленный файл  1_1.PAS ( 3.77 килобайт ) Кол-во скачиваний: 408

Вот то,на чём тестил:
Прикрепленный файл  SOT.TXT ( 162 байт ) Кол-во скачиваний: 400

заранее благодарен за помощь!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 29.03.2024 0:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name