Помощь в написании студенческих работ
Антистрессовый сервис

Программа «Калькулятор»

КурсоваяПомощь в написанииУзнать стоимостьмоей работы

Проверьте правильность работы кнопки «» (backspace), для чего введите дробное число, а затем нажмите на клавиатуре «b» либо кликните мышью на этой кнопке. Число символов должно уменьшаться справа: сначала исчезают цифры после запятой. Процедура CLICK. Эта процедура изменяет цвет линии вокруг кнопки, и таким образом, пользователю кажется, что кнопка «нажимается». Нажатие кнопки сопровождается… Читать ещё >

Программа «Калькулятор» (реферат, курсовая, диплом, контрольная)

Министерство Образования РФ Пермский Государственный Политехнический Университет кафедра Автоматизированных Систем Управления КУРСОВАЯ РАБОТА по информатике

Калькулятор Пермь 2003

  • Постановка задачи
  • Работа с программой
  • Клавиши
  • Набор тестов и варианты исполнения программы
  • Программная документация

Постановка задачи

Разработать программу «Калькулятор» для работы с вещественными числами. Экран калькулятора должен содержать десятизначное число. Действия калькулятора: сложение, вычитание, умножение, деление, изменение знака числа, редактирование последней введенной цифры.

Исходные данные: два вещественных числа (от — 999 999 999.9 до 999 999 999.9) и знак операции (+,-,*,/), введенные с клавиатуры или с помощью мыши.

Результат - результат арифметической операции-одиннадцатизначное число (Максимум 10 знаков до запятой, при этом 1 знак после запятой).

Краткий алгоритм работы программы:

Ввод чисел и знака обработка вводатребуемая операция над числамивывод результата.

Блок-схема.

Ввод каждого числа производится в цикле. Цифры первого числа (x [1]) считываются до тех пор, пока не будет нажата знаковая клавиша (+, —, *, /).

Для этого используется цикл While f do. Цикл прогоняется каждый раз при нажатии кнопки. Переменная f принимает ложное значение, когда будет нажата кнопка знака и этот цикл прекратится.

После этого аналогично считываются цифры второго числа (x [2]) до тех пор, пока не будет нажата кнопка равно: f=false, когда будет нажата кнопка равно.

После этого программа с помощью оператора CASE выбирает нужный знак и производит необходимую операцию над числами. Полученное число выводится на экран. Потом переменной x присваивается значение этого результата, и, таким образом, можно редактировать результат и производить над ним действия.

В программе используются три метки (label 1, 2,3). Первая метка используется для перехода к вводу первого числа после вывода результата операции.

Вторая метка предназначена для того, чтобы быстро выйти из программы.

Третья метка используется для обнуления данных, когда пользователь нажимает кнопку сброса результата (С)

В программе используется несколько процедур, основные из них:

Процедура CLICK. Эта процедура изменяет цвет линии вокруг кнопки, и таким образом, пользователю кажется, что кнопка «нажимается». Нажатие кнопки сопровождается звуковым сигналом. Каждой цифре соответствует свой тон сигнала.

Процедура ZAST. Это заставка. Она рисует текст «бегущей» строкой. Для этого сначала текст выводится на экран, затем этот же текст выводится в то же место цветом фона. Затем этот текст выводится на экран, но со смещением влево. И так далее. Дойдя краев экрана, текст останавливается и переливается различными цветами. Происходит переливание текста, пока не будет нажата любая кнопка клавиатуры, для чего используется keypressed.

Процедура HELP. Эта процедура выводит на экран правила пользования калькулятором, а также фамилии разработчиков. Причем при каждом нажатии на кнопке вызова этой процедуры на экран выводится новая страница. Затем выводится первая и т. д. Это осуществляется при помощи счетчика L (см. текст программы) — глобальной переменной, которая меняет значение при каждом вызове данной процедуры. Текст предыдущей страницы выводится цветом фона, т. е. закрашивается, затем выводится текст новой страницы.

