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

Kalkulator w C++

Ostatnio zmodyfikowano 2009-05-02 13:54
Autor Wiadomość
Macius700
Temat założony przez niniejszego użytkownika
Kalkulator w C++
» 2009-04-25 12:40:04
Mam napisać kalkulator w C++ mam już do napisanego prawie tylko mam jeden proglem mam od 1 do 7  rzędzie działania które moge wybrać jak wybieram np dodwanie i je wykonam to jest okej pozniej chcem np mnożenie i tamto się zaczyna się wykonywania nowego działania tam gdzie to stare jak zrobić żeby to było pod tym starym albo sie to stare usuwało z momentem wykonywania następengo działania to jedno i jeszcze jak wybiore 7 to pojawia sie napis "ok" i jak nacisne drugi raz prgram powinien się zamykać a nie jest tak jak to zrobic?? Ogólnie prosze o sprawdzenie tego programu :

C/C++
#include <cstdlib>
#include <conio.h>
#include <math.h>
#include <iostream>
#include "console.ddt"

using namespace std;
using namespace ddt::console;
float dodawanie( float a, float b )
{ float wynik;
    wynik = a + b;
    return( wynik );
}
float odejmowanie( float d, float e )
{ float wynik;
    wynik = d - e;
    return( wynik );
}

int main( int argc, char * argv[] )
{
    int licznik = 10, znak;
    float x, y, z;
   
    {
        gotoxy( 30, 10 );
        textcolor( 920 );
        cout << "1 - Dodawanie" << endl;
        gotoxy( 30, 11 );
        textcolor( 101 );
        cout << "2 - Odejmowanie" << endl;
        gotoxy( 30, 12 );
        textcolor( 203 );
        cout << "3 - Mnozenie" << endl;
        gotoxy( 30, 13 );
        textcolor( 504 );
        cout << "4 - Dzielenie" << endl;
        gotoxy( 30, 14 );
        textcolor( 902 );
        cout << "5 - Pierwiastek" << endl;
        gotoxy( 30, 15 );
        textcolor( 603 );
        cout << "6 - Kwadrat" << endl;
        gotoxy( 30, 16 );
        textcolor( 755 );
        cout << "7 - Wyjscie z Menu" << endl;
        gotoxy( 30, 20 );
        textcolor( 92 );
        cout << "Esc - Koniec" << endl;
        gotoxy( 30, 21 );
        textcolor( 1010 );
        cout << "Enter - Wybieranie" << endl;
        gotoxy( 25, licznik );
        textcolor( 999 );
        cout << "->" << endl;
       
    }
   
    do
    {
        znak = getch();
        if( znak == 224 ) znak = getch();
        //  cout<<znak;
       
        switch( znak )
        {
        case 80:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 16 )
                {
                    licznik = 10;
                }
                else
                {
                    licznik++;
                }
               
               
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 72:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 10 )
                {
                    licznik = 16;
                }
                else
                {
                    licznik--;
                }
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 13:
            {
                //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   
                switch( licznik )
                {
                case 10:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = dodawanie( x, y );
                        cout << x << "+" << y << "=" << z << endl;
                       
                    } break;
                case 11:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = odejmowanie( x, y );
                        cout << x << "-" << y << "=" << z << endl;
                    } break;
                case 12:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x * y;
                        cout << x << "*" << y << "=" << z << endl;
                    } break;
                case 13:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x / y;
                        cout << x << "/" << y << "=" << z << endl;
                    } break;
                case 14:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = sqrt( x );
                        cout << "pierwiastek x= " << z << endl;
                    } break;
                case 15:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = x * x;
                        cout << "x^2=" << z << endl;
                    } break;
                case 16:
                    {
                        cout << "ok" << endl;
                        cout << "Naciśnij ESc";
                    } break;
                    default:
                    {
                        cout << "eror" << endl;
                    } break;
                }
            }
        }
    } while( znak != 27 );
   
    return EXIT_SUCCESS;
}
P-5959
DejaVu
» 2009-04-25 13:28:49
Wkleiłem Twoj kod, skompilowałem i uruchomiłem. Nie za bardzo zrozumiałem o co Ci chodzi w Twoim pytaniu. Warto wstawiać znaki interpunkcyjne budując pytania :)

Z tego co jednak zauważyłem, to przydałoby się czyścić ekran po wykonaniu działania i rysować ponownie całe menu itp. W każdym razie poprawiłem trochę Twój kod:
C/C++
#include <cstdlib>
#include <conio.h>
#include <math.h>
#include <iostream>
#include "console.ddt"

