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 : #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(); 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; } |
|
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: #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(); 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; } if( licznik != 16 ) { cout << "Nacisnij dowolny klawisz aby powrocic do menu." << endl; getch(); } } } } 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ć. |
|
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? |
|
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. |
|
Macius700 Temat założony przez niniejszego użytkownika |
» 2009-04-25 22:24:32 Czyli program bedzie wygładał następująco : #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(); 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 |
|
krdk |
» 2009-04-25 22:33:37 Sorry za offtop'a, ale nic poza zdaniem "Pozdrawiam" z powyższego tekstu nie zrozumiałem. |
|
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 |
|
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. |
|
« 1 » 2 3 4 |