Помощь - Поиск - Пользователи - Календарь
Полная версия: Распечатать все числа, встречающиеся в заданном тексте.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
tanjusha
Распечатать все числа, встречающиеся в заданном тексте.
volvo
Ну, печатай... Мы не против.
tanjusha
Цитата(volvo @ 24.01.2010 16:35) *

Ну, печатай... Мы не против.

если бы знала как, то уже бы напечатала((( помоги те кто может
volvo
"Помогите" и "напишите за меня" - это разные вещи, тебе не кажется?

Свои наработки есть? Только вот не надо опять старую шарманку, что "я не умею писать программы", и т.д. С момента создания тобой первой темы с этим заданием прошло почти 2 недели. За это время научиться можно многому. Если хотеть. Ты, как видно, не хочешь. А я не хочу помогать лентяям.
tanjusha
вот то что у меня получилось...ток там ошибка
program laba;
uses crt;
var
s:string;
a:array[1..20]of integer;
i,j:integer;
begin
writeln('Vvedite ctroky');
readln(s);
for i:=1 to length(s) do
if s[i]in['0'..'9'] then
s[i]:=s[i]+1;
writeln(s);
readln;
end.


М
tanjusha, просьба выполнять правила: помещай программный код в тэги!
Выдели код и выбери нужный пункт в меню CODE в форме ввода мессаджа.
Lapp

Lapp
Цитата(tanjusha @ 24.01.2010 16:05) *
вот то что у меня получилось...ток там ошибка
Какая именно ошибка? Приведи ее текст (что компилятор сказал).
tanjusha
Цитата(Lapp @ 24.01.2010 18:37) *

Какая именно ошибка? Приведи ее текст (что компилятор сказал).

Error26: Type mismatch
Lapp
Цитата(tanjusha @ 24.01.2010 17:48) *
Error26: Type mismatch
При указании ошибки хорошо ьы еще говорить, в какой строке. Конечно, в этом твоем коде все ясно, но на будущее учти, если спрашивать.
Вот тут:
s[i]:=s[i]+1;
- у тебя нестыковочка.
s - это строка, то есть массив символов.
Один ее элемент, s[i] - это символ, то есть цифра или буква или знак препинания или там плюс или минус... Которче, значек - маленькая картинка, из которых состоит печатный текст. Это ты понимаешь? Символы обычно заключаются в кавычки. Например, '1' - это символ единицы. А просто 1 - это число. Числа можно, скажем, складывать между собой. Символы, строго говоря, нельзя. А что ты подразумевала, когда складывала символы с числами - это я вообще понять не могу. И вообще я не понимаю, какой смысл ты хотела заключить в эту строчку. Можешь постараться передать словами, что ты хотела сделать? Пожалуйста, сделай это.


Добавлено через 10 мин.
Танюш, давай поактивнее. От тебя никто не ждет откровений, достаточно показать, что ты хоть что-то делаешь. Отвечай на вопросы поскорее, и все будет в порядке. Не стесняйся, тут никто не будет смеяться.
amega
Доберусь до паскаля проверю функциию
с - строка в которой ищется, и - позициия с которой проверяется, рез - возращаемое число, сама функция возращает найдено чило или нет.
function getInt(s:string; i:integer; var res:string):boolean;
var
ok:boolean;
begin
ok:=false;
result:=false;
{ Проверяем отрицательное ли число, и инициализируем нашу исходну строку }
if s[i]='-' then res:='-'
else res:='';
{проыеряем наше число в цикле, пока не встретим очередной пробел,либо конец чтроки}
while (s[i]<>' ') or (i<=length(s)) do
begin
{проверяем очиредной символ}
case s[i] of
{если это цифра то прибавляем в исходнуюю строку}
'0'..'9':
res:=res+s[i];
'.':
{проверяем точку в вещественном числе}
begin
{если такова есть то выходим из функции, функциия воратит false}
if ok then exit
else
begin
{если точки нету добавляем ее в вых значение и указуем флаг}
ok:=true;
res:=res+s[i];
end;
end;
else
{если у нас пришол какойто символ не 0-9 либо . значит выходим из функции, функциия воратит false }
exit;
end; { end для case}
{если все хорошо увиличиваем индекс}
i:=i+1;
end;
{если мы не вышли по какойто причине значит все хорошо и устанавливаем значение функции true,в res у нас число}
getint:=true;
end;

amega
проверил, она правильно не работает, сейчас исправляю ошибки...
amega
function getInt(s:string; i:integer; var res:string):boolean;
var
ok:boolean;
k:integer;
begin
ok:=false;
getint:=false;
k:=i;
res:='';
while (s[i]<>' ') and (i<=length(s)) do
begin
case s[i] of
'-':
begin
if k=i then res:=res+s[i]
else exit;
end;
'0'..'9':
res:=res+s[i];
'.':
begin
if (ok) or (i=k) then exit
else
begin
ok:=true;
res:=res+s[i];
end;
end;
else
exit;
end;
i:=i+1;
end;
getint:=true;
end;


вот это больше похожа на правду, ток теперь ее нада правильно вызывать ....
tanjusha
Цитата(amega @ 24.01.2010 21:51) *

function getInt(s:string; i:integer; var res:string):boolean;
var
ok:boolean;
k:integer;
begin
ok:=false;
getint:=false;
k:=i;
res:='';
while (s[i]<>' ') and (i<=length(s)) do
begin
case s[i] of
'-':
begin
if k=i then res:=res+s[i]
else exit;
end;
'0'..'9':
res:=res+s[i];
'.':
begin
if (ok) or (i=k) then exit
else
begin
ok:=true;
res:=res+s[i];
end;
end;
else
exit;
end;
i:=i+1;
end;
getint:=true;
end;


вот это больше похожа на правду, ток теперь ее нада правильно вызывать ....

Спасибо большое))
volvo
Цитата
с - строка в которой ищется, и - позициия с которой проверяется, рез - возращаемое число
Не, ну нормально? Возвращаемое число в виде строки возвращать - это по твоему хорошо, да?

Мало того, твою функцию можно еще в 2 раза сократить. Да и вообще,
Цитата(Правила Раздела)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
не для тебя писано? Зачем были посты №9 и №10?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.