using namespace std;
using namespace ddt::console;
float dodawanie( float a, float b )
{ float wynik;
    wynik = a + b;
    return( wynik );
}
float odejmowanie( float d, float e )
{ float wynik;
    wynik = d - e;
    return( wynik );
}

void rysuj_menu()
{
    gotoxy( 30, 10 );
    textcolor( 920 );
    cout << "1 - Dodawanie" << endl;
    gotoxy( 30, 11 );
    textcolor( 101 );
    cout << "2 - Odejmowanie" << endl;
    gotoxy( 30, 12 );
    textcolor( 203 );
    cout << "3 - Mnozenie" << endl;
    gotoxy( 30, 13 );
    textcolor( 504 );
    cout << "4 - Dzielenie" << endl;
    gotoxy( 30, 14 );
    textcolor( 902 );
    cout << "5 - Pierwiastek" << endl;
    gotoxy( 30, 15 );
    textcolor( 603 );
    cout << "6 - Kwadrat" << endl;
    gotoxy( 30, 16 );
    textcolor( 755 );
    cout << "7 - Wyjscie z Menu" << endl;
    gotoxy( 30, 20 );
    textcolor( 92 );
    cout << "Esc - Koniec" << endl;
    gotoxy( 30, 21 );
    textcolor( 1010 );
    cout << "Enter - Wybieranie" << endl;
}

int main( int argc, char * argv[] )
{
    int licznik = 10, znak;
    float x, y, z;
   
    do
    {
        clrscr();
        rysuj_menu();
        gotoxy( 25, licznik );
        textcolor( 999 );
        cout << "->" << endl;
       
        znak = getch();
        if( znak == 224 ) znak = getch();
        //  cout<<znak;
       
        switch( znak )
        {
        case 80:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 16 )
                {
                    licznik = 10;
                }
                else
                {
                    licznik++;
                }
               
               
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 72:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 10 )
                {
                    licznik = 16;
                }
                else
                {
                    licznik--;
                }
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 13:
            {
                gotoxy( 1, 1 );
                switch( licznik )
                {
                case 10:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = dodawanie( x, y );
                        cout << x << "+" << y << "=" << z << endl;
                       
                    } break;
                case 11:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = odejmowanie( x, y );
                        cout << x << "-" << y << "=" << z << endl;
                    } break;
                case 12:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x * y;
                        cout << x << "*" << y << "=" << z << endl;
                    } break;
                case 13:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x / y;
                        cout << x << "/" << y << "=" << z << endl;
                    } break;
                case 14:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = sqrt( x );
                        cout << "pierwiastek x= " << z << endl;
                    } break;
                case 15:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = x * x;
                        cout << "x^2=" << z << endl;
                    } break;
                case 16:
                    {
                        cout << "Koniec :-)" << endl;
                    } break;
                    default:
                    {
                        cout << "eror" << endl;
                    } break;
                } //switch
                if( licznik != 16 )
                {
                    cout << "Nacisnij dowolny klawisz aby powrocic do menu." << endl;
                    getch();
                } //if
            }
        }
    } while( !(( licznik == 16 && znak == 13 ) || znak == 27 ) );
   
    return EXIT_SUCCESS;
}

Mam nadzieję, że to Ci pomoże w osiągnięciu efektu, który chcesz uzyskać.
P-5960
Macius700
Temat założony przez niniejszego użytkownika
» 2009-04-25 13:39:14
Napisz mi wytłumaczyć to co zmieniłeś w moim programie bo gubie się w tym skad te 13 na końcu programu?
P-5962
DejaVu
» 2009-04-25 16:41:39
Jeśli zaznaczona jest ostatnia pozycja i wciśnięto klawisz enter - zakończ program. Drugi sposób na wyjście to wciśnięcie klawisza ESC.
P-5966
Macius700
Temat założony przez niniejszego użytkownika
» 2009-04-25 22:24:32
Czyli program  bedzie wygładał następująco :

C/C++
#include <cstdlib>
#include <conio.h>
#include <math.h>
#include <iostream>
#include "console.ddt"

using namespace std;
using namespace ddt::console;
float dodawanie( float a, float b )
{ float wynik;
    wynik = a + b;
    return( wynik );
}
float odejmowanie( float d, float e )
{ float wynik;
    wynik = d - e;
    return( wynik );
}