Процедура PICTURE. Рисует изображение самого калькулятора — корпус, экран, кнопки. По контуру корпуса калькулятора прорисовываются линии — белого и темно-серого цвета, что придает ему объемную форму. Вокруг каждой кнопки также прорисовываются такие линии, а при их нажатии линии меняют цвет (Процедура CLICK)

Работа с программой

Ввод чисел осуществляется при помощи клавиатуры иили мыши. Сначала вводится первое число, затем вводится знак нужной операции и нажимается знак равно. После чего на экран в сопровождении звука выводится результат, который в свою очередь можно редактировать и использовать как входное число.

Если вам необходимо ввести отрицательное число, то сначала введите нужное положительное, а затем измените его знак.

Клавиши

Для ввода чисел используются цифровые клавиши 0.9. Для ввода знака «+», «-», «*», «/» — - - плюс, минус, умножить и поделить соответственно.". «-для ввод десятичной дроби.

" р" - строчная латинская буква. Для изменения знака числа +/-.

" в" - Back. Для стирания последней цифры.

" с" - Clear. Очистка экрана калькулятора для ввода новых чисел.

" q" -quit. Выход из программы.

" z" -заставка. После заставки введенные данные не теряются.

" h" -Помощь.

Набор тестов и варианты исполнения программы

В работе программы возможны две стандартные ошибки:

1. Деление на ноль

калькулятор программа вещественное число

тест: ввести число, затем нажать «/», затем 0, на экране появится сообщение об ошибке (см. рисунок).

press any key - необходимо нажать любую клавишу на клавитуре. После нажатия можно снова вводить числа и производить над ними операции

2. Слишком большое число

тест: перемножить два больших числа, например 9 999 999 и 99 999 999, на экране появится сообщение об ошибке: «деление на ноль, press any key» .

После выдачи ошибки необходимо нажать любую клавишу.

Ввод можно производить и с клавиатуры и мышью:

Примеры.

Нажмите на клавиатуре 5, затем мышью кликните на панели калькулятора цифру 7, затем опять на клавиатуре нажмите «*», введите еще одно число и кликните мышью на знаке «=». На экране калькулятора выдастся ответ.

Проверьте правильность работы кнопки «» (backspace), для чего введите дробное число, а затем нажмите на клавиатуре «b» либо кликните мышью на этой кнопке. Число символов должно уменьшаться справа: сначала исчезают цифры после запятой.

В любой момент можно выйти из программы, для этого нажмите клавишу «q» либо мышью выберите «Вых» .

Также в любой момент можно посмотреть заставку и помощь.

Нажав «с», вы сбросите все введенные или полученные данные, после чего вы можете заново вводить числа.

Программная документация

Программа называется kursovaya. exe. Для удобства использования (русификации) программы создан файл kursovaya. bat. Использует стандартные модули crt и graph, а также дополнительный mouse. Исходные данные вводятся с клавиатуры и мышью. Знаковые клавиши описаны в окне самого калькулятора. ВНИМАНИЕ! Клавиши действуют только на латинском языке и в нижнем регистре (строчные). Для выхода используйте клавишу «q» .

Текст программы:

uses crt, graph, mouse;

var

dr, mr: integer;

i, j, y, {вспомогательные}

k, {количество символов до запятой}

d, {после запятой}

l:integer; {номер страницы}

f, ft, {вспомогательные}

fc, {ввод с клавиатуры или мышью}

fm, {число целое}

f1:boolean; {деление на ноль}

x: array[1.2] of real; {1 и 2 число}

ch, znak: char; {хранят код нажатой клавиши и введенный знак}

s:string;

label 1,2,3; {метки 2-для быстрого выхода из программы}

{3-сброс} {2-возврат к вводу 1 числа}

procedure click (a, b, c, d, w:integer); {эмуляция нажатия кнопки}

begin

setcolor (8);

rectangle (a, b, c, d);

setcolor (15);

line (c, d, c, b);

line (c, d, a, d);

sound (w);

delay (15 000);

nosound;

setcolor (15);

rectangle (a, b, c, d);

setcolor (8);

