Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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


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

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

Цитата

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, 16:43   #2
Abbatik
Форумчанин
 
Аватар для Abbatik
 
Регистрация: 11.11.2007
Сообщений: 136
Репутация: 74

icq: 446037211
По умолчанию

[/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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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


06:43.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru