Есть такая задача. "Дан текстовый файл F. Переписать в другой файл G все строки из файла F, начинающиеся с символа S, где символ S задается пользователем." Проблема в том, что прога ещё и переписывает все нулевые строки. Как от них избавиться?
Altair
20.11.2005 18:05
Цитата
Проблема в том, что прога ещё и переписывает все нулевые строки
допутсим ты читаешь строку s. переписывай ее только в том случае если s<>''
а вернее так. пусть строка c, и задан символ s. if s[1]=s then пишем строку куда надо
R@f
20.11.2005 18:34
ОГРОМАДНЕЙШЕЕ СПАСИБО!!! В принципе, я так и думал, но не мог записать. Писал то s[1]<>0, то s<>’ ‘. Ещё раз thank you. А вот со словами в столбик я не разобрался. Там слишком мудрёные способы. А у меня то задачка совсем простенькая: «Дана строка символов. Получить все слова, расположенные после первого и до второго двоеточия. Если второго двоеточия нет, то получить все слова после первого двоеточия до конца строки.» С двоеточиями я разобрался, там всё путём. А вот как эти долбанные слова в столбик вывести, я не могу допереть. Пишу
И он мне выводит в столбик, но и ещё пробелы в столбик выводит. Как их удалить? Помоги, горю, может свой вариант есть?
Altair
20.11.2005 18:36
Цитата
он мне выводит в столбик, но и ещё пробелы в столбик выводит
до writeln (words); напии while pos(' ',words) <>0 do delete (words,pos(' ',words),1); проверь только я не перепутал по памяти параметры у pos... (может наоборот не помню)
или у тебя прбелы как слова выводятсчя? тогда опять if (words<>'') and (words<>' ') then writeln(words);
Вау, круто! Вариант volvo попёр. Но небольшая проблема: если в строке после последнего слова напечатать более 1 пробела, то прога виснит. Можно было плюнуть на это, может препод при проверке и не наколится на это. Но наш препод любую недоработанную прогу повешает. Может есть какие-то соображения?
volvo
20.11.2005 19:49
Цитата
если в строке после последнего слова напечатать более 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);
R@f
20.11.2005 20:00
Мать моя – женщина!!! Работает блин!!! Я от радости прыгаю до потолка! Спасибо, мужики! Супер форум! Удачи всем!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.