Poprawa programu, który jest zapetlony
Ostatnio zmodyfikowano 2015-11-28 19:39
razenas Temat założony przez niniejszego użytkownika |
Poprawa programu, który jest zapetlony » 2015-11-28 17:52:42 Witam napisałem sobie program testowy, który miał byc dla mnie podstawa do zrobienia innego. Ogolnie oba programy miały dzialac tak, że: podaje sie mu dwie liczby, potem wybiera pomiedzy mozliwymi dzialaniami, a na koncu mamy mozliwosci: Kontynuowania obliczen z naszym wynikiem / podania nowych liczb lub zakonczenia pracy programu W przypadku pierwszej opcji z ostatnich, czyli kontunuwania dodalem sobie zmienna znikanie, jesli wybiore opcje kontynuowania to znikanie=1, a jesli znikanie jest rowne 1, to z automatu nie pojawia sie wpisywanie pierwszej liczby(x) i przypisuje dla niej wartosc wyniku, co widac w programie ale to nie jest wazne dla tego tematu W podobny sposob elminuje opcje "Kontunuj liczenie" jesli ktos nie wybierze ani odejmowania ani dodwania np zamiast 1 lub 2 kliknie 9. A tak ogolnie chodzi o to, ze jestem poczatkujacy, moze ktos zna inny ciekawszy sposob na prezentacje czegos takiego ? :) Program dziala i mimo wszystko jestem z niego zadowolony :D [EDIT] Jedyne co bym zmienil to troche bardziej uporzadkowal kod zeby byl czytelniejszy nawet w tej wersji #include <iostream> #include <cmath> #include <cstdlib> #include <iomanip> #include <cstdio> #include <conio.h>
using namespace std; int b = 1; double x, y, wynik, znikanie = - 1; char co;
int main() { for( int wybor;; ) { if( znikanie != 1 ) { cout << "podaj pierwsza liczbe(x):" << endl; cout << "x = "; cin >> x; } if( znikanie == 1 ) cout << "x = " << x << endl; cout << "podaj druga liczbe(y):" << endl; cout << "y = "; znikanie = 0; cin >> y; cout << "Kliknij 1, jesli chcesz dodawac, lub 2 jesli chcesz odejmowac" << endl; co = getch(); switch( co ) { case '1': { wynik = x + y; cout << "Suma = " << wynik; b = 0; } break; case '2': { wynik = x - y; cout << "Roznica = " << wynik; b = 0; } break; default: { cout << "Kliknales zla liczbe"; b = 1; } } cout << "\n\nCo dalej?" << endl; if( b == 0 ) { cout << "1 - Licze dalej" << endl; } cout << "2 - Nowe liczby/Zaczynam od nowa" << endl; cout << "3 - Koniec" << endl; wybor = getch(); if( b == 0 ) { switch( wybor ) { case '1': { system( "cls" ); znikanie = 1; x = wynik; } break; case '2': { system( "cls" ); znikanie = 0; } break; case '3': { exit( 0 ); default: exit( 0 ); } } } else if( b == 1 ) { switch( wybor ) { case '2': { system( "cls" ); znikanie = 0; } break; case '3': { exit( 0 ); } default: exit( 0 ); } } } system( "pause" ); return 0; }
|
|
Bornegio |
» 2015-11-28 18:21:25 1. Zmienne globalne są celowo? Bo jeśli nie to staraj się unikać tego rozwiązania i zadeklaruj je wewnątrz funkcji. 2. Jako głównej pętli nie lepiej byłoby użyć do while? Nie bardzo rozumiem w jakim celu tak zaczarowałeś z tą pętlą krokową. 3. Strasznie zaczarowałeś w tym programie. Nie ma sensu utrudniać sobie życia i prostota jest najlepsza. Samo działanie programu można ograniczyć do ~20 linijek kodu.
Zadeklaruj zmienną x jako 0. Potem pobieraj liczbę x tylko jeśli jest równa 0. Wynik działania nadpisuj w liczbie x. Jeśli chcesz kontynuować, to nie pobiera X, bo jest różne od 0 i z automatu masz tam sumę. Potem pobiera normalnie y i wykonuje działanie. Jak chcesz wykonać od nowa działanie to zmieniasz X z powrotem na 0 i normalnie pobiera tę liczbę pobiera. Bez wielu niepotrzebnych zmiennych i operacji w których się można pogubić. |
|
carlosmay |
» 2015-11-28 19:20:24 int b = 1; double x, y, wynik, znikanie = - 1; char co;
No i te zmienne globalne. Po co??? |
|
razenas Temat założony przez niniejszego użytkownika |
» 2015-11-28 19:39:12 Dzieki za rady :) zmienny sa globalne, bo na poczatku napisalem sam program liczacy, a dopiero potem dodalem petle i "wybor", a jako ze to tylko test i chodzi glownie o samo dzialanie to nawet nie patrzalem na to co "juz dziala" i nic nie poprawilem, a "b" i "znikanie" pozniej dopisalem z przyzwyczajenia tam gdzie reszte zmiennych :D |
|
« 1 » |