Changes Temat założony przez niniejszego użytkownika |
Mały problem z kalkulatorem na zaliczenie » 2012-05-08 19:11:12 Witam, jestem tu nowy, i mam problem z kalkulatorem, którego nie umiem rozwiązać ponieważ jestem początkujący w C++. Kalkulator starałem się zrobić sam, bo przez kopiowanie niczego się nie nauczę, więc proszę się nie śmiać z tego jak to wygląda. :D A więc program wygląda tak: http://desmond.imageshack.us/Himg259/scaled.php?server=259 &filename=pierwszyobrazek.jpg&res=landingI tu jest wszystko w porządku, ale problem zaczyna się gdy naciskam 0(zero) Wyjście z programu lub inną liczbę niż 1,2,3,4 tzn. 5-9. Otóż: 1.Gdy naciskam 0 to wciąż wyskakuje mi: http://desmond.imageshack.us/Himg822/scaled.php?server=822 &filename=drugiobrazek.jpg&res=landing2.A chciałbym, żeby wyglądało to tak,( i by po tym program się wyłączył): http://desmond.imageshack.us/Himg217/scaled.php?server=217 &filename=poprawne.jpg&res=landing------------------------------------------------------------------------------------------------- 1.lub inne liczby od 1-4 http://desmond.imageshack.us/Himg685/scaled.php?server=685 &filename=trzeciobrazek.jpg&res=landing2.A chciałbym, żeby wyglądało to tak: http://desmond.imageshack.us/Himg232/scaled.php?server=232 &filename=poprawne1.jpg&res=landing------------------------------------------------------------------------------------------------- Oto kod kalkulatora stworzonego w Dev-C++: http://www.sendspace.pl/file/1a2b5b12313d411139a7ddbByłym wdzięczny za wszelaką pomoc w rozwiązaniu tego problemu, interesuje mnie to co źle zrobiłem, i prosiłbym o wskazanie miejsca błędów( dodatkowe if-y, lub druga zmienna char i druga instrukcja "switch" nic nie pomogły :( ). Mam nadzieję, że nic nie pominąłem. :D |
|
OSA_PL |
» 2012-05-08 23:26:46 Ten kawałek kodu powinien być wykonywany tylko w case'ach odpowiadających za działania, bo po co ma pobierać dane jak użytkownik chce wyjść z programu? cout << endl << "-Podaj pierwsza wartosc: "; cin >> a; cout << "-Podaj druga wartosc: "; cin >> b; cout << endl; cout << endl << "2. Dzialanie oraz wynik" << endl << endl;
A co do wyjścia z programu to zamiast break; daj return 0; w case 0: |
|
Admixior |
» 2012-05-08 23:30:13 Chciałbym zauważyć jedną rzecz. Program się wykonuje po kolei. Takie instrukcje jak podasz tak się wykonują (nie wazne czy w danej sytuacji to ma sens, o to musisz sam zadbać). Przeanalizuj sobie kod z uwzględnieniem na to.
Uno: 0 nic ci nie da bo nic z tym nie robisz. Na końcu i tak wyjdzie ci z pętli jeśli wpiszesz "n". Najlepiej jak dasz nieskończoną pętlę while i po podaniu liczby sprawdza ci czy nie jest to zero (->break) lub czy jest pomiędzy 1 - 4 (stosowny komunikat i ->continue);
Duo: "cin>>nowy,koniec;" - przyznam się że wciągu moich 3 lat w programowaniu nigdy się z tym nie spotkałem. Co to robi i dlaczego się kompiluje?
//ehh... uprzedziłeś mnie |
|
ison |
» 2012-05-09 00:08:01 Duo: "cin>>nowy,koniec;" - przyznam się że wciągu moich 3 lat w programowaniu nigdy się z tym nie spotkałem. Co to robi i dlaczego się kompiluje?
|
zwykły operator przecinka - zwraca wartość po prawej stronie |
|
Admixior |
» 2012-05-09 01:16:16 @up: Czyli nie ma tutaj większego znaczenia czy się tego użyje? cout<<(cin>>...,koniec); //wypisze koniec? |
|
ison |
» 2012-05-09 06:44:05 int abc; cout <<( cin >> abc, koniec );
W nawiasie masz 2 instrukcje oddzielone przecinkiem, wykonają się od lewej do prawej. Najpierw wczytasz zmienną abc a potem cały nawias zwróci wartość z prawej czyli koniec i ją wypiszesz. |
|
Temes |
» 2012-05-09 15:23:42 1.Jeżeli chcesz aby program się zakończył, możesz zrobić to na kilka sposobów... - IF int GlowneMenu; std::cin >> GlowneMenu; if( GlowneMenu == 1 ) { } if( GlowneMenu == 2 ) { } if( GlowneMenu == 3 ) { } if( GlowneMenu == 4 ) { } if( GlowneMenu == 0 ) { break; }
- DO..WHILE int GlowneMenu; std::cin >> GlowneMenu; do { } while( GlowneMenu != 0 );
break;
- CASE int GlowneMenu; std::cin >> GlowneMenu; switch( GlowneMenu ) { case 1: ; break; case 2: ; break; case 3: ; break; case 4: ; break; case 0: break; }
Wydaję mi się że główna pętla z do..while jest najlepsza, ale to moja opinia /EDIT Z tą nieznaną opcją... do { int GlowneMenu; std::cin >> GlowneMenu; if( GlowneMenu == 1 ) { } if( GlowneMenu >= 5 || GlowneMenu <= - 1 ) std::cout << " Nieznana opcja "; } while( GlowneMenu != 0 ); Rozumiesz? :) |
|
Changes Temat założony przez niniejszego użytkownika |
» 2012-05-09 17:31:41 A więc program, który zrobiłem nie jest za dobry. :(
@Admixior
Jak już mówiłem jestem początkujący w programowaniu C++, uczę się za pomocą różnych kursów prócz szkoły więc, : --------------------------------- "Duo: "cin>>nowy,koniec;" - przyznam się że wciągu moich 3 lat w programowaniu nigdy się z tym nie spotkałem. Co to robi i dlaczego się kompiluje?" ---------------------------------- To "nowy,koniec" jest u mnie jako zmienna char(T,t,N,n), a cin>>nowy,koniec; w zależności czy chcę zakończyć program czy też nie pobiera ode mnie znak T,t,N lub n. :)
@Temes
Ja widziałem widziałem w jednym kursie menu za pomocą if-ów ale czy to jest dobry sposób?
@OSA_PL
return 0; bardzo dobrze działa. W sumie te "dziękujemy za uwagę" nie jest potrzebne bo wyjście to w końcu wyjście.
Pokombinuje jeszcze z tym moim wytworem. a jeśli nic mi nie wyjdzie skorzystam z if-ów.
Dziękuję za zainteresowanie i pomoc. :) Niedługo powiem czy mi się udało. -----------------------------------------------------------------------------------
DZIĘKI Wszystkim bo chyba mi się udało, teraz tylko ewentualnie kosmetyczne poprawki (kolor, rozmieszczenie tekstu(gotoxy o ile w C++ działa)). :D
@OSA_PL Zrobiłem tak jak poradziłeś z tym by pewien kawałek kodu był tylko w case'ach odpowiedzialnych za działania.
Tu efekt poprawek: http://www.sendspace.pl/file/d85e5545fd214937089f639
Proszę to ocenić i jeśli wszystko w porządku to temat do zamknięcia
|
|
« 1 » 2 |