line (c, d, c, b);

line (c, d, a, d);

end;

procedure help; {помощь и о программе}

var

a: array[1.20] of string[50];

i:integer;

begin

a[1]:='Курсовая работа по информатике';

a[2]: ='Выполнили :';

a[3]: ='Пищулев К. В. и Бухаров А. Н.';

a[4]: ='Пермь ПГТУ ЭТФ ';

a[5]: ='Май 2003';

a[6]: ='Работа с программой';

a[7]: ='Ввод осуществляется с клавиатуры или';

a[8]: ='при помощи мыши.';

a[9]: ='Управление с калвиатуры:';

a[10]: ='q — выход из прораммы';

a[11]: ='c — сброс данных';

a[12]: ='p — изменение знака';

a[13]: ='h — помощь ';

a[14]: ='+,-,/,* — соответствующие операции';

a[20]: ='z — заставка';

a[15]: ='Возникли проблемы?';

a[16]: ='q, c, p — это латинские буквы в нижнем регистре';

a[17]: ='если они не действуют — посмотрите, не включен';

a[18]: ='ли у вас CAPSLOCK и или русский язык';

a[19]: ='переключение между языками — правый CTRL';

click (60,260,90,280,440);

if l<3 then l:=l+1

else l:=1;

if l=1 then

begin

setcolor (1);

outtextxy (260,20,'Помощь страница 3');

outtextxy (260,40,a[15]);

outtextxy (260,80,a[16]);

outtextxy (260,100,a[17]);

outtextxy (260,120,a[18]);

outtextxy (260,140,a[19]);

setcolor (4);

outtextxy (260,20,'Помощь страница 1');

setcolor (10);

outtextxy (260,40,a[1]);

outtextxy (260,80,a[2]);

outtextxy (260,100,a[3]);

outtextxy (260,120,a[4]);

outtextxy (260,140,a[5]);

end;

if l=2 then

begin

setcolor (1);

outtextxy (260,20,'Помощь страница 1');

outtextxy (260,40,a[1]);

outtextxy (260,80,a[2]);

outtextxy (260,100,a[3]);

outtextxy (260,120,a[4]);

outtextxy (260,140,a[5]);

setcolor (4);

outtextxy (260,20,'Помощь страница 2');

setcolor (10);

outtextxy (260,40,a[6]);

outtextxy (260,80,a[7]);

outtextxy (260,100,a[8]);

outtextxy (260,120,a[9]);

outtextxy (260,140,a[10]);

outtextxy (260,160,a[11]);

outtextxy (260,180,a[12]);

outtextxy (260,200,a[13]);

outtextxy (260,220,a[14]);

outtextxy (260,240,a[20]);

end;

if l=3 then

begin

setcolor (1);

outtextxy (260,20,'Помощь страница 2');

outtextxy (260,40,a[6]);

outtextxy (260,80,a[7]);

outtextxy (260,100,a[8]);

outtextxy (260,120,a[9]);

outtextxy (260,140,a[10]);

outtextxy (260,160,a[11]);

outtextxy (260,180,a[12]);

outtextxy (260,200,a[13]);

outtextxy (260,220,a[14]);

outtextxy (260,240,a[20]);

setcolor (4);

outtextxy (260,20,'Помощь страница 3');

setcolor (10);

outtextxy (260,40,a[15]);

outtextxy (260,80,a[16]);

outtextxy (260,100,a[17]);

outtextxy (260,120,a[18]);

outtextxy (260,140,a[19]);

end;

end;

procedure exit; {выдача звука о выходе}

begin {эмуляция нажатия кнопки выход}

setcolor (15);

arc (225,270,210,390,20);

setcolor (8);

arc (225,270,30,210,20);

for i:=1 to 15 do

begin

sound (100*i);

delay (5000);

nosound;

end;

for i:=15 downto 1 do

begin

sound (100*i);

delay (5000);

nosound;

end;

end;

procedure Picture; {рисование калькулятора}

const

a=30; b=250;c=300;

begin

cleardevice;

setbkcolor (1);

