Не работает меню - 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;
}

Объяснение кода листинга программы

  1. switch (getch()) - функция getch() используется для получения ввода пользователя, и результат ее работы используется в операторе switch.
  2. case one: sin(); break; - если введенный символ соответствует 'one', то выполняется функция sin().
  3. case two: cos(); break; - если введенный символ соответствует 'two', то выполняется функция cos().
  4. case thre: tg(); break; - если введенный символ соответствует 'thre', то выполняется функция tg().
  5. case four: ctg(); break; - если введенный символ соответствует 'four', то выполняется функция ctg().
  6. default:continue; - если введенный символ не соответствует ни одному из перечисленных выше, то выполняется команда continue, которая пропускает оставшийся код в этом блоке switch.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.333 из 5
Похожие ответы