IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Задачка на строки
Kreaman
сообщение 30.01.2008 17:10
Сообщение #1





Группа: Пользователи
Сообщений: 4
Пол: Мужской
Реальное имя: Vlad

Репутация: -  0  +


Здравствуйте, уважаемые форумчане....У меня вот проблемка, я уже раза завалил экзамен по программированию, никак не получается у меня с массивами и строками...

Кто может пожалуйста напишете решение....заранее очень благодарен)...

2. Сделать программу.
Ввести строку. Заменить все знаки умножения "*" знаком процента "%". Если знака умножения нет, то вывести об этом сообщение.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 6)
Michael_Rybak
сообщение 30.01.2008 17:16
Сообщение #2


Michael_Rybak
*****

Группа: Модераторы
Сообщений: 1 046
Пол: Мужской
Реальное имя: Michael_Rybak

Репутация: -  32  +


посмотри в справке функцию pos.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Yevgeny
сообщение 30.01.2008 22:43
Сообщение #3


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Program stroka;
Uses max_crt;
Var
str:string;
res:boolean;
Function Poisk(var s:string):boolean;
Var
i:integer;
l:boolean;
Begin
i:=1;
l:=false;
While i <= length(s) do
Begin
if s[i]='*' then
Begin
s[i]:='%';
l:=true;
end;
i:=i+1;
end;
poisk:=l;
end;

Begin
clrscr;
Write('vvedite stroky:'); Readln(str);
Writeln('isxodnaya: ',str);
res:=poisk(str);
if res then Writeln('===',str) else Writeln('false');
readln;
End.

а вот только не понимаю, а pos то тут зачем? тут же нужно одновременно и заменять символ, если он "*", а не просто проверять наличие хотя бы одной звёздочки... Может кто-нить пояснит, если не трудно, плиз!

Сообщение отредактировано: Yevgeny - 30.01.2008 22:50


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 30.01.2008 22:59
Сообщение #4


Гость






Цитата
Может кто-нить пояснит
Сравни со своим кодом:
var
s: string;
p, count: integer;

begin
s := 'start*finish*begin*end';
count := 0; { <--- счетчик замененных символов }
repeat
p := pos('*', s); { <--- находим позицию звездочки }
if p > 0 then begin { если звездочка есть, (p <> 0) то }
s[p] := '%'; inc(count);
{ заменяем соответствующий символ на процент }
{ и увеличиваем счетчик произведенных замен }
end;
until p = 0; { выполнять, пока звездочка будет находиться функцией pos }

if count = 0 then writeln('false') { <--- Замен не было? Значит, не было звездочек }
else writeln(s);
end.



Сообщение отредактировано: volvo - 30.01.2008 23:59
 К началу страницы 
+ Ответить 
Yevgeny
сообщение 30.01.2008 23:49
Сообщение #5


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Спасибо, volvo, так это получается, что при каждом обращении к функции pos в p записывается новый номер, причём больше, чем предыдущий? То есть идёт автоматический переход по стороке к новой звёздочке? А я думал, что если найдёт, то обращайся - не обращайся, всё равно там и останется!!!

Сообщение отредактировано: Yevgeny - 31.01.2008 0:01


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 31.01.2008 0:00
Сообщение #6


Гость






Комментарии добавлены...
 К началу страницы 
+ Ответить 
Yevgeny
сообщение 31.01.2008 0:10
Сообщение #7


The matrix has me!!!
**

Группа: Пользователи
Сообщений: 74
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Спасибо, volvo, ещё раз, я что-то ступил на счёт счётчика... Исправил, но видимо поздно, за то теперь всё понятно smile.gif


--------------------
"Брать производную можно научить даже обезьяну" - мой препод по матану! :-)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 18.07.2025 14:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"