setfillstyle (1,7);

setlinestyle (0,0,2);

bar (a, a, b, c); {основа}

setcolor (15);

rectangle (a, a, b, c);

setcolor (8);

line (a, c, b, c);

line (b, a, b, c);

setcolor (8); {окно}

rectangle (2*a, 2*a, b-a, 3*a);

setcolor (15);

line (2*a, 3*a, b-a, 3*a);

line (b-a, 3*a, b-a, 2*a);

for i:=0 to 3 do {кнопки}

for j:=0 to 4 do

begin

setcolor (15);

rectangle (2*a+i*35,4*a+j*35,2*a+30+i*35,4*a+20+j*35);

setcolor (8);

line (2*a+30+i*35,4*a+20+j*35,2*a+30+i*35,4*a+j*35);

line (2*a+30+i*35,4*a+20+j*35,2*a+i*35,4*a+20+j*35);

end;

setcolor (8);

arc (225,270,210,390,20);

setcolor (15);

arc (225,270,30,210,20);

setcolor (8);

arc (225,130,210,390,10);

setcolor (15);

arc (225,130,30,210,10);

setcolor (1);

outtextxy (70,125,'1');

outtextxy (105,125,'2');

outtextxy (140,125,'3');

outtextxy (70,160,'4');

outtextxy (105,160,'5');

outtextxy (140,160,'6');

outtextxy (70,195,'7');

outtextxy (105,195,'8');

outtextxy (140,195,'9');

outtextxy (105,230,'0');

setcolor (4);

outtextxy (175,125,'+');

outtextxy (175,160,'-');

outtextxy (175,195,'*');

outtextxy (175,230,'/');

outtextxy (64,230,'+/-');

outtextxy (140,230,'.');

setcolor (10);

outtextxy (62,265,'Пом');

outtextxy (100,265,'Зас');

setcolor (5);

outtextxy (135,265,'<-');

outtextxy (175,265,'=');

outtextxy (210,265,'вых');

outtextxy (220,125,'C');

setcolor (10);

outtextxy (280,325,'Используйте клавиатуру или мышь');

outtextxy (280,340,'при вводе с клавиатуры переключите язык на');

outtextxy (280,355,'латинский (правый CTRL) и отключите CAPSLOCK');

outtextxy (280,370,'если нужен ввод отрицательного числа, то ');

outtextxy (280,385,'сначала введите число, а потом нажмите');

outtextxy (280,400,' «р» (+/-) ');

end;

procedure zast; {заставка}

begin

click (95,260,125,280,440);

settextstyle (0,0,5);

cleardevice;

for i:=1 to 100 do

begin

setcolor (3);

outtextxy (600-i*6,50,'Курсовая');

outtextxy (i*6−200,150,'работа');

outtextxy (600-i*6,250,'по информатике');

sound (10*i);

delay (500);

setcolor (1);

outtextxy (600-i*6,50,'Курсовая');

outtextxy (6*i-200,150,'работа');

outtextxy (600-i*6,250,'по информатике');

end;

setcolor (4);

settextstyle (0,0,1);

outtextxy (10,10,'нажмите любую клавишу');

settextstyle (0,0,5);

while not (keypressed) do

for i:=1 to 15 do

begin

setcolor (i);

sound (i*15);

outtextxy (0,50,'Курсовая');

outtextxy (400,150,'работа');

outtextxy (0,250,'по информатике');

delay (1000);

end;

nosound;

readkey;

settextstyle (0,0,1);

picture;

end;

begin

initgraph (dr, mr,'c:bpbgi');

initmouse; {инициализация графики и мыши}

mousegotoxy (0,0);

showmouse;

picture;

l:=0;

3:fm:=false;

d:=0;

k:=0;

y:=10-k;;

x[1]: =0;

setcolor (10);

str (x[1]:0:d, s);

bar (62,62,218,88);

outtextxy (75,65,s);

1:

f:=true;

setcolor (10);

str (x[1]:0:d, s);

bar (62,62,218,88);

outtextxy (75,65,s);

