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

switch case, enum

Object Storage 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,860 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,256 wizyt
pytanie zadane 3 stycznia 2017 w C i C++ przez pokrywa1 Użytkownik (990 p.)
0 głosów
1 odpowiedź 485 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)
0 głosów
1 odpowiedź 277 wizyt
pytanie zadane 30 maja 2019 w C i C++ przez patryksz163 Nowicjusz (120 p.)

92,555 zapytań

141,403 odpowiedzi

319,557 komentarzy

61,940 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...