int main( int argc, char * argv[] )
{
    int licznik = 10, znak;
    float x, y, z;
   
    {
        gotoxy( 30, 10 );
        textcolor( 920 );
        cout << "1 - Dodawanie" << endl;
        gotoxy( 30, 11 );
        textcolor( 101 );
        cout << "2 - Odejmowanie" << endl;
        gotoxy( 30, 12 );
        textcolor( 203 );
        cout << "3 - Mnozenie" << endl;
        gotoxy( 30, 13 );
        textcolor( 504 );
        cout << "4 - Dzielenie" << endl;
        gotoxy( 30, 14 );
        textcolor( 902 );
        cout << "5 - Pierwiastek" << endl;
        gotoxy( 30, 15 );
        textcolor( 603 );
        cout << "6 - Kwadrat" << endl;
        gotoxy( 30, 16 );
        textcolor( 755 );
        cout << "7 - Wyjscie z Menu" << endl;
        gotoxy( 30, 20 );
        textcolor( 92 );
        cout << "Esc - Koniec" << endl;
        gotoxy( 30, 21 );
        textcolor( 1010 );
        cout << "Enter - Wybieranie" << endl;
        gotoxy( 25, licznik );
        textcolor( 999 );
        cout << "->" << endl;
       
    }
   
    do
    {
        znak = getch();
        if( znak == 224 ) znak = getch();
        //  cout<<znak;
       
        switch( znak )
        {
        case 80:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 16 )
                {
                    licznik = 10;
                }
                else
                {
                    licznik++;
                }
               
               
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 72:
            {
                gotoxy( 25, licznik );
                cout << "  " << endl;
                if( licznik == 10 )
                {
                    licznik = 16;
                }
                else
                {
                    licznik--;
                }
                gotoxy( 25, licznik );
                cout << "->" << endl;
            } break;
        case 13:
            {
                //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   
                switch( licznik )
                {
                case 10:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = dodawanie( x, y );
                        cout << x << "+" << y << "=" << z << endl;
                       
                    } break;
                case 11:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = odejmowanie( x, y );
                        cout << x << "-" << y << "=" << z << endl;
                    } break;
                case 12:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x * y;
                        cout << x << "*" << y << "=" << z << endl;
                    } break;
                case 13:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        cout << "podaj drugą liczbe" << endl;
                        cin >> y;
                        z = x / y;
                        cout << x << "/" << y << "=" << z << endl;
                    } break;
                case 14:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = sqrt( x );
                        cout << "pierwiastek x= " << z << endl;
                    } break;
                case 15:
                    {
                        cout << "Podaj pierwsza liczbe" << endl;
                        cin >> x;
                        z = x * x;
                        cout << "x^2=" << z << endl;
                    } break;
                case 16:
                    {
                        cout << "ok" << endl;
                        cout << "Naciśnij ESc";
                    } break;
                    default:
                    {
                        cout << "eror" << endl;
                    } break;
                }
            }
        }
    } while( !(( licznik == 16 && znak == 13 ) || znak == 27 ) );
   
    return EXIT_SUCCESS;
}

Mam pytanie jeszcze co zrobić w moim programie w taki najłatwijszy sposób aby po wykoaniu działania np dodwania te opercje się wyczyściły albo żeby kolejne operacje były pod tymi starymi a nie na nich bo nic z tego nie widać , bo to co ty zrobiłeś tak to ma byc to ael kompletnie tego nie rzoumiem potzrebuje w jakiś najłatwiejszy sposób. Jak możesz bo widze że jesteś autorem kursów C++ z których korzystam więc znasz się na rzeczy prosiłbym ciebie o opracowanie opisu tego programu , bo będe w szkole z niego pytane wieć musze go umieć  szczegółowo. Pozdrawiam :) Ogólnie prosze o sprawdzenie programy czy jest dobrze albo prosze chodz napisac komentarze do tego programu 
P-6015
krdk
» 2009-04-25 22:33:37
Sorry za offtop'a, ale nic poza zdaniem "Pozdrawiam" z powyższego tekstu nie zrozumiałem.
P-6018
DejaVu
» 2009-04-26 01:44:57
Cóż ja zrobiłem w Twoim programie:
1) wstawiłem czyszczenie ekranu za każdym przebiegiem pętli
2) przeniosłem kod wypisujący menu do funkcji i wywołałem ją w odpowiednim miejscu
3) jeśli opcja zostanie wybrana ustawiam kursor na pozycji 1,1
4) dodałem czekanie na wciśnięcie klawisza aby wynik nie znikał zaraz po jego wyświetleniu
5) zmieniłem warunek wyjścia z pętli głównej programu
P-6019
Macius700
Temat założony przez niniejszego użytkownika
» 2009-04-26 11:27:07
Możesz podać fragmenty kodu , które za te operacje odpowiadają. Mógłbys opisać  mój program bo twój jest za trudny jeszcze takich rzeczy nie robilismy w szkole.
P-6027
« 1 » 2 3 4
  Strona 1 z 4 Następna strona