while f do

begin

fc:=false; {нажата клавиша}

while not (mousepressed)and not (fc) do {ожидани ввода}

if keypressed then begin ch:=readkey; fc:=true; end

else fc:=false;

if x[1]=0 then k:=0;

if fc then {если нажата клавиша}

if not (fm) then {если точка не нажата}

case ch of

'1':if k<9 then begin x[1]: =x[1]*10+1; k:=k+1; click (60,120,90,140,440);end;

'2':if k<9 then begin x[1]: =x[1]*10+2; k:=k+1; click (95,120,125,140,500);end;

'3':if k<9 then begin x[1]: =x[1]*10+3; k:=k+1; click (130,120,160,140,550);end;

'4':if k<9 then begin x[1]: =x[1]*10+4; k:=k+1; click (60,155,90,175,600);end;

'5':if k<9 then begin x[1]: =x[1]*10+5; k:=k+1; click (95,155,125,175,650);end;

'6':if k<9 then begin x[1]: =x[1]*10+6; k:=k+1; click (130,155,160,175,700);end;

'7':if k<9 then begin x[1]: =x[1]*10+7; k:=k+1; click (60,190,90,210,750);end;

'8':if k<9 then begin x[1]: =x[1]*10+8; k:=k+1; click (95,190,125,210,800);end;

'9':if k<9 then begin x[1]: =x[1]*10+9; k:=k+1; click (130,190,160,210,850);end;

'0':if k<9 then begin x[1]: =x[1]*10+0; k:=k+1; click (95,225,125,245,900);end;

'p':begin x[1]: =(-1)*x[1]; click (60,225,90,245,950); end;

'z':zast;

'+':begin f:=false; znak:=ch;click (165,120,195,140,1000); end;

'-':begin f:=false; znak:=ch;click (165,155,195,175,1050); end;

'*':begin f:=false; znak:=ch;click (165,190,195,210,1100); end;

'/':begin f:=false; znak:=ch;click (165,225,195,245,1150); end;

'.':begin fm:=true; click (130,225,160,245,1200); end;

'b':begin x[1]: =round (x[1]) div 10; k:=k-1; click (130,260,160,280,300);end;

'h':help;

'q':begin exit; goto 2;end;

'c': begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

end

else {если точка была нажата}

case ch of

'1':if d

'2':if d

'3':if d

'4':if d

'5':if d

'6':if d

'7':if d

'8':if d

'9':if d

'0':if d

'p':begin x[1]: =(-1)*x[1]; click (60,225,90,245,950); end;

'z':zast;

'+':begin f:=false; znak:=ch;click (165,120,195,140,1000); end;

'-':begin f:=false; znak:=ch;click (165,155,195,175,1050); end;

'*':begin f:=false; znak:=ch;click (165,190,195,210,1100); end;

'/':begin f:=false; znak:=ch;click (165,225,195,245,1150); end;

'h':help;

'b':begin if d>0 then begin str (x[1]: d: d, s); delete (s, k+d+1,1);d:=d-1; val (s, x[1], j);end;

if d=0 then fm:=false;

click (130,260,160,280,300); end;

'q':begin exit; goto 2; end;

'c': begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

end

else {если кликнута мышь}

if not (fm) then

begin

if x[1]=0 then k:=0;

if mousein (60,120,90,140) then if k<9 then begin click (60,120,90,140,440);x[1]: =x[1]*10+1; k:=k+1; end;

if mousein (95,120,125,140)then if k<9 then begin click (95,120,125,140,500);x[1]: =x[1]*10+2; k:=k+1; end;

if mousein (130,120,160,140)then if k<9 then begin click (130,120,160,140,550); x[1]: =x[1]*10+3; k:=k+1; end;

if mousein (60,155,90,175)then if k<9 then begin click (60,155,90,175,600);x[1]: =x[1]*10+4; k:=k+1; end;

if mousein (95,155,125,175)then if k<9 then begin click (95,155,125,175,650);x[1]: =x[1]*10+5; k:=k+1; end;

