Не работает switch - C (СИ) (79068)
Формулировка задачи:
здравствуйте!
почему то не работает свитч когда запускаю программу.помогите найти ошибку!заранее благодарен.
код программы:
кода запускаю..ввожу цифру (например "1") жму ентер,он пишет нажмите любую клав..........и вылетает.
// 123.cpp : Defines the entry point for the console application.
//
#include <StdAfx.h>
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
void zadanie1 () {
int x,y;
printf("vvedite x,y:");
scanf("%d%d",&x,&y);
if ((x>0) && (y>0))
printf("pervaya chetvert");
if ((x<0) && (y>0))
printf("vtoray chetvert");
if ((x<0) && (y<0))
printf("tretaya chetvert ");
if ((x>0) && (y<0))
printf("chetvertaya chetvert ");
if ((x=0) && (y=0))
printf("nachalo koordinat");
if (x=0) printf("Error");
if (y=0) printf("Error");
system("pause");
}
void zadanie2 ()
{
int a,b,c;
double d,x1,x2;
printf("vvedite peremennie a,b,c:");
scanf("%d%d%d",&a,&b,&c);
d=b*b- 4 *a*c;
if (d<0) printf("Error");
else
{ d=sqrt(d);
x1= (-b+sqrt(d))/(2*a);
x2= (-b-sqrt(d))/(2*a);
if (x1==x2)printf("x1=%f\n",x1);
else
printf("x1=%f\nx2=%f\n",x1,x2);}
system("pause");
}
void zadanie3 ()
{
int i,n,s;
printf("vvedite chislo n factorial:");
scanf("%d",&n);
for (s=1,i=1;i<=n;i++);
s=s*i;
printf("s=%d\n",s);
system ("pause");
}
void zadanie4 ()
{
int n,a,i,s;
printf("vvedite chislo fibonachi n:");
scanf("%d",&n);
for (a=1,i=0;i<=n;a=i,i++);
s=a+i;
printf("s=%d",s);
system ("pause");
return;
}
void zadanie5 ()
{int i,x;
double y;
printf ("vvedite znachenie peremennoi x :");
scanf ( "%d",&x);
for (y=0,i=1; i<20; ++i);
y=i*x+i+y;
printf("y=%f",y);
system ("pause");
}
void zadanie6 ()
{
int i,x,n;
double y;
printf("vvedite znacheniya peremennih x,n:");
scanf("%d%d",&x,&n);
for (y=n/(x+1),i=1;i<n;i++);
y=y+(n-i)/(x+i+1);
printf("y=%f",y);
system ("pause");
}
void zadanie7 ()
{
int x,x1,x2,s,y,min,max,m1,m2;
printf("enter a segment [x1,x2]:");
scanf("%d%d",&x1,&x2);
printf("vvedite shag:");
scanf("%d",&s);
m1=x1;
m2=x2;
if (x1>0)
{min=x1*x1*x1-9*x1;
max=x1*x1*x1-9*x1;}
else
{min=x1*x1*x1*x1+2*x1*x1*x1-9*x1*x1-3*x1+6;
max=x1*x1*x1*x1+2*x1*x1*x1-9*x1*x1-3*x1+6;}
x=x1;
if (x>0) y=x*x*x-9*x;
else y=x*x*x*x+2*x*x*x-9*x*x-3*x+6;
if (y>max)
{max=y;
m2=x;}
printf("max=%d,x=%d)\n",max,x);
printf("min=%d,m1=%d)\n",min,m1);
system("pause");
}
void print_menu() {
printf("1. kvadrant\n");
printf("2. vichislenie kornei uravneniya\n");
printf("3. vichislenie faktoriala\n");
printf("4. vichislenie chisel fibonachi\n");
printf("5. vichislenie znachenie funkcii 1\n");
printf("6. vichislenie znachenie funkcii 2\n");
printf("7. znachenie funkcii na otrezke\n");
printf("0. exit\n");
}
int main() {
int c;
print_menu();
printf("vvedite nomer\n");
scanf("%d", &c);
switch(c) {
case 1:zadanie1; break;
case 2:zadanie2; break;
case 3:zadanie3; break;
case 4:zadanie4; break;
case 5:zadanie5; break;
case 6:zadanie6; break;
case 7:zadanie7; break;
}
system ("pause");
return 0;
}Решение задачи: «Не работает switch»
textual
Листинг программы
case 1:zadanie1(); break;
Объяснение кода листинга программы
- В данном коде используется конструкция switch, которая предназначена для выбора одного из нескольких блоков кода для выполнения в зависимости от значения переменной.
- Переменная, которая используется в конструкции switch, называется
zadanie. - Значение переменной
zadanieдолжно быть целочисленным типом данных. - Каждый case соответствует определенному значению переменной
zadanie. - В каждом case определен свой блок кода, который будет выполнен, если значение переменной
zadanieравно соответствующему case. - После каждого case идет оператор break, который предназначен для выхода из конструкции switch после выполнения соответствующего блока кода.
- Если значение переменной
zadanieне соответствует ни одному из case, то будет выполнен блок кода по умолчанию (default). - В данном коде нет default, значит, если значение переменной
zadanieне соответствует ни одному из case, то программа выдаст неопределенное поведение. - Если в коде есть другие переменные, они могут быть использованы внутри блоков кода каждого case, но их имена и значения не указаны в вопросе.
- Для понимания работы кода необходимо знать значения и типы данных переменных, которые используются в конструкции switch.
- В данном коде не указаны значения и типы данных переменных, поэтому невозможно точно сказать, как будет работать код.
- Если значения переменных и типы данных указаны верно, и код был написан без ошибок, то он будет работать корректно.
- Для определения, какой блок кода будет выполнен, необходимо сравнить значение переменной
zadanieс каждым case. - Если значение переменной
zadanieравно 1, то будет выполнен блок кода, соответствующий case 1. - Если значение переменной
zadanieравно 2, то будет выполнен блок кода, соответствующий case 2. - И так далее, в зависимости от значения переменной
zadanie. - Если значение переменной
zadanieне равно ни одному из case, то будет выполнен блок кода по умолчанию (который в данном коде отсутствует). - Если в коде есть другие переменные, их значения и типы данных также необходимо учитывать при анализе кода.
- Для более точного ответа на вопрос необходимо знать больше информации о коде и его окружении.
- Код может работать корректно, если значения переменных и типы данных указаны верно, и в коде нет ошибок.