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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2007, 13:31   #1
sergfanat
 
Регистрация: 16.12.2007
Сообщений: 4
По умолчанию Задача на строки

Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 символов, между соседними словами – произвольное число пробелов, за последним словом точка. Напечатать эту же последовательность, удалив из всех слов заданный символ.
sergfanat вне форума Ответить с цитированием
Старый 16.12.2007, 13:37   #2
AlDelta
Реанимируюсь...
Участник клуба
 
Аватар для AlDelta
 
Регистрация: 19.07.2007
Сообщений: 1,445
По умолчанию

Паскаль:
Функция Pos и процедура Delete помогут. Как использовать - смотри справку паскаля.
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.
Правила форума => Правила раздела => Для общего развития => Помощь студентам => Перед тем, как создавать тему, скачайте себе...
P.S.: форум не песочница (с)
название статьи на сайте MS: "Отмена принудительного отключения автоматического запуска в реестре Windows"

Последний раз редактировалось AlDelta; 16.12.2007 в 13:44.
AlDelta вне форума Ответить с цитированием
Старый 16.12.2007, 14:11   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Или задание написано неправильно, или задача супер-легкая.
for i:=1 to length(s) do
if s[i]="заданный символ" then delete(s,i,1);
write(s);
puporev вне форума Ответить с цитированием
Старый 16.12.2007, 15:41   #4
sergfanat
 
Регистрация: 16.12.2007
Сообщений: 4
По умолчанию

препод сказал что между словами пробел должен остаться,а те произвольные которые после первого пробела будут должны быть удалены...короче он меня в крайняк запутал
sergfanat вне форума Ответить с цитированием
Старый 16.12.2007, 20:53   #5
Alex21
With best regards
Участник клуба
 
Регистрация: 20.04.2007
Сообщений: 1,448
По умолчанию

Может удалить лишние пробелы?
Alex21 вне форума Ответить с цитированием
Старый 17.12.2007, 10:42   #6
sergfanat
 
Регистрация: 16.12.2007
Сообщений: 4
По умолчанию

не удалить нужно введенный символ и лишние пробелы,а тот который разделяет слова должен остаться....
sergfanat вне форума Ответить с цитированием
Старый 17.12.2007, 12:09   #7
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Неужели нельзя было сразу написать одну эту строчку. Держи код, мученик науки.
Код:
Program probel_znak;
uses crt;
var a,zn:string;i,j:integer;x:char;
begin
clrscr;
writeln('Ischodnaia stroka:');readln(a);
write('Znak=');readln(zn);
x:=chr(32); {probel}
i:=1;
while i<length(a)do
   begin
     if a[i]=x then
       while a[i+1]=x do
         delete(a,i+1,1);
     i:=i+1;
     if a[i]=zn then delete(a,i,1);
   end;
writeln('Rezultat:');
writeln(a);
readln;
end.
puporev вне форума Ответить с цитированием
Старый 18.12.2007, 21:04   #8
sergfanat
 
Регистрация: 16.12.2007
Сообщений: 4
По умолчанию

спасибо!!!!!!!!!!!!!!!!!!!
sergfanat вне форума Ответить с цитированием
Старый 18.12.2007, 22:16   #9
Malice
Пользователь
 
Регистрация: 28.01.2007
Сообщений: 27
По умолчанию

Распространенная ошибка начинающих программистов Попробуйте например на строке=
'123 234 34444443 123'; при zn='4';
Нельзя идти с начала строки и удалять в ней же символы, т.к. будут пропуски в обработке и выход за пределы строки в окончании.
Можно сделать так:

Код:
writeln('Ischodnaia stroka:');readln(a);   
write('Znak=');readln(zn);   
for i:=length(a) downto 1 do
        if a[i]=zn then delete(a,i,1); 
while pos ('  ',a)>0 do delete (a,pos ('  ',a),1);
writeln(a);
Malice вне форума Ответить с цитированием
Старый 18.12.2007, 22:37   #10
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Спасибо за науку, только все пробелы вы зря удалили, нужно было только лишние.
puporev вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лёгкая задача на строки! ldx Паскаль, Turbo Pascal, PascalABC.NET 5 06.06.2008 02:32
Задача на строки, плиз... Sid maksim Паскаль, Turbo Pascal, PascalABC.NET 5 14.05.2008 22:41
Задача на строки Juhn Паскаль, Turbo Pascal, PascalABC.NET 1 13.05.2008 16:10
задача на строки Hostlman Помощь студентам 2 26.12.2007 03:17