Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Kalkulator z liczbą operacji definiowaną przez użytkownika

Ostatnio zmodyfikowano 2013-10-18 16:13
Autor Wiadomość
mjunik91
Temat założony przez niniejszego użytkownika
[C++] Kalkulator z liczbą operacji definiowaną przez użytkownika
» 2013-10-18 15:43:26
Witam mam problem z pewnym zadaniem. C++ dopiero sie uczę i liczę na waszą pomoc. Mam napisac kalkulator wg. takiego polecenia.

"Początkujący programista Marcin postanowił zaimplementować zaawansowany kalkulator, obsługujący niezwykle skomplikowane funkcje dwóch zmiennych. Na początek chce jednak sprawdzić swoje umiejętności pisząc program kalkulatora obsługującego tylko trzy najprostsze działania na liczbach całkowitych (zwykle kalkulatory obsługują co najmniej cztery działania, ale Marcin wciąż nie może się zdecydować, w jaki sposób karać użytkowników próbujących dzielić przez zero). Pomóż mu w tym zadaniu.

Wejście

W pierwszej linii wejścia znajduje się liczba naturalna n (1<=n<=20) oznaczająca liczbę działań do wykonania. W kolejnych liniach opisane są te działania, w postaci "a op b", gdzie a i b są liczbami całkowitymi z zakresu od -1000 do 1000, a op jest jednym ze znaków: +, - lub *.

Wyjście

Dla każdego zadanego działania wypisz w osobnej linii jego wynik.

Przykład

Wejście:

3
13 + -10
2 * 5
7 - 18

Wyjście:

3
10
-11
"

Jedyne co udało mi się zrobic to taki kalkulator.

C/C++
#include <iostream>
using namespace std;

void Input( float & x, float & y );

float a = 1.0, b = 1.0, wynik;
char dzialanie;

int main()
{
    cin >> a >> dzialanie >> b;
    Input( a, b );
    cout << wynik << endl;
    return 0;
}

void Input( float & x, float & y )
{
    a = x;
    b = y;
    switch( dzialanie )
    {
    case '+':
        wynik = x + y;
        break;
       
    case '-':
        wynik = x - y;
        break;
       
    case '*':
        wynik = x * y;
        break;
       
    default:
        cout << "Niepoprawny wpis, spróbuj ponownie: \n";
        cin >> a >> dzialanie >> b;
        Input( a, b );
    }
}

Prosiłbym o wskazówki jak uporac sie z tego typu zadaniem. Pozdrawiam
P-93950
akwes
» 2013-10-18 16:02:16
A Twoim problemem jest to, że ...?
P-93951
mjunik91
Temat założony przez niniejszego użytkownika
» 2013-10-18 16:09:18
to że kalkulator działa tylko i wyłącznie na zasadzie
-wpisuje a
-wpisuje "dziłanie" (+-*)
-wpisuje b
-otrzymuje wynik
a z tego co zrozumiałem z zadania to w zależności jaką liczbę działań zdefiniuje na początku tyle wykona program(patrz treść zadania)i właśnie nie wiem jak sformułowac to w kodzie żeby osiągnąc taki wynik
P-93954
RazzorFlame
» 2013-10-18 16:13:48
A chcesz co osiągnąć? Bo jak na razie to po przeczytaniu twojego posta mam SIGSEGV w głowie.

Edit: Dobra czaje... Po prostu wczytaj "n", stwórz tablice o wielkości "n" dla każdego elementu działania (a,b,operator) a następnie pętlą wczytuj każde z nich, następnie wypisz wszystkie wyniki działań na liczbach tablicy.
P-93955
akwes
» 2013-10-18 16:13:50
To spróbuj zapamiętać podane dane i wczytuj je w pętli. Możesz je zapamiętać na dwa sposoby

C/C++
int pierwszaLiczba[ 30 ];
char dzialanie[ 30 ];
int drugaLiczba[ 30 ];

albo jeżeli miałeś już struktury
C/C++
struct Dzialanie {
    int first;
    int secound;
    char op;
};

A potem korzystać z funkcji, którą napisałeś wykonując po kolej działania:
fun( pierwszaLiczba[ i ], drugaLiczba[ i ], dzialanie[ i ] );

Dodatkowo, naucz się jak poprawnie przesyłać argumenty do funkcji oraz usuń zmienne globalne zastępując je lokalnymi, bo globalne są niepotrzebne w tym zadaniu.
P-93956
« 1 »
  Strona 1 z 1