Я пытаюсь понять, как вариант № 2 не может работать.C программирование - PullRequest
1 голос
/ 29 сентября 2019

мой код выглядит так:

int main(){
    int choice=(1,2,3);
    printf("1- Finabocci sequence\n");
    printf("2- Check valid date\n");
    printf("3- Quit\n");
    printf("Choose an operation: \n");
    scanf("%d", &choice);
    switch(choice){
    case 1:
    {
        int t1 = 0, t2 = 1, nextTerm = 0, n;
        printf("Enter a positive number: ");
        scanf("%d", &n);
        printf("Fibonacci Series: %d, %d, ", t1, t2);
        nextTerm = t1 + t2;
        while(nextTerm <= n)
        {
            printf("%d, ",nextTerm);
            t1 = t2;
            t2 = nextTerm;
            nextTerm = t1 + t2;
        }
        break;
    }


    case 2:
    {
        int validDate(int d,int m,int y){
            if (m<1||m>12) return 0; 
            else if (m==1||m==3||m==5||m==7||m==8||m==10||m==12){
                if (d>=1&&d<=31) return 1; 
                else return 0;
            }
            else if (m==4||m==6||m==9||m==11) {
                if (d>=1&&d<=30) return 1; 
                else return 0;
            }  
            else if (m==2) {
                if (y%400==0||(y%4==0&&y%100!=0)) {
                    if (d>=1&&d<=29) return 1;
                    else return 0;
                }
                else if (d>=1&&d<=28) return 1;
                else return 0;
            }
        }


        int main(int validDate(int d,int m,int y)) {
            int d,m,y;
            printf ("Input day: ");
            scanf("%d",&d);
            printf ("Input month: ");
            scanf("%d",&m);
            printf ("Input year: ");
            scanf("%d",&y);
            if(validDate(d,m,y)!=0) printf("valid date");
            else printf("invalid date");
            return 0;
        } 
        break;
    }
    default: printf("exit?");
        getchar();
    }
    return 0; 
}

Я не совсем знаю, как option2 вообще не работает, как 1-й и 3-й нормальные.Как я могу это исправить: D Например: я запускаю код Option2 один и его работа, но когда я включаю переключатель, то он не будет работать вообще

Ответы [ 2 ]

1 голос
/ 29 сентября 2019

Вы вызываете основную функцию главной функции.Я исправляю код для тебя.

int main(){
int choice=(1,2,3);
printf("1- Finabocci sequence\n");
printf("2- Check valid date\n");
printf("3- Quit\n");
printf("Choose an operation: \n");
scanf("%d", &choice);
switch(choice){
    case 1:
{
    int t1 = 0, t2 = 1, nextTerm = 0, n;
    printf("Enter a positive number: ");
    scanf("%d", &n);
    printf("Fibonacci Series: %d, %d, ", t1, t2);
    nextTerm = t1 + t2;
    while(nextTerm <= n)
{
    printf("%d, ",nextTerm);
    t1 = t2;
    t2 = nextTerm;
    nextTerm = t1 + t2;
}
break;
}
case 2:
    {
       int validDate(int d,int m,int y){
    if (m<1||m>12) return 0; 
    else if (m==1||m==3||m==5||m==7||m==8||m==10||m==12){
    if (d>=1&&d<=31) return 1; 
    else return 0;
 }
 else if (m==4||m==6||m==9||m==11) {
    if (d>=1&&d<=30) return 1; 
    else return 0;
 }  
 else if (m==2) {
    if (y%400==0||(y%4==0&&y%100!=0)) {
        if (d>=1&&d<=29) return 1;
        else return 0;
         }
         else if (d>=1&&d<=28) return 1;
         else return 0;
        }
}

    int d,m,y;
    printf ("Input day: ");
    scanf("%d",&d);
    printf ("Input month: ");
    scanf("%d",&m);
    printf ("Input year: ");
    scanf("%d",&y);
    if(validDate(d,m,y)!=0) printf("valid date\n");
    else printf("invalid date \n");

}
     default: printf("exit?");
     getchar();
 }
    return 0; 
}
0 голосов
/ 29 сентября 2019
  • Во-первых, int main(int validDate(int d,int m,int y)) должно корректироваться следующим образом int validDate(int d,int m,int y)

  • В вашем случае эти коды не могут быть такими.

    int choice=(1,2,3); - неверно

    int choice= 0; - верно

  • другое дело

    1. nextTerm = t1 + t2;

      вывод -: 0,1,1,2,3 -> неправильно

    2. nextTerm = t2 + 1;

      вывод -: 0,1,2,3 -> вправо

  • Другое дело, что вы должны ставить оператор break; после каждого cases и default, либо когда вы компилируете свой код, его компиляцию каждые cases и default, которые вы дали

  • И наконец, следуйте хорошим методам кодирования.Это также поможет вам определить ваши ошибки

здесь исправленный код

#include <stdio.h>
int main(){
    int choice = 0;
    printf("1- Finabocci sequence\n");
    printf("2- Check valid date\n");
    printf("3- Quit\n");
    printf("Choose an operation: \n");
    scanf("%d", &choice);
    switch(choice)
    {
        case 1:
        {
            int t1 = 0, t2 = 1, nextTerm = 0, n;
            printf("Enter a positive number: ");
            scanf("%d", &n);
            printf("Fibonacci Series: %d, %d, ", t1, t2);
            nextTerm = t2 + 1;
            while(nextTerm <= n)
            {
                printf("%d, ",nextTerm);
                t1 = t2;
                t2 = nextTerm;
                nextTerm = t1 + t2;
            }
            break;
        }
        case 2:
        {
            int validDate(int d,int m,int y)
            {
                if (m<1||m>12)
                     return 0; 
                else if (m==1||m==3||m==5||m==7||m==8||m==10||m==12)
                {
                    if (d>=1&&d<=31) 
                         return 1; 
                    else 
                        return 0;
                }
                else if (m==4||m==6||m==9||m==11) 
                {
                    if (d>=1&&d<=30) 
                        return 1; 
                    else 
                        return 0;
                }  
                else if (m==2)
                {
                    if (y%400==0||(y%4==0&&y%100!=0)) {
                        if (d>=1&&d<=29) 
                            return 1;
                        else 
                            return 0;
                }
                else if (d>=1&&d<=28) 
                    return 1;
                else 
                    return 0;
                }
            }

            int d,m,y;
            printf ("Input day: ");
            scanf("%d",&d);
            printf ("Input month: ");
            scanf("%d",&m);
            printf ("Input year: ");
            scanf("%d",&y);
            if(validDate(d,m,y)!=0) printf("valid date\n");
            else printf("invalid date \n");
            break;
        }
        default: printf("exit?");
                 break;
        getchar();
    }
    return 0; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...