Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2007, 14:46   #1
r3krut
Новичок
Джуниор
 
Регистрация: 15.12.2007
Сообщений: 1
По умолчанию помогите с задачей разобраться

Имеется текстовый файл, каждая строка которого содержит следующие данные: книга; автор; колличество. Создать новый файл, содержащий только книги автора, фамилия которого вводится.

Цитата

1 var surname,s,s1:string;
2 begin
3 write('Введите фамилию: ');
4 readln(surname);
5 assign(input,'input.txt');
6 reset(input);
7 assign(output,'output.txt');
8 rewrite(output);
9 while not eof(input) do begin
10 readln(s);
11 s1:=copy(s,1,pos(';',s)-1);
12 delete(s,1,pos(';',s));
13 while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
14delete(s,pos(';',s),length(s)-pos(';',s)+1);
15while (length(s)>0) and (s[length(s)]=' ') do delete(s,length(s),1);
16if surname=s then writeln(s1);
17end;
18close(input);
19close(output);
20end.



может кто мне обяснить начиная с 11 и по 16 строчку что происходит...может кто прокментировать каждую строчку...особенно не ясно копи ....
Заранее спасибо
r3krut вне форума Ответить с цитированием
Старый 16.12.2007, 15:43   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
По умолчанию

[/code]
11 s1:=copy(s,1,pos(';',s)-1);
{s1 получается путем копирования из s начиная с первого члена до первого встречного знака ";"}
12 delete(s,1,pos(';',s));
{Удаляет из строки s все символы начиная с первого и до первого встречного ";"}
13 while (length(s)>0) and (s[1]=' ') do delete(s,1,1);
{цикл пока длина слова s>0 и первый символ слова s равен '<пробел>'}
14 delete(s,pos(';',s),length(s)-pos(';',s)+1);{удаляет из слова s начиная с ";" до длины(S)-позиция_первого_";"+1}

15 while (length(s)>0) and (s[length(s)]=' ') do {цикл пока длина(s)>0 и последний символ слова s равен '<пробел>'}
delete(s,length(s),1);{удаляет последний символ слова s}
16 if surname=s then writeln(s1);{если surname=s то выводим s1}[/code]
ICQ - 446037211
Abbatik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь с задачей...никак не могу разобраться( Gekata Паскаль, Turbo Pascal, PascalABC.NET 4 13.12.2006 14:02