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 :)
@beeg To pobieraj "int char int" i w switch sprawdzaj char
Oczekujesz pomocy czy rozwiązania za Ciebie?
- Jeśli pomocy: pokaż kod, staraj się zastosować do http://4programmers.net/Pomoc/Forum_dyskusyjne/Dlaczego_nikt_nie_odpowiada_w_moim_w%C4%85tku
- Jeśli wykonania za Ciebie: http://4programmers.net/Forum/Og%C5%82oszenia_drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)
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.
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
#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"
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.
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ć.
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.
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
Zamysłem jest stworzenie kalkulatora, do którego można wpisać działanie typu: 2+2(2^3 + 13 * 7) - sqrt(16)
@beeg zainteresuj się w takim razie ONP (ang. RPN)
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.