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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 10:05   #1
Altavista
 
Регистрация: 01.12.2009
Сообщений: 3
По умолчанию Задачка по Паскалю (Строки)

Дана строка. Преобразовать строку, удалив первую группу подряд идущих цифр, в которой больше двух цифр. Если преобразование невозможно, выдать об этом сообщение с указанием причины.

Задание выполнить в двух вариантах:
а) использую посимвольную обработку строк;
б) с использованием стандартных процедур и функций для работы со строками.
Ни что так не ограничивает фантазию программиста, как компилятор..
Altavista вне форума Ответить с цитированием
Старый 05.12.2009, 10:11   #2
Altavista
 
Регистрация: 01.12.2009
Сообщений: 3
По умолчанию

Вторую часть можно написать примерно так:

program stroka;
// sr(s) - является ли строка s трехзначным числом
function sr(const s:string):boolean;
begin
if length(s)=3 then
sr:=(s[1]>='0') and (s[1]<='9') and (s[2]>='0') and (s[2]<='9') and (s[3]>='0') and (s[3]<='9')
end;
var s:string;
l,i,j:integer;
begin
writeln('Vvedite ishodnyu stroky:');
readln(s);
l:=length(s);
if l<3 then writeln('stroka < 3 simvolov') else
begin
i:=0;
repeat
i:=i+1
until sr(copy(s,i,3)) or (i=l-2);
//writeln(i);
if (i=l-2) and not(sr(copy(s,i,3))) then writeln('v stroke net treh cifr podryad') else
begin
j:=i+2;
while (j<=l) and (s[j]>='0') and (s[j]<='9') do j:=j+1;
//writeln(j);
if j-i=l then writeln('pustaya stroka')
else
begin
delete(s,i,j-i);
writeln(s)
end
end
end
end.
Ни что так не ограничивает фантазию программиста, как компилятор..
Altavista вне форума Ответить с цитированием
Старый 07.12.2009, 17:18   #3
Altavista
 
Регистрация: 01.12.2009
Сообщений: 3
По умолчанию

А первую вот так:
program stroka;
var s:string;
l,i,j:integer;
begin
writeln('Введите исходную строку:');
readln(s);
l:=length(s);
if l<3 then writeln('В строке меньше 3х символов') else
begin
i:=0;
repeat
i:=i+1
until ((s[i]<'9') and (s[i]>'0') and (s[i+1]<'9') and (s[i+1]>'0') and (s[i+2]<'9') and (s[i+2]>'0'))or (i=l-1);
if (i=l-1) and not((s[i]<'9') and (s[i]>'0') and (s[i+1]<'9') and (s[i+1]>'0')) then writeln('В строке нет 3-х подряд идущих цифр')
else
begin
j:=i+2;
while (j<=l) and (s[j]>='0') and (s[j]<='9') do j:=j+1;
//writeln(j);
if j-i=l then writeln('Пустая строка')
else
begin
delete(s,i,j-i);
writeln('Итоговая строка:');
writeln(s)
end
end;
end;
end.
Ни что так не ограничивает фантазию программиста, как компилятор..
Altavista вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачка по ПАскалю. пепелаЦО Паскаль, Turbo Pascal, PascalABC.NET 0 27.05.2009 18:12
Задачка по паскалю. Suzukava Паскаль, Turbo Pascal, PascalABC.NET 9 09.01.2009 16:20
Задачка по Паскалю Vanet Помощь студентам 2 03.10.2007 12:08
Задачка по Паскалю... oleeg Помощь студентам 13 11.02.2007 00:05