Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Распечатать все числа, встречающиеся в заданном тексте.

Автор: tanjusha 24.01.2010 18:49

Распечатать все числа, встречающиеся в заданном тексте.

Автор: volvo 24.01.2010 19:35

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

Автор: tanjusha 24.01.2010 19:50

Цитата(volvo @ 24.01.2010 16:35) *

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

если бы знала как, то уже бы напечатала((( помоги те кто может

Автор: volvo 24.01.2010 19:56

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

Свои наработки есть? Только вот не надо опять старую шарманку, что "я не умею писать программы", и т.д. С момента создания тобой первой темы с этим заданием прошло почти 2 недели. За это время научиться можно многому. Если хотеть. Ты, как видно, не хочешь. А я не хочу помогать лентяям.

Автор: tanjusha 24.01.2010 20:05

вот то что у меня получилось...ток там ошибка

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 24.01.2010 21:37

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

Автор: tanjusha 24.01.2010 21:48

Цитата(Lapp @ 24.01.2010 18:37) *

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

Error26: Type mismatch

Автор: Lapp 24.01.2010 22:16

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


Добавлено через 10 мин.
Танюш, давай поактивнее. От тебя никто не ждет откровений, достаточно показать, что ты хоть что-то делаешь. Отвечай на вопросы поскорее, и все будет в порядке. Не стесняйся, тут никто не будет смеяться.

Автор: amega 24.01.2010 23:08

Доберусь до паскаля проверю функциию
с - строка в которой ищется, и - позициия с которой проверяется, рез - возращаемое число, сама функция возращает найдено чило или нет.

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 25.01.2010 0:05

проверил, она правильно не работает, сейчас исправляю ошибки...

Автор: amega 25.01.2010 0: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;


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

Автор: tanjusha 26.01.2010 19:54

Цитата(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 26.01.2010 21:14

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

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