|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.10.2010, 21:51 | #1 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 21
|
Работа с текстом. Pascal
Это вынос мозга. Ребят, кому не лень, помогите. А если лень, то хотя бы принцип объясните. Знаю только что нужно использовать процедуру Val, хотя и не обязательно.
вот задача: Пусть текст представляет собой последовательность строк. На каждой строке находится фамилия имя отчество. Распечатайте текст, содержащий строки, состоящие только из фамилий и имен, а также все отчества по алфавиту. конечно, можно сделать l1:=lendth(string); Val(string,X,k); Delete (string,k,l1-k); write(string); но это будет только фамилии, да и ка отдельно отчество сохранить... вообщем жду вашей помощи. |
25.10.2010, 08:06 | #2 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
Предполагаю, что строки в файле находятся в таком виде:
Иванов Иван Иванович Иванов Иван Петрович Иванов Петр Иванович 1) Читаем построчно файл 2) Вытаскиваем одну строку и перебираем ее посимвольно, сохраняя символы в строку - если второй раз наткнулись на пробел - значит фамилию и имя прочли. Печатаем строку. 3) Все символы от второго пробела (не включая его самого) до конца строки сохраняем в элемент одномерного массива (array of string). 4) Когда достигнут конец файла, все строки прочтены, имена и фамилии распечатаны, отчества лежат в одномерном массиве - упорядочиваем массив по алфавиту и печатаем его поэлементно.
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
25.10.2010, 08:07 | #3 |
Участник клуба
Регистрация: 28.03.2007
Сообщений: 1,814
|
В цикле построчно считываете файл, заносите итую строку в переменную, спомощью ф-ий Copy Pos Delete вытаскиваете ФИО, ФИ выводите сразу на экран а О заносите в предварительно объявленный массив строк. Сортируете массив и выводите через цикл на экран
Опаньки не успел |
25.10.2010, 14:42 | #4 |
Пользователь
Регистрация: 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,?); // как тут задать, чтоб все до конца удалил, и получилось бы только фамилия имя? |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с текстом в 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 |