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

zadanie z lekcji 11 pętla nieskończona

Ostatnio zmodyfikowano 2010-04-15 21:44
Autor Wiadomość
grykon
Temat założony przez niniejszego użytkownika
zadanie z lekcji 11 pętla nieskończona
» 2010-04-15 17:44:39
Witam,
jestem dość mocno początkujący i mam nadzieje że mnie nie zjecie że pisałem chaotycznie czy coś takiego :) robiłem sobie ten program z tej lekcji i już się poddaje. Warunek zmieniałem na różne sposoby na ='p' itp. aż zauważyłem że to nawet w takiej postaci jak jest teraz jest nieskończoną pętlą i nie mam już pomysłu dlatego piszę tu (chodzi o zmienną sprzedaj i drugi warunek(zaznaczone komentarzem(linia 55)

C/C++
#include <conio.h>
#include <iostream>
#include <string>
#include <cctype>
int main()
{
    using namespace std;
   
    const int filmow = 4;
    int biletowNaFilm = 30;
   
    char wybor = 0;
    int bilet[ filmow ][ 1 ];
    string film[ filmow ] = { "Bolek i Lolek", "Seksmisja", "Krzyzacy", "Killer" };
    int sprzedaj = 0;
   
    for( int i = 0; i < filmow; i++ ) //przypisywanie kazdemu filmowi ile biletow(wartosci poczatkowe)
    { bilet[ i ][ 0 ] = biletowNaFilm; }
   
    do
    {
       
        cout << "Kino \"Za Stodola\" Zaprasza." << endl << "Dzisiejsza oferta to:" << endl;
        for( int i = 0; i < filmow; i++ )
        {
            cout << i + 1 << ". " << film[ i ] << "\t(" << bilet[ i ][ 0 ] << " biletow zostalo)" << endl;
        }
        cout << endl << "Wybierz numer filmu lub wpisz z lub Z by zakonczyc" << endl;
       
        cin >> wybor;
       
        for( int j = 0; j < filmow; j++ )
        {
            if( wybor ==( j + 49 ) )
            {
                cout << "Wybrano film " << film[ j ] << endl;
                cout << "Zostalo biletow " << bilet[ j ][ 0 ] << endl;
               
                if( bilet[ j ][ 0 ] == 0 )
                { cout << "Brak biletow na ten film wychodze do menu" << endl;
                    system( "pause" );
                    break; }
               
                cout << "Ile biletow chcesz sprzedac?" << endl << "Jesli chcesz wyjsc do menu wpisz litere p";
                cin >> sprzedaj;
               
                if( sprzedaj >= 0 &&( bilet[ j ][ 0 ] >= sprzedaj ) )
                {
                    if( sprzedaj > bilet[ j ][ 0 ] )
                    { cout << "Nie ma tyle biletow musisz wybrac mniej" << endl; }
                   
                    if( sprzedaj <= bilet[ j ][ 0 ] )
                    { bilet[ j ][ 0 ] = bilet[ j ][ 0 ] - sprzedaj; }
                }
                if( !( sprzedaj >= 0 &&( bilet[ j ][ 0 ] >= sprzedaj ) ) ) //tutaj jest źródło nieskończonej pętli
                { cout << "cos zle"; }
               
            }
        }
       
    } while(( wybor != 'z' ) &&( wybor != 'Z' ) );
   
   
    return 0;
}
P-16165
Pirotechnik
» 2010-04-15 18:26:10
to dlatego że:
Jak chcesz wrócić do menu wpisujesz literę a zmienną masz int sprzedaj!! i wyskakuje Ci błąd zaraz ci podam rozwiązanie...
P-16166
Pirotechnik
» 2010-04-15 18:35:20
albo nie. ty znajdź sensowne rozwiązanie...
P-16167
grykon
Temat założony przez niniejszego użytkownika
» 2010-04-15 18:36:55
ok ale litera to liczba zapisana w kodzie ascii... i to samo wykorzystuje ze zmienna wybor że raz ją sobie przez wyliczenie używam jako pseudo liczby a raz do wyjścia z lub Z i wychodzi grzecznie z programu a ta pętla w linii 55 nie wiem dlaczego jest taka nieposłuszna. Chociaż tam jest char używany jako pseudo int a w drugą strone może to już nie być tak ładne... no w każdym bądź razie czekam na jakąś fajną podpowiedź :) i dzięki za szybką odpowiedź

dobrze mam w takim razie pytanie czy ta zmienna sprzedaj powinna być typu char? bo tak będzie działać tylko jest mały szkopuł że wtedy będzie przechowywać jeden znak czyli max zdejmie 9 biletów.
P-16168
Pirotechnik
» 2010-04-15 18:47:04
char sprzedaj.. to nie am znaczenia weźmie ci tyle znaków ile napiszesz ale i tak wiele nie zdziałasz z tym char
P-16172
grykon
Temat założony przez niniejszego użytkownika
» 2010-04-15 18:52:26
kurcze no to powoli się poddaje... int nie chce udawać zmiennej znakowej char też nie da rady... to nie wiem jak wyłuskać za jednym zamachem albo liczbe albo znak do wyjścia... jakaś podpowiedź?
P-16173
Pirotechnik
» 2010-04-15 18:58:15
też miałem problem z tym programem, ale poprostu zrób jak naciśnie sie 0 to powraca do menu.. wkońcu czeba czasem improwizować
P-16174
grykon
Temat założony przez niniejszego użytkownika
» 2010-04-15 19:00:48
hehe ale chciałem być grzeczny i wg polecenia pójść żeby zjadło literke p ... no ale jak na tym poziomie póki co nie da rady to trudno i idę do przodu :) dzieki za podpowiedz
P-16175
« 1 » 2
  Strona 1 z 2 Następna strona