Kalkulator w C++


(Kamil I 2006) #1

Witam. Zacząłem uczyć sie C++. Napisałem sobie kalkulator, którego kod wygląda tak:

#include

#include


int main()

{

    float fLiczba1;

    std::cout<<"Podaj pierwsza liczbe: ";

    std::cin >> fLiczba1;


    float fLiczba2;

    std::cout<<"Podaj druga liczbe: ";

    std::cin >> fLiczba2;


    std::cout << std::endl;


    int nOpcja;

    std::cout << "| ************************* |" << std::endl;

    std::cout << "| Wybierz dzialanie: |" << std::endl;

    std::cout << "| 1. Dodawanie |" << std::endl;

    std::cout << "| 2. Odejmowanie |" << std::endl;

    std::cout << "| 3. Mnozenie |" << std::endl;

    std::cout << "| 4. Dzielenie |" << std::endl;

    std::cout << "| ************************* |" << std::endl;

    std::cout << "| 0. Wyjscie |" << std::endl;

    std::cout << "| ************************* |" << std::endl;

    std::cout << std::endl;

    std::cout << "Twoj wybor: ";

    std::cin >> nOpcja;




    switch(nOpcja)

    {

         case 1: std::cout << fLiczba1 << " + " << fLiczba2 << " = " << fLiczba1 + fLiczba2 << std::endl; break;

         case 2: std::cout << fLiczba1 << " - " << fLiczba2 << " = " << fLiczba1 - fLiczba2 << std::endl; break;

         case 3: std::cout << fLiczba1 << " * " << fLiczba2 << " = " << fLiczba1 * fLiczba2 << std::endl; break;

         case 4: 

              if (fLiczba2 == 0.0)

                 std::cout << "Dzielnik nie moze byc rowny zeru!" <
              else 

                 std::cout << fLiczba1 << " / " << fLiczba2 << " = " << fLiczba1 / fLiczba2 << std::endl; break;

         case 0: break;

         default : std::cout << "Nie znana opcje!!!"; break;

    }

    getch();

}

Wszytko ładnie chodzi ale ja chce dodać do niego jeszcze kilka działań. Ale nie mam pojęcia jak zrobić by części kodu odpowiedzialna za prośbę o 2 liczby:

float fLiczba1;

    std::cout<<"Podaj pierwsza liczbe: ";

    std::cin >> fLiczba1;


    float fLiczba2;

    std::cout<<"Podaj druga liczbe: ";

    std::cin >> fLiczba2;

była w oddzielnej funkcji. Jak ją zadeklarować na początku, najlepiej proszę o kod całej tej funkcji, bo jak dostane cześć jego to mogę nie załapać o co chodzi, bo jestem bardzo początkującym. Z góry wielkie dzięki.


(Ryan) #2

Najpierw kilka błędów.

  • zawsze informuj w jakim środowisku i przy użyciu jakiego kompilatora piszesz

  • zdecyduj się na jedną bibliotekę pozwalającą na wyświetlanie tekstu w konsoli: conio i iostream NIE SĄ kompatybilne ze sobą

Póki co jednak dla Twojej wygody zmienię jak najmniej i nie wywalę conio. Nie poprawię też potencjalnych problemów z przepełnieniem arytmetycznym.

#include

#include


void GetValues(float *a, float *b)

{

    std::cout<<"Podaj pierwsza liczbe: ";

    std::cin >> *a;


    std::cout<<"Podaj druga liczbe: "; 

    std::cin >> *b;


    std::cout << std::endl;

}


int main()

{

    float fLiczba1, fLiczba2;


    GetValues(&fLiczba1, &fLiczba2);


    int nOpcja;

    std::cout << "| ************************* |" << std::endl;

    std::cout << "| Wybierz dzialanie: |" << std::endl;

    std::cout << "| 1. Dodawanie |" << std::endl;

    std::cout << "| 2. Odejmowanie |" << std::endl;

    std::cout << "| 3. Mnozenie |" << std::endl;

    std::cout << "| 4. Dzielenie |" << std::endl;

    std::cout << "| ************************* |" << std::endl;

    std::cout << "| 0. Wyjscie |" << std::endl;

    std::cout << "| ************************* |" << std::endl;

    std::cout << std::endl;

    std::cout << "Twoj wybor: ";

    std::cin >> nOpcja;


    switch(nOpcja)

    {

         case 1: std::cout << fLiczba1 << " + " << fLiczba2 << " = " << fLiczba1 + fLiczba2 << std::endl; break;

         case 2: std::cout << fLiczba1 << " - " << fLiczba2 << " = " << fLiczba1 - fLiczba2 << std::endl; break;

         case 3: std::cout << fLiczba1 << " * " << fLiczba2 << " = " << fLiczba1 * fLiczba2 << std::endl; break;

         case 4:

              if (fLiczba2 == 0.0)

                 std::cout << "Dzielnik nie moze byc rowny zeru!" <
              else

                 std::cout << fLiczba1 << " / " << fLiczba2 << " = " << fLiczba1 / fLiczba2 << std::endl; break;

         case 0: break;

         default : std::cout << "Nie znana opcje!"; break;

    }

    getch();

}

(Kamil I 2006) #3

Wielkie dzięki.

Wszystko pięknie działa. Używam Dev-C++, a jakie to środowisko to nie mam pojęcia. Kożystam z 'Od zera do gier kodera" może to cos podpowie.

Mam małe pytanie czy ta funkcja może nazywać sie inaczej a nie "GetValues"


(Ryan) #4

Dev-C++ to właśnie środowisko uruchomieniowe. Kompilator to w takim razie najprawdopodobniej MinGW.

Każda funkcja może się nazywać jak bądź (poza główną funkcją programu, która - zależnie od przypadku - powinna nazywać się main, Main, _main, wmain, _wmain lub podobnie).


(Grzegorz Ch) #5

środowisko, to właśnie Dev-C++ a kompilator to GCC.

oczywiście.


(Ryan) #6

Jeszcze taka drobnostka - programowanie nie polega na zadawaniu pytań tylko na programowaniu. (odkrywcze...) Zamiast o to zapytać wystarczyło zmienić nazwę i spróbować samemu. Więcej się nauczysz eksperymentując niż szukając po sieci odpowiedzi. :slight_smile:


(Fryta255) #7

Podepne sie pod temat zeby nie zakladac nowego.

float z1,z2,z3;


   z1=0,5;

   z2=8;

   z3=z1*z2;

   printf("%f",z3);

Dlaczego ten kod w wyniku zwraca 0.00000?

Korzystam z Dev-C++


(somekind) #8

Bo separatorem dziesiętnym jest kropka, a nie przecinek?

Natomiast użycie operatora przecinka w takim miejscu jest raczej bez sensu, ma on zastosowanie raczej tylko w pętli for.


(Fryta255) #9

aaha

noobskie pytanie troche

dobra dzieki :slight_smile: