Не работает меню - C (СИ)
Формулировка задачи:
помогите найти ошибку, надо что бы при запуске программа выдавала меню. при нажатии на кнопку 1 программа должна вывести на экран график косинуса, при нажатии на 2 график синуса и т.д., а при на нажитии на клавишу 5 выходила. работает только клавиша 5, т.е. при нажатии на неё программа выходит, а на все остальные клавиши почему то не реагирует...
#include <stdio.h> #include <conio.h> #include <stdlib.h> #include <math.h> #include <graphics.h> #define BGIPATH "C:\\borlandc\\bgi" #define one 49 #define two 50 #define thre 51 #define four 52 #define five 53 void Initialize(); void Menu(); void cos(); void sin(); void tg(); void ctg(); int GraphDriver; int GraphMode; int ErrorCode; int MaxColors; void main() { Initialize(); Menu(); } void sin() { float x [200] , y[200] , s=0.0; int i, n, lx, ly, dx; n=(int)(4*3.14/0.1)+1; i = 0; x[0]= 0.0; for (;i<=n;) { y[i] = sin (x[i]); i++; s+=0.1; x[i]=s; } line(10,50,10,450); line(10,250,610,250); outtextxy(3,250,"0"); outtextxy(615,250,"x"); outtextxy(8,40,"y"); setcolor (13); outtextxy(550,10,"- sin(x)"); dx = (int) 600/n; lx = 10+dx; for (i=0; i<=n; i++) { ly = (int) (250-150*y[i]); if (i==0) { moveto(10, ly); continue; } lineto(lx, ly); lx+= dx; } } void cos() { float x [200] , s=0.0, y1[200]; int i, n, lx, ly, dx; n=(int)(4*3.14/0.1)+1; i = 0; x[0]= 0.0; for (;i<=n;) { y1[i] = cos (x[i]); i++; s+=0.1; x[i]=s; } line(10,50,10,450); line(10,250,610,250); outtextxy(3,250,"0"); outtextxy(615,250,"x"); outtextxy(8,40,"y"); setcolor(8); outtextxy(550,20,"- cos(x)"); dx = (int) 600/n; lx = 10+dx; for(i=0;i<=n;i++) { ly=(int)(250-150*y1[i]); if(i==0) {moveto(10,ly); continue;} lineto(lx,ly); lx+=dx; } } void tg() { float x [200] , s=0.0, y2[200]; int i, n, lx, ly, dx; n=(int)(4*3.14/0.1)+1; i = 0; x[0]= 0.0; for (;i<=n;) { y2[i] = tan (x[i]); i++; s+=0.1; x[i]=s; } line(10,50,10,450); line(10,250,610,250); outtextxy(3,250,"0"); outtextxy(615,250,"x"); outtextxy(8,40,"y"); setcolor(14); outtextxy(550,30,"- tg(x)"); dx = (int) 600/n; lx = 10+dx; for(i=0;i<=n;i++) { ly=(int)(250-150*y2[i]); if(i==0) {moveto(10,ly); continue;} lineto(lx,ly); lx+=dx; } } void ctg() { clrscr(); float x [200] , s=0.0, y3[200]; int i, n, lx, ly, dx; n=(int)(4*3.14/0.1)+1; i = 0; x[0]= 0.0; for (;i<=n;) { y3[i] = cos(x[i])/sin(x[i]); i++; s+=0.1; x[i]=s; } line(10,50,10,450); line(10,250,610,250); outtextxy(3,250,"0"); outtextxy(615,250,"x"); outtextxy(8,40,"y"); setcolor(2); outtextxy(550,40,"- ctg(x)"); dx = (int) 600/n; lx = 10+dx; for(i=0;i<=n;i++) { ly=(int)(250-150*y3[i]); if(i==0) {moveto(10,ly); continue;} lineto(lx,ly); lx+=dx; } } void Initialize() { detectgraph (&GraphDriver,&GraphMode); initgraph(&GraphDriver,&GraphMode,BGIPATH); ErrorCode=graphresult(); if (ErrorCode!=grOk) { printf("Oshibka Inicializacii:%S\n",grapherrormsg(ErrorCode)); exit(1); } MaxColors=getmaxcolor()+1; } void Menu() { int i; cleardevice(); setviewport(100,100,50,40,1); clearviewport(); rectangle(100,100,550,400); settextstyle(10,0,1); setbkcolor(BLACK); setcolor(WHITE); outtextxy(290,110,"MENU"); setcolor(13); settextstyle(3,0,3); outtextxy(140,200,"1. sin(x)"); setcolor(8); settextstyle(3,0,3); outtextxy(410,200,"2. cos(x)"); setcolor(14); settextstyle(3,0,3); outtextxy(140,250,"3. tg(x)"); setcolor(2); settextstyle(3,0,3); outtextxy(410,250,"4. ctg(x)"); setcolor(RED); settextstyle(3,0,3); outtextxy(290,300,"5. EXIT"); for(i=getch();i!=five;i=getch()) { if(i) continue; switch (getch()) { case one: void sin(); break; case two: void cos(); break; case thre: void tg(); break; case four: void ctg(); break; default:continue; } } }
Решение задачи: «Не работает меню»
textual
Листинг программы
switch (getch()) { case one: sin(); break; case two: cos(); break; case thre: tg(); break; case four: ctg(); break; default:continue; }
Объяснение кода листинга программы
switch (getch())
- функцияgetch()
используется для получения ввода пользователя, и результат ее работы используется в оператореswitch
.case one: sin(); break;
- если введенный символ соответствует 'one', то выполняется функцияsin()
.case two: cos(); break;
- если введенный символ соответствует 'two', то выполняется функцияcos()
.case thre: tg(); break;
- если введенный символ соответствует 'thre', то выполняется функцияtg()
.case four: ctg(); break;
- если введенный символ соответствует 'four', то выполняется функцияctg()
.default:continue;
- если введенный символ не соответствует ни одному из перечисленных выше, то выполняется командаcontinue
, которая пропускает оставшийся код в этом блокеswitch
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д