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

Mały problem z kalkulatorem na zaliczenie

Ostatnio zmodyfikowano 2012-05-09 21:01
Autor Wiadomość
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=landing

I 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=landing

2.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=landing

2.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/1a2b5b12313d411139a7ddb

Był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



P-56274
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?
C/C++
cout << endl << "-Podaj pierwsza wartosc: "; // Prosi o podanie pierwszej liczby.
cin >> a; // Zmienna typu float, Pobieranie liczby od użytkownika.
cout << "-Podaj druga wartosc: "; // Prosi o podanie drugiej liczby.
cin >> b; // Zmienna float, Pobieranie liczby od użytkownia.
cout << endl; // Przejście do następnej lini.
cout << endl << "2. Dzialanie oraz wynik" << endl << endl; // Dalsza część programu.

A co do wyjścia z programu to zamiast
break;
 daj
return 0;
 w
case 0:
P-56293
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
P-56294
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
P-56306
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?
P-56310
ison
» 2012-05-09 06:44:05
C/C++
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.
P-56312
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
C/C++
int GlowneMenu;
std::cin >> GlowneMenu;
if( GlowneMenu == 1 ) { /*coś tam...*/ }
if( GlowneMenu == 2 ) { /*coś tam...*/ }
if( GlowneMenu == 3 ) { /*coś tam...*/ }
if( GlowneMenu == 4 ) { /*coś tam...*/ }
if( GlowneMenu == 0 ) { break; }

- DO..WHILE
C/C++
int GlowneMenu;
std::cin >> GlowneMenu;
do {
    /* Kod powyżej z if'em ale bez zera (ostatniej linijki) */
} while( GlowneMenu != 0 );

break;

- CASE
C/C++
int GlowneMenu;
std::cin >> GlowneMenu;
switch( GlowneMenu ) {
case 1:
    /*cos tam...*/;
    break;
case 2:
    /*cos tam...*/;
    break;
case 3:
    /*cos tam...*/;
    break;
case 4:
    /*cos tam...*/;
    break;
case 0:
    /* zakoncz */
    break;
}

Wydaję mi się że główna pętla z do..while jest najlepsza, ale to moja opinia

/EDIT
Z tą nieznaną opcją...
C/C++
do {
    int GlowneMenu;
    std::cin >> GlowneMenu;
    if( GlowneMenu == 1 ) { /*cos tam...*/ }
    /* if GlowneMenu == 2, 3, 4 itd... */
    if( GlowneMenu >= 5 || GlowneMenu <= - 1 ) std::cout << " Nieznana opcja ";
   
} while( GlowneMenu != 0 );

Rozumiesz? :)
P-56313
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
P-56319
« 1 » 2
  Strona 1 z 2 Następna strona