Как так сделать, чтобы выбор цифры осуществлялся нажатием клавиши "Enter" столько раз сколько одинаковых цифр надо выбрать.Например, выбрал кнопку "1" и нажал "Enter" три раза, должно получится 111. Я думаю вы меня поняли, что я хочу узнать?
Unconnected
25.01.2009 0:20
А как выбирается цифра?
Mnogosisa_pravda_ona
25.01.2009 0:36
с помощью стрелок. Вот так выглядит калькулятор
Unconnected
25.01.2009 0:49
Т.е. у тебя вообще только интерфейс пока что? Нажатия на цифры вообще не обрабатываются?
Mnogosisa_pravda_ona
25.01.2009 0:51
ну операции "+","-","/","*" написаны.Вот теперь с цифрами вожусь
Добавлено через 8 мин. Вот задать кол-во цифр я могу,а вот чтоб решал уже пользователь, не получается.
Unconnected
25.01.2009 1:19
Ну, как вариант, можно завести двумерный массив, в него "перенести" весь твой интерфейс завести две переменные для хранения координат,и, при нажатии, например, стрелки вправо, прибавлять к переменной, отвечающей за столбцы, единицу. А при нажатии Enter узнавать, чему равны координаты, и брать из матрицы цифру с такими координатами.
Mnogosisa_pravda_ona
25.01.2009 1:21
Я кстате напутал не стрелками прибавлять а "Enter'ом", А можешь пример привести? а то у меня с представлением плохо
Unconnected
25.01.2009 1:40
Для начала покажи то, что ты уже сделал, а то я так и не понял твоего интерфейса...
Mnogosisa_pravda_ona
25.01.2009 1:48
Короче я хочу сделать калькулятор как windows'e только вместо мышкой, управлять стрелками и выбирать Enter'om. Вот код
volvo
25.01.2009 2:20
Mnogosisa_pravda_ona, все довольно просто, свой цикл while true do меняешь вот на этот:
count := 0; while true do begin ch := #1; while (ch <> #13) and (ch <> #0) do ch := readkey; if ch = #0 then ch := readkey; case ch of #72: kn:=kn-1; #80: kn:=kn+1; #75: kn:=kn-1; #77: kn:=kn+1; #13: begin case kn of 1: begin plus; textcolor(red); lett := '+'; end; 2: begin minus; textcolor(red); lett := '-'; end; 3: begin multiply; textcolor(red); lett := '*'; end; 4: begin separate; textcolor(red); lett := '/'; end; 5, 6, 7, 9, 10, 11, 12, 13, 15, 16: begin for i := 0 to 9 do if digits[i] = kn then a := i; textcolor(green); lett := chr(a + ord('0')); end;
А вот ещё вопрос появился.Совсем не подумал как вводить второе число?
Mnogosisa_pravda_ona
25.01.2009 20:15
Никто не поможет со вторым числом?
volvo
25.01.2009 21:11
А что со вторым числом? Точно так же, как и первое... Только введи доп. переменную, скажем, isSecond: Boolean, в начале присвой ее False, и при нажатии любой из НЕцифровых кнопок меняй на True. Вот тебе и будет индикатор, какое число считывается в настоящий момент, если False - то первое, если True - то второе...
Можно сделать эту переменную не Boolean, а Byte, тогда сможешь вводить таким же образом и третье, и четвертое и т.д. числа...
Mnogosisa_pravda_ona
25.01.2009 21:18
А т.е. надо ко второму числу присвоить другую переменную(напрмер integer) и завести второй массив для ввода повторяющихся цифр?А ещё как можно ограничить ввод цифр в пределах моей нарисованной строки?
volvo
25.01.2009 22:12
Цитата
т.е. надо ко второму числу присвоить другую переменную(напрмер integer) и завести второй массив для ввода повторяющихся цифр?
(после ввода первого числа жмешь знак, операции, потом второе число, потом "="... А вот потом - сюрприз! Можешь вводить еще один знак, и еще одно число, и так далее, пока не надоест, и не выйдешь из программы. Только еще раз повторяю: все действия - через знак "=" !!!)
Как ограничить ввод цифр - попробуй подумать сам...
Mnogosisa_pravda_ona
26.01.2009 1:40
Ну вот действительно сюрприз! Там же inc'и. Я даже без понятия как ограничить...
TheDimaT
20.01.2012 2:30
program Calkulytor; uses crt; var a, b, c, d: real;