if mousein (130,155,160,175)then if k<9 then begin click (130,155,160,175,700);x[1]: =x[1]*10+6; k:=k+1; end;

if mousein (60,190,90,210)then if k<9 then begin click (60,190,90,210,750);x[1]: =x[1]*10+7; k:=k+1; end;

if mousein (95,190,125,210)then if k<9 then begin click (95,190,125,210,800);x[1]: =x[1]*10+8; k:=k+1; end;

if mousein (130,190,160,210)then if k<9 then begin click (130,190,160,210,850);x[1]: =x[1]*10+9; k:=k+1; end;

if mousein (95,225,125,245)then if k<9 then begin click (95,225,125,245,900);x[1]: =x[1]*10+0; k:=k+1; end;

if mousein (165,120,195,140)then begin click (165,120,195,140,1000);f:=false; znak:='+'; end;

if mousein (165,155,195,175)then begin click (165,155,195,175,1050);f:=false; znak:='-'; end;

if mousein (165,190,195,210)then begin click (165,190,195,210,1100);f:=false; znak:='*'; end;

if mousein (165,225,195,245)then begin click (165,225,195,245,1150);f:=false; znak:='/'; end;

if mousein (60,225,90,245) then begin click (60,225,90,245,950);x[1]: =(-1)*x[1]; end;

if mousein (130,225,160,245)then begin fm:=true; click (130,225,160,245,1200); end;

if mousein (130,260,160,280) then begin x[1]: =round (x[1]) div 10; k:=k-1; click (130,260,160,280,300);end;

if mousein (205,250,245,290) then begin exit; goto 2; end;

if mousein (60,260,90,280) then help;

if mousein (95,260,125,280) then zast;

if mousein (215,120,235,140) then begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

end

else {точка нажата}

begin

if mousein (60,120,90,140) then if d

if mousein (95,120,125,140) then if d

if mousein (130,120,160,140) then if d

if mousein (60,155,90,175) then if d

if mousein (95,155,125,175) then if d

if mousein (130,155,160,175) then if d

if mousein (60,190,90,210) then if d

if mousein (95,190,125,210) then if d

if mousein (130,190,160,210) then if d

if mousein (95,225,125,245) then if d

if mousein (60,225,90,245) then begin x[1]: =(-1)*x[1]; click (60,225,90,245,950); end;

if mousein (165,120,195,140) then begin f:=false; znak:='+';click (165,120,195,140,1000); end;

if mousein (165,155,195,175) then begin f:=false; znak:='-';click (165,155,195,175,1050); end;

if mousein (165,190,195,210) then begin f:=false; znak:='*';click (165,190,195,210,1100); end;

if mousein (165,225,195,245) then begin f:=false; znak:='/';click (165,225,195,245,1150); end;

if mousein (130,260,160,280) then begin str (x[1]: d: d, s); delete (s, k+d+1,1);d:=d-1; val (s, x[1], j);

if d=0 then fm:=false; click (130,260,160,280,300); end;

if mousein (205,250,245,290) then begin exit; goto 2; end;

if mousein (60,260,90,280) then help;

if mousein (95,260,125,280) then zast;

if mousein (215,120,235,140) then begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

end;

setcolor (10);

str (x[1]: d: d, s);

bar (62,62,218,88);

outtextxy (75,65,s);

y:=10-k;

end;

fm:=false;

d:=0;

k:=0;

y:=10-k;;

x[2]:=0;

f:=true;

setcolor (10);

str (x[2]:0:d, s);

bar (62,62,218,88);

outtextxy (75,65,s);

while f do

begin

fc:=false; {нажата клавиша}

while not (mousepressed)and not (fc) do

if keypressed then begin ch:=readkey; fc:=true; end

else fc:=false;

if x[2]=0 then k:=0;

if fc then

if not (fm) then {если точка не нажата}

case ch of

'1':if k<9 then begin x[2]: =x[2]*10+1; k:=k+1; click (60,120,90,140,440);end;

'2':if k<9 then begin x[2]: =x[2]*10+2; k:=k+1; click (95,120,125,140,500);end;

