ПБ
Патийдин Ботирбеков

Как найти сумму нужных чисел в текстовом файле (Паскаль)?!!

Задача такова: Файл содержит группу, предмет, количество неудовлетворительных оценок, полученных группой по этому предмету. Подсчитать общее количество двоек, полученное во всех группах.

Есть кое-какие наброски, но количество двоек так и не выходит. Помогите, ПОЖАЛУЙСТА!! !

uses crt;
type doc=record
grup:string[20];
pred:string[20];
kol:byte;
end;
var FileName:string[8];
f:text;
stroka:string[80];
spisok:string[10];
i,n:integer;
gruppa:doc;
kol:integer;
Begin
writeln('Создание списка');
assign(f,'C:\PABCWork\text3.txt');
rewrite(f);
write('Введите количество групп: ');readln(n);
for i:=1 to n do with gruppa do
begin
write(i,')Группа: ');readln(grup);
repeat
write(' предмет: ');readln(pred);
write(' Количество оценок: ');readln(kol) until (kol>0)and(kol<50);
write(f,grup,' ':20-ord(grup[0]));
writeln(f, ' | ', pred,' ':20-ord(pred[0]),' | ',kol:2,' | ');
end;
close(f);

begin
writeln('Полученный файл: ');
assign(f,'C:\PABCWork\text3.txt');reset(f);
repeat
readln(f,stroka);writeln(stroka);
until Eof(f);
reset(f);
writeln('Количество двоек во всех группах: ');
end;
close(f);

begin
assign(f,'C:\PABCWork\text3.txt');
reset(f);
repeat
kol := 0;
while not eoln(f) do begin
read(f, i);
kol := kol + i;
end;
readln(f);
WriteLn(kol);
until eof(f);
close(f);
end;
End.

Гена Тестов
Гена Тестов

> но количество двоек так и не выходит

Естественно! Вот это

while not eoln(f) do begin
read(f, i);
kol := kol + i;
end;

никогда поставленную задачу не выполнит!

У вас, простите, каша в голове. Для чего, скажите на милость, вы объявляете комбинированный тип doc, а данные пихаете в текстовый файл? Для того чтобы файл имел удобочитаемый вид? Это глупо. Файл данных, это файл данных и то, как он выглядит в редакторе последнее дело.

В вашем случае лучше и проще использовать типизированный файл.

var F : file of doc;

и писать данные в него.

write('Введите количество групп: ');readln(n);
for i:=1 to n do with gruppa do begin
write(i,')Группа: '); readln(grup);
repeat
write(' предмет: '); readln(pred);
write(' Количество оценок: '); readln(kol)
until (kol>0)and(kol<50);
write(f,gruppa); {и все!!! }
end;

А при чтении делать так

while not eoln(f) do begin
read(f, gruppa);
kol := kol + gruppa.kol;
end;

Будут вопросы, стучитесь в агент или аську 158-419-452. Или в мыло.

Похожие вопросы
Работа с текстовыми файлами в Паскале
Как в языке Паскаль найти суммы всех комбинаций чисел в массиве?
Заполнение массива на паскале из текстового файла
паскаль найти сумму двух длинных чисел
Найти сумму чисел в строке
текстовые файлы в паскале.
Решите задачу в паскаль! Дан файл целых чисел. Найти сумму этих чисел, сумму записать в другой файл!
Как из текстового файла переписать данные в массив. паскаль
Найти сумму первых чисел нескольких трехзначных чисел, признак окончания чисел 0. паскаль.
Определение длины каждой строки текстового файла. (паскаль)