|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.12.2009, 10:05 | #1 |
Регистрация: 01.12.2009
Сообщений: 3
|
Задачка по Паскалю (Строки)
Дана строка. Преобразовать строку, удалив первую группу подряд идущих цифр, в которой больше двух цифр. Если преобразование невозможно, выдать об этом сообщение с указанием причины.
Задание выполнить в двух вариантах: а) использую посимвольную обработку строк; б) с использованием стандартных процедур и функций для работы со строками.
Ни что так не ограничивает фантазию программиста, как компилятор..
|
05.12.2009, 10:11 | #2 |
Регистрация: 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.
Ни что так не ограничивает фантазию программиста, как компилятор..
|
07.12.2009, 17:18 | #3 |
Регистрация: 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.
Ни что так не ограничивает фантазию программиста, как компилятор..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задачка по ПАскалю. | пепелаЦО | Паскаль, 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 |