Не работает switch - C (СИ) (79068)

Узнай цену своей работы

Формулировка задачи:

здравствуйте! почему то не работает свитч когда запускаю программу.помогите найти ошибку!заранее благодарен. код программы:
// 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;
 
    }
кода запускаю..ввожу цифру (например "1") жму ентер,он пишет нажмите любую клав..........и вылетает.

Решение задачи: «Не работает switch»

textual
Листинг программы
case 1:zadanie1(); break;

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

  1. В данном коде используется конструкция switch, которая предназначена для выбора одного из нескольких блоков кода для выполнения в зависимости от значения переменной.
  2. Переменная, которая используется в конструкции switch, называется zadanie.
  3. Значение переменной zadanie должно быть целочисленным типом данных.
  4. Каждый case соответствует определенному значению переменной zadanie.
  5. В каждом case определен свой блок кода, который будет выполнен, если значение переменной zadanie равно соответствующему case.
  6. После каждого case идет оператор break, который предназначен для выхода из конструкции switch после выполнения соответствующего блока кода.
  7. Если значение переменной zadanie не соответствует ни одному из case, то будет выполнен блок кода по умолчанию (default).
  8. В данном коде нет default, значит, если значение переменной zadanie не соответствует ни одному из case, то программа выдаст неопределенное поведение.
  9. Если в коде есть другие переменные, они могут быть использованы внутри блоков кода каждого case, но их имена и значения не указаны в вопросе.
  10. Для понимания работы кода необходимо знать значения и типы данных переменных, которые используются в конструкции switch.
  11. В данном коде не указаны значения и типы данных переменных, поэтому невозможно точно сказать, как будет работать код.
  12. Если значения переменных и типы данных указаны верно, и код был написан без ошибок, то он будет работать корректно.
  13. Для определения, какой блок кода будет выполнен, необходимо сравнить значение переменной zadanie с каждым case.
  14. Если значение переменной zadanie равно 1, то будет выполнен блок кода, соответствующий case 1.
  15. Если значение переменной zadanie равно 2, то будет выполнен блок кода, соответствующий case 2.
  16. И так далее, в зависимости от значения переменной zadanie.
  17. Если значение переменной zadanie не равно ни одному из case, то будет выполнен блок кода по умолчанию (который в данном коде отсутствует).
  18. Если в коде есть другие переменные, их значения и типы данных также необходимо учитывать при анализе кода.
  19. Для более точного ответа на вопрос необходимо знать больше информации о коде и его окружении.
  20. Код может работать корректно, если значения переменных и типы данных указаны верно, и в коде нет ошибок.

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


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

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

13   голосов , оценка 4.077 из 5