Niedziałający kod przy połączeniu switch+if

0

Napisać funkcję obliczającą liczbę dni w miesiącu:
• miesiące 1, 3, 5, 7, 8, 10, 12 mają 31 dni
• miesiące 4, 6, 9, 11 mają 30 dni
• miesiąc 2 ma 29 jeżeli rok jest podzielny przez 400 lub gdy jest podzielny przez 4 i
równocześnie nie jest podzielny przez 100, w pozostałych przypadkach ma 28 dni

#include <stdio.h>
#include <stdlib.h>

int dni(luty, luty1);
if (366 % 400 == 0)
    || (luty % 4 == 0) && (luty % 100 != 0) return luty;
else
{
    luty1 = 29;
    return luty1;
}

int main()
{
    int miesiac;
    printf("podaj miesiac");
    scanf("%d", &miesiac);
    {
        swich(miesiac) case 1
            : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : printf("miesiac ma 31dni");
        case 4:
        case 6:
        case 9:
        case 11:
        default:
            printf("miesiac ma 30 dni");

            int miesiac1;
            miesiac1 = int(luty, luty1);
            printf("miesiac wynosi" miesiac1);
    }
    return 0;
}
0

Sformatowałem Twój kod. Nie ma on sensu tak bardzo, że nie pozostaje nic innego jak polecić powrót do książki/kursu, bo podstawy składni języka są źle użyte.

2

Krzaq ma rację, nie ogarniasz podstawowej składni

  1. instrukcja switch
  2. wywołanie funkcji
miesiac1 = int(luty, luty1);

gdzie podajesz typ int przy wywołaniu i zmienne, zamiast wartości, poza tym bez sensu, powinieneś podawać rok i zwracać ilość dni.
czyli coś na wzór:

int policzDniDlaLutego(int rok){
    int iloscDni = 28;
    if ((rok % 400 == 0) || (rok % 4 == 0) && (rok % 100 != 0)){
        iloscDni =29;
    }
    return iloscDni;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1