Kalkulator w języku C

Odpowiedz Nowy wątek
2016-05-31 11:45
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 :)

Pozostało 580 znaków

2016-05-31 11:50
2

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

A bedzie wtedy można wpisać działanie jednym ciągiem? - beeg 2016-05-31 11:53
a to już sobie poczytaj jak działa np. scanf() - Dregorio 2016-05-31 12:17

Pozostało 580 znaków

2016-05-31 11:57
kq
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: Ogłoszenia drobne (jestem w stanie wykonać zadanie za zaledwie 250zł)

Potrzebuje wskazówek jak zacząć pisać taki kod bo nie mam pomysłu jak zacząć - beeg 2016-05-31 11:59
W takim razie @Dregorio dał Ci fantastyczną poradę :) scanf i do dzieła. - kq 2016-05-31 12:02

Pozostało 580 znaków

2016-05-31 12:03
Krypto Swir
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.

Dzięki wielkie, już jest jakiś zarys :) To co mówisz spróbuję zrozumieć do końca i przełożyć na kod :) - beeg 2016-05-31 12:08

Pozostało 580 znaków

2016-05-31 12:15
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

edytowany 2x, ostatnio: spartanPAGE, 2016-05-31 12:17

Pozostało 580 znaków

2016-05-31 15:12
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"

Formatuj kod. Wstaw go też w znaczniki <code=cpp></code> - TomRiddle 2016-06-01 13:35

Pozostało 580 znaków

2016-05-31 15:29
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.


gdzie i jak to zapętlić ? - beeg 2016-05-31 15:34

Pozostało 580 znaków

2016-05-31 15:50
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ć.


edytowany 4x, ostatnio: carlosmay, 2016-05-31 16:00
Pokaż pozostałe 2 komentarze
wewnątrz pętli instrukcja warunkowa lub instrukcja wielokrotnego wyboru. - carlosmay 2016-05-31 16:30
zapomniałeś o priorytecie operatorów, na dodatek źle używasz scanf (przeczytaj jaka jest wartość zwracana tej funkcji). - MarekR22 2016-06-01 09:29
@MarekR22 - chciałem przekazać tylko ideę. Jestem lamer w C. Co masz na myśli priorytety operatorów? != ma wyższy priorytet niż &&, więc nie trzeba stosować nawiasów. - carlosmay 2016-06-01 09:59
chodzi o dane wejściowe. Jeśli odda logikę na odejmowanie, będzie ok, ale jeśli doda mnożenie to twój kod już nie zadziała. Problem leży bardziej w nieprecyzyjnie zadanym pytaniu: nie wiadomo jak bardzo skomplikowane mogą być dane wejściowe. - MarekR22 2016-06-01 11:11

Pozostało 580 znaków

2016-05-31 20:51
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.


Ogólnie na prace domowe mam stawki zaporowe. Czasem coś o programowaniu znajdzie się na mojej stronie

Pozostało 580 znaków

2016-06-01 09:21
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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.

Pozostało 580 znaków

2016-06-01 13:18
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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