Kalkulator w języku C

0

Dzień dobry wszystkim.
Potrzebuje wskazówek do napisania kalkulatora w c.
Kalkulator ma wyglądać tak że po wpisaniu w terminalu "2+2" program rozpoznaje znak "+" i podaje wynik.
z góry dziękuję za pomoc :)

2

@beeg To pobieraj "int char int" i w switch sprawdzaj char

0

Oczekujesz pomocy czy rozwiązania za Ciebie?

  1. Jeśli pomocy: pokaż kod, staraj się zastosować do Dlaczego nikt nie odpowiada w moim wątku?
  2. Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
0

kq nie umie czytać, spokojnie :P
Wczytaj całą linijkę, następnie segreguj dane, jak są cyfry to zapisuj do drugiej tablicy aż napotkasz inny znak niż cyfra.
Przemień atoi'em w liczbę to co masz w tablicy. I tak w kólko do czasu, gdy dojdziesz do znaku '\0'.
Wykonując w między czasie obliczenia.

Problem będzie z priorytetem działań, oraz z niezidentyfikowanymi znakami.

4

ps. jak dobrze poszukasz, to znajdziesz przynajmniej z 12 gotowców z ostatniego roku.

pps. Krypto świr: strasznie gówniany sposób. po to jest scanf i mu podobne, żeby nie onanizować się segregowaniem cyferek

0

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

int main(){

int a, b, suma;
char c;

printf("kalkulator\n\n");
printf("Wpisz dzialanie: ");
scanf("%i", &a);
scanf("%c", &c);
scanf("%i", &b);

if(c == '+'){
suma = a + b;
printf("%i", suma);
}

}

wszystko ładnie działa ale jak zrobić żebym raz mógł wpisać "2+2" a drugi raz "2+2+2"

0

a drugi raz "2+2+2

Użyj pętli. Wykonuj póki dane wejściowe są poprawne i można na ich podstawie wykonać kolejne obliczenia.

Nie wiem jak w C, ale w C++ są przeciążone operatory, które idealnie nadają się do takich sytuacji.

0

gdzie i jak to zapętlić ?

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

int main(void){

	int b, suma;
	char c;

	printf("kalkulator\n\n");
	printf("Wpisz dzialanie: ");
	scanf("%i", &suma);
	while (scanf("%c%i", &c, &b) && b != 0) // warunek zakończenia pętli b == 0
	{
		suma += b;
	}

	printf("%i\n", suma);
} 

Nie siedzę w C. Można by w taki prosty sposób rozwiązać.

1

Można napisać tak prostu jak opisali przedpiszcy, albo napisać własny parser - tak żeby było ciekawiej - jako ćwiczenie. Przykład takiego parsera w C Oczywiście to jest armata na muchy w tym przypadku, ale umiejętność taka na pewno nie zaszkodzi.

0

Prawda jest taka, że to zależy jak bardzo zaawansowany ma być ten twój kalkulator?
Czy pojedyncze działanie jest wystarczające? Czy może chcesz przetwarzać coś bardziej skomplikowanego.
Jeśli chodzi o pojedynczą operację to jest to proste: http://ideone.com/drXwHR

0

Zamysłem jest stworzenie kalkulatora, do którego można wpisać działanie typu: 2+2(2^3 + 13 * 7) - sqrt(16)

1

@beeg zainteresuj się w takim razie ONP (ang. RPN)

https://pl.wikipedia.org/wiki/Odwrotna_notacja_polska

1
beeg napisał(a):

Zamysłem jest stworzenie kalkulatora, do którego można wpisać działanie typu: 2+2(2^3 + 13 * 7) - sqrt(16)

Czyli dość skomplikowane. Słowa-klucze to “lexer” i “parser”.

Można to zaprogramować ręcznie, albo użyć gotowego narzędzia (tzw. parser generator) np. lex i yacc, które wygeneruje odpowiedni kod.

Jeżeli to jest jakieś zadanie, to prawdopodobnie będziesz musiał napisać cały kod samodzielnie.

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