IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Строки, слова в строке
R@f
сообщение 20.11.2005 12:42
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Люди!!! Плиз. Не могу сообразить, как вывести все слова данной строки в столбик?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
Altair
сообщение 20.11.2005 12:42
Сообщение #2


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


раскрыть глаза пошире
http://forum.pascalnet.ru/index.php?showtopic=6972


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
R@f
сообщение 20.11.2005 14:04
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Есть такая задача. "Дан текстовый файл F. Переписать в другой файл G все строки из файла F, начинающиеся с символа S, где символ S задается пользователем." Проблема в том, что прога ещё и переписывает все нулевые строки. Как от них избавиться?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 20.11.2005 14:05
Сообщение #4


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
Проблема в том, что прога ещё и переписывает все нулевые строки

допутсим ты читаешь строку s.
переписывай ее только в том случае если s<>''

а вернее так.
пусть строка c, и задан символ s.
if s[1]=s then пишем строку куда надо


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
R@f
сообщение 20.11.2005 14:34
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


ОГРОМАДНЕЙШЕЕ СПАСИБО!!! В принципе, я так и думал, но не мог записать. Писал то s[1]<>0, то s<>’ ‘. Ещё раз thank you. А вот со словами в столбик я не разобрался. Там слишком мудрёные способы. А у меня то задачка совсем простенькая: «Дана строка символов. Получить все слова, расположенные после первого и до второго двоеточия. Если второго двоеточия нет, то получить все слова после первого двоеточия до конца строки.» С двоеточиями я разобрался, там всё путём. А вот как эти долбанные слова в столбик вывести, я не могу допереть.
Пишу
repeat 
word1:=copy(words,1,pos(‘ ‘,words));
delete(words,1,pos(‘ ’,words));
writeln(word1);
until pos(‘ ‘,words)=0;
writeln (words);

И он мне выводит в столбик, но и ещё пробелы в столбик выводит. Как их удалить?
Помоги, горю, может свой вариант есть?

Сообщение отредактировано: volvo - 20.11.2005 14:36
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 20.11.2005 14:36
Сообщение #6


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Цитата
он мне выводит в столбик, но и ещё пробелы в столбик выводит

до
writeln (words);
напии
while pos(' ',words) <>0 do delete (words,pos(' ',words),1);
проверь только я не перепутал по памяти параметры у pos... (может наоборот не помню)

или у тебя прбелы как слова выводятсчя? тогда опять
if (words<>'') and (words<>' ') then writeln(words);


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.11.2005 14:40
Сообщение #7


Гость






Или так:
repeat
word1:=copy(words,1,pos(' ',words));
delete(words,1,pos(' ',words));

while(words[1] = ' ') do delete(words, 1, 1); { <-- !!! }

writeln(word1);
until pos(' ',words)=0;
writeln (words);
 К началу страницы 
+ Ответить 
R@f
сообщение 20.11.2005 15:44
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Вау, круто! Вариант volvo попёр. Но небольшая проблема: если в строке после последнего слова напечатать более 1 пробела, то прога виснит. Можно было плюнуть на это, может препод при проверке и не наколится на это. Но наш препод любую недоработанную прогу повешает. Может есть какие-то соображения?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 20.11.2005 15:49
Сообщение #9


Гость






Цитата
если в строке после последнего слова напечатать более 1 пробела, то прога виснит.

yes2.gif Само собой... Удаляй все ведомые пробелы еще до начала обработки:
  { Вот так }
while words[length(words)] = ' ' do
delete(words, length(words), 1);

repeat
word1:=copy(words,1,pos(' ',words));
delete(words,1,pos(' ',words));
while(words[1] = ' ') do delete(words, 1, 1);
writeln(word1);
until pos(' ',words)=0;
writeln (words);
 К началу страницы 
+ Ответить 
R@f
сообщение 20.11.2005 16:00
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Мужской

Репутация: -  0  +


Мать моя – женщина!!! Работает блин!!! Я от радости прыгаю до потолка! Спасибо, мужики! Супер форум! Удачи всем!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 3:03
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"