Помощь - Поиск - Пользователи - Календарь
Полная версия: ЗАДАЧА ПРО ФУнкцию..
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
RAPON
ТАКАЯ ЗАДАЧА:
Написать функцию, обеспечивающую ввод с клавиатуры положительного двухзначного числа. При нажатии пользователем какой-либо клавиши соответствующей ей символ должен появляться на экране только в том случае, если этот символ является цифрой. Функция должна позволять пользователю редактировать введенное число при помощи клавиши <BackSpace>. Если пользователь ввел хотя бы одну цифру, то при нажатии клавиши <Enter> функция должна завершать работу и возвращать введенное пользователем число вызвавшей ее процедуре.
ПОЖАЛУЙСТА ПОМОГИТЕ ,напишите программу...ИЛИ хотя бы обьясните суть задачи..А то я чето так и не понял всей сути задачи..ПОМОГИТЕ!!!
AAAAAAA
Помоги разработать программу а то мне надо курасач по этой задаче в ближ дни сдавать а времени на разбор задачи нет! sad.gif
Lapp
Цитата(AAAAAAA @ 12.05.2007 10:03) *

времени на разбор задачи нет! sad.gif

Нет времени?.. А у нас всех его, конечно, навалом..
Помочь - поможем. Что конкретно не ясно? Говори, спрашивай.
Решать за тебя не будем

 ! 
Правила, п. 1.10: На Форуме запрещается регистрировать несколько профилей.
Профиль AAAAAAA удаляю.
Пользователь RAPON получает повышение уровня предупреждений.

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

Добавлено через 2 мин.
В суть задачи вникнуться не могу может кто обьяснит?
Lapp
Цитата(RAPON @ 12.05.2007 10:53) *

если бы у вас форум не глючил при цитате сообщух , я бы не регал второго пользователя

Хорошо, объяснение принимается, вопрос закрыт. Я снимаю предупреждение.

По поводу глюков - пиши в раздел Книга Жалоб и Предложений.

Добавлено через 6 мин.
Цитата(RAPON @ 12.05.2007 10:53) *

В суть задачи вникнуться не могу может кто обьяснит?

Ты сам хоть что-то пытался начинать? пробовал? Если да, покажи, что есть.
Если нет - пробуй..
мисс_граффити
Смысл такой:
1. Если пользователь нажал цифру - отображаем ее на экране.
2. Если пользователь нажал BackSpase, затираем последний символ.
3. Если пользователь нажал Enter, возвращаем введенное число.
4. Иначе ничего не делаем.
RAPON
А как проверить пользователь цифру нажал ли символ?Затем на экране отобразить?
RAPON
Может мне кто нибудь ответит?1
мисс_граффити
может быть.
if ch in ['1'..'9'] then
{это значит, что он ввел цифру}

вообще лучше через case - вариантов-то у нас много.
как работать со спецсимволами (BackSpase, например) - поищи по форуму, было совсем недавно.
Lapp
мисс_граффити, почто ноль не в фаворе? smile.gif
Да, лучше воспользоваться case. Типа так:
case c in
'0'..'9': begin
Write©;
s:=s+c;
end;
#8: if Length(s)>0 then begin
Write(#8,' ',#8);
Delete(s,Length(s),1)
end;
#13: if Length(s)>0 then begin
WriteLn;
Val(s,x,e)
end;
RAPON
СПАСИБО,вечером попробую,че непонятно потом спрошу.
RAPON
Цитата(Lapp @ 14.05.2007 5:58) *

мисс_граффити, почто ноль не в фаворе? smile.gif
Да, лучше воспользоваться case. Типа так:
case c in
'0'..'9': begin
Write©;
s:=s+c;
end;
#8: if Length(s)>0 then begin
Write(#8,' ',#8);
Delete(s,Length(s),1)
end;
#13: if Length(s)>0 then begin
WriteLn;
Val(s,x,e)
end;


Что делает эта часть программы ?можно узнать,точно?
мисс_граффити
Цитата
мисс_граффити, почто ноль не в фаворе?

blink.gif не знаю. сказывается делание лабораторок по матстатистике.
Lapp
Цитата(RAPON @ 14.05.2007 23:06) *

Что делает эта часть программы ?можно узнать,точно?

Да, конечно.
Это:
1. распознавание введенного символа (переменная c), а также
2. реакция на этот символ (если цфра - добавляем к вводимой строке, если энтер - переводим строку в число, если бакспейс - удаляем символ и переходим на одну позицию вперед, остальные символы игнорируем).

Это как бы центральная часть программы. Теперь нужно организовать цикл с опросом клавиатуры и вводом символа. Выход из цикла по признаку c=#13
RAPON
Цитата(Lapp @ 14.05.2007 23:27) *

Да, конечно.
Это:
1. распознавание введенного символа (переменная c), а также
2. реакция на этот символ (если цфра - добавляем к вводимой строке, если энтер - переводим строку в число, если бакспейс - удаляем символ и переходим на одну позицию вперед, остальные символы игнорируем).

Это как бы центральная часть программы. Теперь нужно организовать цикл с опросом клавиатуры и вводом символа. Выход из цикла по признаку c=#13

А переменную C нужно описать CHAR?
а эта часть это и есть уже один опрос,да?
RAPON
если CHAR могу заранее сказать что ,после "0".. у меня ошибку 41 пишет,а понять не могу че просит у меня буквы там непонятные..
RAPON
а сase почему in стоит?вроде же только of может стоять..
а здесь readkey надо будет использовать?
Lapp
Цитата(RAPON @ 15.05.2007 1:13) *

после "0".. у меня ошибку 41 пишет

Я извиняюсь, описка произошла: вместо "in" поставь "of". Глупейшая ошибка, извини..

Для того, чтоб понимать ошибки по номерам (и для многих других полезных целей), скачай вот это:
http://download.excode.ru/download277.html

И если будут вопросы - приводи текст программы.
Успехов!
RAPON
М
Теги !


СПАСИБО БОЛЬШОЕ ЗА ПОМОЩЬ!!!Вот моя задача!
Uses crt;
Var c:char;
S:string;
X,e:integer;
Function far(l:byte):integer;
Label 1,2;
Begin
1:c:=readkey;
case c of
‘0’..’9’:begin
write©;
s:=s+c;
goto 1;
end;
#8:if length(s)>0 then begin
write(#8,’ ‘,#8);
delete(s,length(s),1);
goto 1;
end;
#13:begin
if length(s)>0 then begin
writekn;
val(s,x,e);
goto 2;
end;
goto 1;
end;
else goto 1
end;
2:far:=x;
end;
begin
far(1);
readln
end.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.