'3':if k<9 then begin x[2]: =x[2]*10+3; k:=k+1; click (130,120,160,140,550);end;

'4':if k<9 then begin x[2]: =x[2]*10+4; k:=k+1; click (60,155,90,175,600);end;

'5':if k<9 then begin x[2]: =x[2]*10+5; k:=k+1; click (95,155,125,175,650);end;

'6':if k<9 then begin x[2]: =x[2]*10+6; k:=k+1; click (130,155,160,175,700);end;

'7':if k<9 then begin x[2]: =x[2]*10+7; k:=k+1; click (60,190,90,210,750);end;

'8':if k<9 then begin x[2]: =x[2]*10+8; k:=k+1; click (95,190,125,210,800);end;

'9':if k<9 then begin x[2]: =x[2]*10+9; k:=k+1; click (130,190,160,210,850);end;

'0':if k<9 then begin x[2]: =x[2]*10+0; k:=k+1; click (95,225,125,245,900);end;

'z':zast;

'p':begin x[2]: =(-1)*x[2]; click (60,225,90,245,950); end;

'.':begin fm:=true; click (130,225,160,245,1200); end;

'h':help;

'b':begin x[2]: =round (x[2]) div 10; k:=k-1; click (130,260,160,280,300);end;

'c': begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

'q':begin exit; goto 2; end;

'=':begin

case znak of

'+': x[1]: =x[1]+x[2];

'-': x[1]: =x[1]-x[2];

'*': x[1]: =x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]: =x[1]/x[2]; end else f1:=true;

end;

f:=false;

click (165,260,195,280,1300);

end;

end

else {если точка была нажата}

case ch of

'1':if d

'2':if d

'3':if d

'4':if d

'5':if d

'6':if d

'7':if d

'8':if d

'9':if d

'0':if d

'z':zast;

'p':begin x[2]: =(-1)*x[2]; click (60,225,90,245,950); end;

'h':help;

'b':begin if d>0 then begin str (x[2]: d: d, s); delete (s, k+d+1,1);d:=d-1; val (s, x[2], j);end;

if d=0 then fm:=false;

click (130,260,160,280,300); end;

'q':begin exit; goto 2; end;

'c': begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

'=':begin

case znak of

'+': x[1]: =x[1]+x[2];

'-': x[1]: =x[1]-x[2];

'*': x[1]: =x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]: =x[1]/x[2];end else f1:=true;

end;

f:=false;

click (165,260,195,280,1300);

end;

end

else {если кликнута мышь}

if not (fm) then

begin

if x[2]=0 then k:=0;

if mousein (60,120,90,140) then if k<9 then begin click (60,120,90,140,440);x[2]: =x[2]*10+1; k:=k+1; end;

if mousein (95,120,125,140)then if k<9 then begin click (95,120,125,140,500);x[2]: =x[2]*10+2; k:=k+1; end;

if mousein (130,120,160,140)then if k<9 then begin click (130,120,160,140,550); x[2]: =x[2]*10+3; k:=k+1; end;

if mousein (60,155,90,175)then if k<9 then begin click (60,155,90,175,600);x[2]: =x[2]*10+4; k:=k+1; end;

if mousein (95,155,125,175)then if k<9 then begin click (95,155,125,175,650);x[2]: =x[2]*10+5; k:=k+1; end;

if mousein (130,155,160,175)then if k<9 then begin click (130,155,160,175,700);x[2]: =x[2]*10+6; k:=k+1; end;

if mousein (60,190,90,210)then if k<9 then begin click (60,190,90,210,750);x[2]: =x[2]*10+7; k:=k+1; end;

if mousein (95,190,125,210)then if k<9 then begin click (95,190,125,210,800);x[2]: =x[2]*10+8; k:=k+1; end;

if mousein (130,190,160,210)then if k<9 then begin click (130,190,160,210,850);x[2]: =x[2]*10+9; k:=k+1; end;

