Не работает 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, то будет выполнен блок кода по умолчанию (который в данном коде отсутствует). - Если в коде есть другие переменные, их значения и типы данных также необходимо учитывать при анализе кода.
- Для более точного ответа на вопрос необходимо знать больше информации о коде и его окружении.
- Код может работать корректно, если значения переменных и типы данных указаны верно, и в коде нет ошибок.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д