Паскаль, текстовые файлы

Ответить
Virtu
Сообщения: 1
Зарегистрирован: 18 мар 2009, 18:05

1. Написать функцию test1(f:text),которая по данным текстового файла f находит суммарную длину строк, в записи которых столько же цифр, сколько и в последней строке текста.
))))) я тут кое что набросал но не добил т.к. я уже ничего ни соображаю ваще, а в четверг экзамен

Код: Выделить всё

program v14z1;
function test1 (var f : text) : integer;
var st : string;
sc : set of char;
m,k,i : integer;

begin
assign(f,'test1.txt');
reset(f);
while not eof(f) do begin
readln(f,st);
end;
sc:=[];
for i:=1 to lenght(st) do begin
sc:=sc+[st[i]];
sc:=sc*['0'..'9'];
end;
k:=0;
reset(f);
while not eof(f) do begin
readln(f,st);
m:=0;
for i:=1 to lenght(st) do begin
if st[i] in sc then m:=m+1;
if m>0 then k:=k+1;
end;
end;
test1:=k;
close(f);
end;
begin
write(test1);
readln;
end.
2. Компонентный файл f типа file of studRec состоит из записей вида:
type StudRec=record
fio:string[20];{фамилия}
age : byte; {возраст}
marks: array[1..4] of byte; {оценки зимней сессии}
end;
написать процедуру или функцию TEST2(f), позволяющую найти самого молодого из студентов, имеющих самый высокий средний балл.
учесть случай, когда таких студентов может не оказаться.

===============================

3.Написать процедуру test3(f:text), которая из текстового файла f распечатает только те цифры, которые есть хотя бы в одном слове строк с нечетным числом слов.

===============================
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Вай, зачем такие сложности?
1.
[syntax=Delphi]function digits_in_string(s: string): byte;
var i: byte;
begin
digits_in_string;=0;
for i:=1 to length(s) do if s in ['0'..'9'] then inc(digits_in_string);
end;

begin
assign(f,'test1.txt');
reset(f);
while not eof(f) do
readln(f,st);
x:=digits_in_string(st);
reset(f);
count:=0;
while not eof(f) do begin
readln(f,st);
if digits_in_string(st)=x then inc(count, length(st)
end;
end.[/syntax]
2 - есть в разделе алгоритмы
3 - сделать массив ['0'..'9'] of boolean, считать файл построчно. Каждую строку разбить на слова (опять есть в разделе алгоритмы). Потом если слов нечетное количество - найти все цифры в этой строке и для каждой цифры в массиве выставить true
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить