Wyświetlanie kolejnych liczb w switch

0

Szybkie pytanie, jak mozna wczytac w pierwszym cas'ie wyrazy ktore wpisuje w pierwszym while'u?
Calosci nie uzupelnialem i tylko upewnilem sie ze dzialaja liczby parzyste.

#include<stdio.h>

int main(void)
{
    int a;
    int parzyste = 0;
    int suma_p = 0;
    int nieparzyste = 0;
    int suma_n = 0;
    float srednia_p;
    float srednia_n;
    printf("Podaj liczby do programu, aby zakonczyc wcisnij 0\n\n");
    while((scanf("%d", &a)) == 1 && (a != 0) )
        if(a % 2 == 0)
        {

        parzyste++;
        suma_p = suma_p + a;
        srednia_p = (suma_p/parzyste);
        }
        else
        {

        nieparzyste++;
        suma_n = suma_n + a;
        srednia_n = (suma_n/nieparzyste);
        }

    printf("\n\nCo chcesz zrobic z podanymi liczbami??\n1-       Wyswietl liczby\n2-       Liczba parzystych\n3-       Liczba nieparzystych\n"
       "4-       Suma parzystych\n5-       Suma nieparzystych\n6-       Srednia parzyste\n"
       "7-       Srednia nieparzyste\n0-       Koniec!\n\n");
    while((a = getchar()) != '0')
{




        switch(a)
        {
            case '1' :
printf("podales takie liczby %d", parzyste);
            break;
            case '2' :

            break;
            case '3' :

            break;
            case '4' :
printf("Suma to %d", suma_p);
            break;
            case '5' :

            break;
            case '6' :
printf("Srednia parzystych to %.f", srednia_p);
            break;
            case '7' :

            break;

        }

}




        return 0;
}
 
3

Musisz je zapamiętać, np. w tablicy.

Staraj się formatować kod, bo to co napisałeś jest średnio czytelne.

Twoja średnia będzie obliczona z bardzo niską dokładnością, ponieważ dokonujesz dzielenia int/int

Mieszanie scanf i getchar może skończyć się źle, unikaj tego.

0

Ale to zrobic na zmiennej a czy musze stworzyc nowa zmienna?
Jak bedzie wygladal pierwszy scanf i case 1 ?
Cos dlubie i same bledy wyskakuja.

1

Musisz utworzyć tablicę. Każdą liczbę zgodną z wymaganiami dodawaj na koniec. Potem będziesz mógł to łatwo wypisać. Tak, tablica jest nową zmienną.

0

czyli tworze tablice np int b[10] i w pierwszym while'u mam przyporzatkowac wartosci kolejnych elementow a do tej tablicy??

1

Sugerowałbym bardziej deskryptywną nazwę, ale ogółem tak.

0

W pierwszym while zrobilem tak:

 for(i=0;i>10;i++)

        tablica[i]=a; 

natomiast w casie 1

printf("podales takie liczby %d", tablica[i]);
 

I wyswietla losowa liczbe w moim przypadku 4201288

2

i<10

0

Bo, jeśli po drodze nic nie zmieniałeś, i wskazuje za ostatni zainicjalizowany element tablicy.

Zamiast tworzyć dodatkowe indeksy, możesz po prostu (względem oryginalnego kodu) użyć już istniejących counterów:

listaParzystych[parzyste++] = a;

zamiast parzyste++;

I analogicznie dla nieparzystych.

Oczywiście wyświetlenie zawartości tablicy też musi być w pętli.

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