kalkulator w języku C

0

Witam. Mam do napisania „kalkulator”, który będzie posiadał menu wyboru rodzaju operacji
arytmetycznej (+,-,*,/). Instrukcja switch-case będzie odpowiedzialna za
wykonywanie odpowiednich obliczeń, a wynik wyświetlany będzie na ekranie z
odpowiednim komunikatem.Co mam źle w tym kodzie?
błędy:

C:\Users\x\Desktop\programowanie c\warunek zadanie 4.c In function 'main':
C:\Users\x\Desktop\programowanie c\warunek zadanie 4.c [Error] expected expression before ':' token
C:\Users\x\Desktop\programowanie c\warunek zadanie 4.c [Error] expected ';' before '}' token

#include <stdio.h>
main()
{
	char operacja;
	float liczba1,liczba2;
	printf("podaj znak dzialania: + lub - lub / lub *");
	scanf("%s",&operacja);
	printf("podaj liczbe 1 do dzialania:");
	scanf("%f",&liczba1);
	printf("podaj liczbe 2 do dzialania");
	scanf("%f",&liczba2);
	switch(operacja)
	{
		case +:
			printf("liczba1  + liczba2");
			liczba1+liczba2
			
			
	}
}
7

Ten komunikat, który dostajesz, bierze się stąd, że znak '+' powinien być w pojedynczym cudzysłowie (case '+':). Poza tym masz scanf("%s",&operacja);, co czyta ciąg znaków, a powinieneś mieć scanf("%c",&operacja);, żeby czytało pojedynczy znak.
Do tego brakuje Ci średnika w linijce z liczba1+liczba2.

4

Powinieneś switchować na charze więc zamiast case + zrobić case '+'.
Powinieneś zakończyć średnikiem taką operację liczba1+liczba2. Pomijając to, że wydaje się całkiem bezsensowna w tym miejscu.

5

@Nikto0:
moze jednak przekartkować jakiś podręcznik / dobry kurs?
Drepczesz w kółko od długiego czasu, a masz problemy z pierwszych 20 stron każdej książki.

0

wypisuje mi na ekranie liczba1 wartość+liczba2 wartość
żeby wyświetlało wynik potrzebuję dodatkowej zmiennej wynik?

#include <stdio.h>
main()
{
	char operacja;
	float liczba1,liczba2;
	printf("podaj znak dzialania: + lub - lub / lub *\n");
	scanf("%c",&operacja);
	printf("podaj liczbe 1 do dzialania:\n");
	scanf("%f",&liczba1);
	printf("podaj liczbe 2 do dzialania\n");
	scanf("%f",&liczba2);
	switch(operacja)
	{
		case '+':
			printf("liczba1 %f + liczba2 %f", liczba1,liczba2);
		break;
			
	}
}
3

Tak jak tutaj piszą: http://www.cplusplus.com/reference/cstdio/printf/
dodaj %f do stringa a potem w kolejnym argumencie funkcji printf podaj wynik np liczba1+liczba2.
Jak wolisz to możesz przypisać wartość dodawania do jakiejś zmiennej i podać tę zmienną w argumencie.

0

A czy zawsze muszę pisać tak

case '+'.
1

Nie, tylko jeśli chcesz obsłużysz case ze znakiem '+' i jeśli program tego wymaga. Zawsze musisz napisać tylko funkcję main.
A tak bardziej serio to wyjaśnij o co ci chodzi bo pytanie jest przynajmniej dziwne :)

0

czy zawsze muszę dawać to ' '?

1

Wczytujesz char to i sprawdzasz char.
https://pl.wikibooks.org/wiki/C/Zmienne#char
Tak się zapisuje zmienną typu char.

3

Tak, musisz. Tak informujesz kompilator, że jest to znak. Zamiast tego możesz tam wpisać case 43, co jest kodem ASCII dla znaku plusa, ale nie rób tego.

Ogółem to serio przerób jakiś kurs podstaw, AnyKtokolwiek ma rację.

2
kq napisał(a):

Tak, musisz. Tak informujesz kompilator, że jest to znak. Zamiast tego możesz tam wpisać case 43, co jest kodem ASCII dla znaku plusa, ale nie rób tego.

Ogółem to serio przerób jakiś kurs podstaw, AnyKtokolwiek ma rację.

Z nieodróżnianiem co jest wnętrzem napisu (pomijam cienkie czy grube łapki) a wykonywalnym kodem, to się nie spotkałem nigdy (poza perlem). To nawet nie jest budowaniem domu bez fundamentu, na piasku, ale wręcz w powietrzu i to na skos.

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