if mousein (95,225,125,245)then if k<9 then begin click (95,225,125,245,900);x[2]: =x[2]*10+0; k:=k+1; end;

if mousein (60,225,90,245) then begin click (60,225,90,245,950);x[2]: =(-1)*x[2]; end;

if mousein (130,225,160,245)then begin fm:=true; click (130,225,160,245,1200); end;

if mousein (130,260,160,280) then begin x[2]: =round (x[2]) div 10; k:=k-1; click (130,260,160,280,300);end;

if mousein (205,250,245,290) then begin exit; goto 2; end;

if mousein (60,260,90,280) then help;

if mousein (95,260,125,280) then zast;

if mousein (215,120,235,140) then begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

if mousein (165,260,195,280) then

begin

case znak of

'+': x[1]: =x[1]+x[2];

'-': x[1]: =x[1]-x[2];

'*': x[1]: =x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]: =x[1]/x[2];end else f1:=true;

end;

f:=false;

click (165,260,195,280,1300);

end;

end

else {точка нажата}

begin

if mousein (60,120,90,140) then if d

if mousein (95,120,125,140) then if d

if mousein (130,120,160,140) then if d

if mousein (60,155,90,175) then if d

if mousein (95,155,125,175) then if d

if mousein (130,155,160,175) then if d

if mousein (60,190,90,210) then if d

if mousein (95,190,125,210) then if d

if mousein (130,190,160,210) then if d

if mousein (95,225,125,245) then if d

if mousein (60,225,90,245) then begin x[2]: =(-1)*x[2]; click (60,225,90,245,950); end;

if mousein (130,260,160,280) then begin str (x[2]: d: d, s); delete (s, k+d+1,1);d:=d-1; val (s, x[2], j);

if d=0 then fm:=false; click (130,260,160,280,300); end;

if mousein (205,250,245,290) then begin exit; goto 2; end;

if mousein (60,260,90,280) then help;

if mousein (95,260,125,280) then zast;

if mousein (215,120,235,140) then begin setcolor (15);arc (225,130,210,390,10);setcolor (8);arc (225,130,30,210,10);

sound (440); delay (5000);nosound;

setcolor (8);arc (225,130,210,390,10);setcolor (15);arc (225,130,30,210,10);

goto 3;

end;

if mousein (165,260,195,280) then

begin

case znak of

'+': x[1]: =x[1]+x[2];

'-': x[1]: =x[1]-x[2];

'*': x[1]: =x[1]*x[2];

'/': if x[2]<>0 then begin f1:=false; x[1]: =x[1]/x[2];end else f1:=true;

end;

f:=false;

click (165,260,195,280,1300);

end;

end;

setcolor (10);

str (x[2]: d: d, s);

bar (62,62,218,88);

outtextxy (75,65,s);

y:=10-k;

end;

str (x[1]:0:0,s);

k:=length (s);

if k<=10 then

begin

for i:=1 to 10 do

begin

sound (100*i);

delay (5000);

nosound;

end;

d:=10-k+1;

str (x[1]: 0: d, s);

setcolor (10);

bar (62,62,218,88);

outtextxy (75,65,s);

while (copy (s, k+d+1,1)='0')and (d<>0) do

d:=d-1;

if d=0 then fm:=false

else fm:=true;

end

else

begin

setcolor (4);

bar (62,62,218,88);

outtextxy (75,65,'Большое число');

setcolor (10);

outtextxy (65,77,'press any key');

sound (200);

delay (20 000);

delay (20 000);

delay (20 000);

nosound;

readkey;

x[1]: =0; d:=0;k:=0; fm:=false;

end;

if f1 then

begin

setcolor (4);

bar (62,62,218,88);

outtextxy (75,65,'Деление на ноль');

setcolor (10);

outtextxy (65,77,'press any key');

sound (200);

delay (20 000);

delay (20 000);

delay (20 000);

nosound;

readkey;

x[1]: =0; d:=0; k:=0;fm:=false;

f1:=false;

end;

goto 1;

2:

closegraph;

end.

Показать весь текст
Заполнить форму текущей работой