• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

switch case, enum

VPS Starter Arubacloud
0 głosów
117 wizyt
pytanie zadane 24 kwietnia 2018 w C i C++ przez poldeeek Mądrala (5,980 p.)

Witam, pisze programik i mam 2 pytanka...

Czy w switch case mogę w środku każdego przypadku prosić kogoś o wpisanie zmiennych? Bo nie wiem czemu program jakby całkowicie omija mi te funkcje scanf() w środku każdego przypadku.

2 pytanie dotyczy zmiennej typu enum - jaki muszę wpisać typ w scanf("%d", &sposob); kiedy sposób jest właśnie zmienną typu enum, ponieważ przy całkowitej d wyskakuje mi taki błąd..
warning: format '%d' expects argument of type 'int *', but argument 2 has type 'enum decyzja *' 

 

W razie czego wstawie i tak kod programu :P
 

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

enum decyzja {SPOSOB_1=1, SPOSOB_2, SPOSOB_3, KONIEC};

int opcja_1(int a, int h)
{
    return (1/2*(a*h));
}

int opcja_2(int a, int b, int c)
{
    int p = (a+b+c)/2;
    int q = p*(p-a)*(p-b)*(p-c);
    return sqrt(q);
}

int opcja_3(int a, int b, int c)
{
    int p = 1/2*(a*b);
    int q = sin(p);
    return q;
}

int main()
{
    enum decyzja sposob;
    int bok1, bok2, podst, wys, kat;
    do
    {
        puts("Wybierz ktora opcja chcesz policzyc pole.\nMENU: \n");
        puts(" 1. Na podstawie znajomosci podstawy i wysokosci.\n");
        puts(" 2. Na podstawie znajomosci bokow (wzor Herona).\n");
        puts(" 3. Na podstawie znajomosci dwoch bokow i kata pomiedzy nimi.(kat w radianach)\n");
        puts(" 4. Wyjdz z programu.\n");
        scanf("%d", &sposob);

        switch(sposob)
        {
        case SPOSOB_1:
            scanf("Podaj postawe:%d i wysokosc:%d.\n", &podst, &wys);
            printf("Pole wynosi:%d.", opcja_1(podst, wys));
            break;

        case SPOSOB_2:
            scanf("Podaj 1 bok:%d, 2 bok:%d, 3 bok:%d.", &bok1, &bok2, &podst);
            printf("Pole wynosi:%d.", opcja_2(bok1, bok2, podst));
            break;

        case SPOSOB_3:
            scanf("Podaj 1 bok:%d, 2 bok:%d i kat:%d.\n", &bok1, &bok2, &kat);
            printf("Pole wynosi:%d.", opcja_3(bok1, bok2, kat));
            break;

        case KONIEC:
            puts(" Wyszdles z programu.\n");
            break;

        default:
            puts(" Wpisz jedna z 4 liczb okreslonych przez MENU.\n");
            break;
        }

    }while(sposob != 4);



    return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 24 kwietnia 2018 przez adrian17 Ekspert (344,100 p.)

Bo nie wiem czemu program jakby całkowicie omija mi te funkcje scanf() w środku każdego przypadku.

     scanf("Podaj postawe:%d i wysokosc:%d.\n", &podst, &wys);

scanf() nie prosi o żadne wejście, nic nie wyświetla - on tylko czyta wejście i próbuje go zrozumieć zgodnie z danym formatem. W związku z tym, Twój pierwszy argument do scanf() nie ma sensu.

warning: format '%d' expects argument of type 'int *', but argument 2 has type 'enum decyzja *' 

Spróbuj %u (na liczbę bez znaku).

Podobne pytania

0 głosów
4 odpowiedzi 1,245 wizyt
pytanie zadane 3 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)
0 głosów
1 odpowiedź 450 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)
0 głosów
1 odpowiedź 275 wizyt
pytanie zadane 30 maja 2019 w C i C++ przez patryksz163 Nowicjusz (120 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...