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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.10.2010, 21:51   #1
zevs116
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 21
По умолчанию Работа с текстом. Pascal

Это вынос мозга. Ребят, кому не лень, помогите. А если лень, то хотя бы принцип объясните. Знаю только что нужно использовать процедуру Val, хотя и не обязательно.

вот задача:

Пусть текст представляет собой последовательность строк. На каждой строке находится фамилия имя отчество. Распечатайте текст, содержащий строки, состоящие только из фамилий и имен, а также все отчества по алфавиту.

конечно, можно сделать
l1:=lendth(string);
Val(string,X,k);
Delete (string,k,l1-k);
write(string);

но это будет только фамилии, да и ка отдельно отчество сохранить... вообщем жду вашей помощи.
zevs116 вне форума Ответить с цитированием
Старый 25.10.2010, 08:06   #2
Roof
Форумчанин
 
Аватар для Roof
 
Регистрация: 01.02.2007
Сообщений: 785
По умолчанию

Предполагаю, что строки в файле находятся в таком виде:
Иванов Иван Иванович
Иванов Иван Петрович
Иванов Петр Иванович

1) Читаем построчно файл
2) Вытаскиваем одну строку и перебираем ее посимвольно, сохраняя символы в строку - если второй раз наткнулись на пробел - значит фамилию и имя прочли. Печатаем строку.
3) Все символы от второго пробела (не включая его самого) до конца строки сохраняем в элемент одномерного массива (array of string).
4) Когда достигнут конец файла, все строки прочтены, имена и фамилии распечатаны, отчества лежат в одномерном массиве - упорядочиваем массив по алфавиту и печатаем его поэлементно.
Изо всей благодати
В руках крепко сжатых
Я донесу только капли
Roof вне форума Ответить с цитированием
Старый 25.10.2010, 08:07   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

В цикле построчно считываете файл, заносите итую строку в переменную, спомощью ф-ий Copy Pos Delete вытаскиваете ФИО, ФИ выводите сразу на экран а О заносите в предварительно объявленный массив строк. Сортируете массив и выводите через цикл на экран
Опаньки не успел
SERG1980 вне форума Ответить с цитированием
Старый 25.10.2010, 14:42   #4
zevs116
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 21
По умолчанию

спасибо!) вот только не очень понял, как именно найти номер второго пробела? думаю что так:

ksum:=0
l1:=lendth(string); // считаем длину строки
Val(string,X,k); // находим первый пробел
Delete (string,1,k); // удаляем все до пробела
ksum:=ksum+k;
Val(string,X,k);
ksum:=ksum+k; // находим второй пробел
Delete (string,k,?); // как тут задать, чтоб все до конца удалил, и получилось бы только фамилия имя?
zevs116 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с текстом в Pascal Alexsssandr Помощь студентам 7 10.03.2010 18:15
Работа с текстом cinik Помощь студентам 1 22.01.2010 21:48
Работа с текстом. J0n1cK Помощь студентам 1 30.05.2009 15:19
Работа с текстом Sanek_ntsk Общие вопросы C/C++ 10 12.01.2008 19:42