Люди!!! Плиз. Не могу сообразить, как вывести все слова данной строки в столбик?
раскрыть глаза пошире
http://forum.pascal.net.ru/index.php?showtopic=6972
Есть такая задача. "Дан текстовый файл F. Переписать в другой файл G все строки из файла F, начинающиеся с символа S, где символ S задается пользователем." Проблема в том, что прога ещё и переписывает все нулевые строки. Как от них избавиться?
ОГРОМАДНЕЙШЕЕ СПАСИБО!!! В принципе, я так и думал, но не мог записать. Писал то 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);
Или так:
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);
Вау, круто! Вариант volvo попёр. Но небольшая проблема: если в строке после последнего слова напечатать более 1 пробела, то прога виснит. Можно было плюнуть на это, может препод при проверке и не наколится на это. Но наш препод любую недоработанную прогу повешает. Может есть какие-то соображения?
{ Вот так }
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);
Мать моя – женщина!!! Работает блин!!! Я от радости прыгаю до потолка! Спасибо, мужики! Супер форум! Удачи всем!