Prosty kalkulator-wybranie działania

0

Na wstępie chciałam się przywitać ze wszystkimi użytkownikami :)

Dopiero zaczełam naukę w języku c (ah te studia), i napisałam prosty kalkulator. Wszystko byłoby fajnie, gdyby nie fakt, że po kompilacji, uruchomieniu i wybraniu rodzaju działania, wyskakują mi rozwiazania wszytskich działań, zamist tylko mojego wybranego. Mógłby mi ktoś podpowiedzieć, jak mogę to zmienić? Będę niezmiernie wdzięczna :)

#include<stdio.h>

int main(void)

{
	int a,b,dodawanie,odejmowanie,mnozenie,dzielenie;
	
	printf("PROSTY KALKULATOR.\n");
	
	
	printf("wprowadz pierwsza liczbe:\n");
	
     	scanf("%d",&a);
     	
	printf("wprowadz druga liczbe:\n");
	
	    scanf("%d", &b);	
	    
	printf("wybhierz dzialanie:\n");
	scanf("%d,%d,%d,%d", &dodawanie,&odejmowanie,&mnozenie,&dzielenie);
	
	dodawanie = a + b;
	
			printf("wynik dodawania to %d\n", dodawanie);
			
	odejmowanie = a - b;
	    
	    	printf("wynik odejmowania to %d\n", odejmowanie);
	    	
	mnozenie = a * b;
	    
	    	printf("wynik mnozenia to %d\n", mnozenie);
	    	
	dzielenie = a / b;
	    
	    	printf("wynik dzielenia to %d\n", dzielenie);
	    	
	    	system("pause");


	return 0;
	
	
	
}
 
0
scanf("%d,%d,%d,%d", &dodawanie,&odejmowanie,&mnozenie,&dzielenie);

To nie ma sensu, poza tym nigdzie później tego nie wykorzystujesz (wczytujesz od użytkownika, po czym w dalszej części nadpisujesz te zmienne czymś innym).

Wystarczy wczytać to do jednej zmiennej i zrobić to za pomocą if'ów lub lepiej za pomocą switcha.
Np.wczytaj liczbę do zmiennej dzialanie i zrób coś takiego:

int wynik=0;
switch (dzialanie)
{
 case 1: wynik = a+b; break;
 case 2: wynik = a-b; break;
//i tak dalej
}

printf("Wynik to %d\n", wynik);

Przy czym wcześniej musiałabyś wyświetlić coś typu Naciśnij 1, aby wykonać dodawanie, Naciśnij 2, aby wykonać odejmowanie, etc.

0

Chyba się trochę pogubiłam, bo nie rozumiem... :/

0

Wyskakują Ci wszystkie rozwiązania, gdyż nigdzie nie decydujesz w kodzie co ma być wyświetlone. Pobierasz dane, potem pytasz jaką operację użytkownik chce przeprowadzić, po czym olewasz tę decyzję i wykonujesz wszystkie obliczenia od razu drukując wyniki. Brakuje tutaj instrukcji warunkowej np. if czy switch. Patryk dobrze Ci podpowiada. Zamiast deklarować oddzielną zmienną dla każdej operacji użyj jednej, do której sobie wrzucisz wynik. Poczytaj o if i switch.
Po wcięciach widzę, że źle interpretujesz zasadę działania funkcji scanf(). Ona jedynie pobiera dane z wejścia i przekształca na żądany typ. Nie decyduje o tym które części kodu zostaną wykonane, a które nie. Wpisanie '0,1,0,0' nie sprawi, że wykonanie pominie dodawanie, przejdzie do odejmowania i zakończy działanie programu. Wynikiem działania funkcji w takim przypadku będzie zapisanie wartości 0 w zmiennych dodawanie, mnozenie i dzielenie oraz wartości 1 w zmiennej odejmowanie. Ty musisz odpowiednio obsłużyć wybór.

1
 
int main(void)
{
        //tworzysz zmienne.
        int a,b,wynik, wybor;

        //wprowadzasz do wejscia dwie liczby
        printf("PROSTY KALKULATOR.\n");
        printf("wprowadz pierwsza liczbe:\n");
        scanf("%d",&a);
        printf("wprowadz druga liczbe:\n");
        scanf("%d", &b);        
 
        //tutaj wprowadzasz do wejscia liczbe (identyfikator) odpowiadajaca odpowiedniemy dzialaniu.
        //1. +
        //2. -
        //3. *
        //4. /
        printf("wybhierz dzialanie:\n1. Dodawanie\n2. Odejmowanie\n3. Mnozenie\n4. Dzielenie");
        scanf("%d", &wybor); 
      
        //za pomoca switch() wykonujesz odpiwienia operacje.
        switch(wybor)
        {
        case 1: // operacja dla wyboru 1
         wynik = a+b;
         break;
        case 2: // operacja dla wyboru 2
         wynik = a-b;
         break;
        case 3: // operacja dla wyboru 3
         wynik = a*b;
         break;
        case 4: // operacja dla wyboru 4
         wynik = a/b;
         break;
        }
        printf("wynik dzialania to %d\n", wynik);
        system("pause");
 
        return 0;
}

Zamiast switch() mozna tez uzyc if(), lecz polecam switch()

 
        if(wybor == 1)
         wynik = a+b;
        if(wybor == 2)
         wynik = a-b;
        if(wybor == 3)
         wynik = a*b;
        if(wybor == 4)
         wynik = a/b;

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