Консультация № 180092
29.09.2010, 20:46
0.00 руб.
0 10 2
Уважаемые эксперты,прошу помочь решить задачку,на текстовые файлы.
Дан текстовый файл(уже создан) в котором хранитится информация(фио учителей,предмет,кол-во часов,стаж работы). Вывести тех учителей которые преподают математику и информатику,вывести их стаж работы и кол-во часов в неделю.

Обсуждение

давно
Старший Модератор
31795
6196
29.09.2010, 21:03
общий
Шилов Андрей Иванович:
Цитата: 337336
Уважаемые эксперты,прошу помочь решить задачку,на текстовые файлы.
Дан текстовый файл(уже создан) в котором хранитится информация(фио учителей,предмет,кол-во часов,стаж работы)

Текстовый файл - набор символов, информация фио учителей,предмет,кол-во часов,стаж работы - это типизированный файл.
Уточняйте этот момент.
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

давно
Мастер-Эксперт
319965
1463
29.09.2010, 22:04
общий
это ответ
Здравствуйте, Шилов Андрей Иванович.
Пусть в каждой строке идет фамилия, имя, отчество, предмет, количество часов и стаж, разделенные одним пробелом. Пусть специальность математика указана как mathematics, а специальность информатика - как informatics. Пусть файл - это E:\1.txt. Тогда программа может выглядеть примерно так:
Код:
program teachers;
uses crt;
var
tf:Text;
s:string;
no:integer;
f,i,o,topic,hours,stag:string;
begin
Assign(tf,'E:\1.txt');
Reset(tf);
Clrscr;
while not eof(tf) do
begin
Readln(tf,s);
no:=Pos(' ',s);
f:=Copy(s,1,no-1);
Delete(s,1,no);
no:=Pos(' ',s);
i:=Copy(s,1,no-1);
Delete(s,1,no);
no:=Pos(' ',s);
o:=Copy(s,1,no-1);
Delete(s,1,no);
no:=Pos(' ',s);
topic:=Copy(s,1,no-1);
Delete(s,1,no);
no:=Pos(' ',s);
hours:=Copy(s,1,no-1);
Delete(s,1,no);
stag:=s;
if (topic='mathematics') or (topic='informatics') then
begin
Writeln(f,' ',i,' ',o);
Writeln('stag=',stag, ' hours=',hours);
end;
end;
Close(tf);
Readln;
end.
Неизвестный
29.09.2010, 22:06
общий
Цитата: Зенченко Константин Николаевич
это типизированный файл

А вдруг это действительно текстовый файл? Просто информация в нём записана в виде строк, каждая из которых описывает информацию об одном учителе. Например, так:
Код:
Иванов Дмитрий Петрович,математика,68,3
Петрова Мария Сидоровна,физика,44,5
...

На счёт того, что надо уточнить, согласен. В каком формате записана информация в этом текстовом файле, если он действительно текстовый?
Неизвестный
29.09.2010, 22:06
общий
это ответ
Здравствуйте, Шилов Андрей Иванович.
Вот в приложении текст программы. Думаю, понятен.
Но, поскольку, текстовый файл должен в кодировке DOS, в прикрепленном архиве - и исходный файл, и файл данных

Приложение:
CONST
SrcFileName = '180092.txt';

function UpRuss(src: String): String;
var i, len: Integer;
begin
len := length(src);
for i := 1 to len do
case src[i] of
'а'..'п': src[i] := chr(Ord(src[i]) - 32);
'р'..'я': src[i] := chr(Ord(src[i]) - 80);
end;
UpRuss := src
end;
{В частности, слово "математика" может записано по-разному, а узнавать надо
все}

function GetName(src: String): String;
{Для вырезания фамилии}
var name: String;
i, len: Integer;
begin
while (src[1] = ' ') and (src <> '') do delete(src,1,1);
name := '';
if src <> '' then
begin
i :=1;
len := length(src);
while (src[i] <> ' ') and (src[i] <> '.') and (i <= len) do
begin
name := name + src[i];
inc(i)
end
end;
GetName := name
end;

VAR
f: Text;
s: String;

BEGIN
Assign(f, srcFileName);
{$I-} Reset(f); {$I+}
if IOResult <> 0 then begin
WriteLn('Не могу открыть файл ', srcFileName);
Halt(1)
end;
While NOT EOF(f) do
begin
ReadLn(f, s);
if POS('МАТЕМАТИКА', UpRuss(s)) <> 0 then
WriteLn(GetName(s));
end;
Close(f);
END.
Прикрепленные файлы:
Неизвестный
29.09.2010, 22:18
общий
Шилов Андрей Иванович:
Да, я полагал, что слово "Математика" написано по-русски, если допустимы и английское, немецкое или другое написание, то легко переделаю.
Напишите только
Неизвестный
29.09.2010, 22:24
общий
Извиняюсь что не уточнил,пример который написал Alex1,будет верный.
Неизвестный
29.09.2010, 22:27
общий
Откройте мой архив - там все именно так, только с вариантами регистра букв
давно
Старший Модератор
31795
6196
29.09.2010, 23:04
общий
Alex1:
Цитата: 302939
А вдруг это действительно текстовый файл?

Вы правы, это действительно был текстовый файл:
Цитата: 337336
Извиняюсь что не уточнил,пример который написал Alex1,будет верный.


Записи должны как-то , чем-то разделятся - весь вопрос, как представлены данные? Вы в самом вопроосе это заметили?
Цитата: 302939
А вдруг это действительно текстовый файл?

Сам посебе файл, это набор байтов(возможно некоторым образом организованный), вот и сам вопрос-как он организован?
Цитата: 337336
Извиняюсь что не уточнил,пример который написал Alex1,будет верный.

Этот момент тоже нужно уточнять, т.к. самих символов-раздедителей, около 20-ти, приблизительно столько и указателей окночания одной записи.



заметьте, что дважды ставил одинаковые вопросы
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Неизвестный
30.09.2010, 17:32
общий
Boriss:
Вы правильно все сделали,но не доконца,в задании было написано вывесте учителей,их стаж,и кол-во часов,т.е всю информацию. Спасибо.
Неизвестный
30.09.2010, 18:29
общий
Но согласитесь, это уже просто. Должны же и Вы что-то сделать!
Форма ответа