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

While nie chce działać.

Ostatnio zmodyfikowano 2011-04-28 00:55
Autor Wiadomość
WeNoN
Temat założony przez niniejszego użytkownika
While nie chce działać.
» 2011-04-27 23:42:05
Witam wszystkich, jestem początkującym w dziedzinie programowania ale uważnie czytam każdą lekcję dla początkujących. Kiedy spróbowałem napisać własna gierkę to pojawił się problem z while. Po skomplikowaniu to tak jak by tej komendy nie było. Gra polega na tym by odgadnąć liczbę którą komp wylosuje. Niestety po wpisaniu jakiej kolwiek liczby to poinformuje mnie, że jest za duża bądź za mała ale na tym koniec i zamyka aplikacje. A według mnie, while powinno wrócić do ponownej możliwości odgadnięcia liczby dopóki nie zostanie odgadnięta. Kod który podaje nie jest całym kodem gry, resztę dopiszę gdy rozwiążę problem z while w pierwszej opcji (łatwy). Co ja robie nie tak?

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
int main()
{
    int a;
    int x;
    int b;
    int y;
    int c;
    int z;
    cout << "Witaj w mojej pierwszej grze komputerowej autorstwa nie twojego XDD" << endl;
    cout << "Gra polega na odgadnieciu liczby ktora komputer wylosowal." << endl;
    cout << "\n Poziom trudnosci:" << endl;
    cout << "1-Latwy\n2-sredni\n3-trudny\n\nWpisz odpowiednia liczbe a nastepnie kliknij enter." << endl;
    int menu;

    do{

    cin >> menu;

    switch (menu)
        case 1:
        {
            srand( time( NULL ) );
            x = ( rand () % 10 ) + 1;
            cout << "Wylosowano liczby od 1 do 10, odgadnij jaka to liczba." << endl;
            do{
            cin >> a;
                if (a > x)
                {

                    cout << "Wpisales za duza liczbe, sporbuj odgadnac jeszcze raz." << endl;

                    if (a < x)
                    {
                        cout << "Wpisales za mala liczbe, sprobuj odgadnac jeszcze raz." << endl;
                        if ( a = x )
                            cout << "gratulacje, odgadles liczbe :) wybierz ponownie poziom trudnosci." << endl;
                        }
                }
               }while (a > x && a < x );
        }
        break;
    }while (a == x);

    return 0;
}
P-32124
ison
» 2011-04-27 23:48:10
jaki sens ma ta linijka?
C/C++
while( a > x && a < x );

jak liczba może być jednocześnie większa i mniejsza od drugiej? :p
P-32125
malan
» 2011-04-27 23:48:51
a
 nie może być jednocześnie większe i mniejsze od
x
.
P-32126
WeNoN
Temat założony przez niniejszego użytkownika
» 2011-04-27 23:53:19
No racja XD Już to poprawiłem, lecz pojawił się kolejny problem bo if-y mi przestały działać. Działa tylko ten informujący o tym, że liczba jest za duża.
P-32129
dmx81
» 2011-04-28 00:00:56
C/C++
if( a = x )
//zmien na
if( a == x )
czesty blad poczatkujacych (i nie tylko) :) sam kiedys dluuuugo szukalem, co nie tak mialem...

do tego cos z nawiasami klamrowymi w switch nie ten tego
switch
no i dodaj default ( co zrobic, w razie, jesli ktos wybierze inna liczbe - np informacje, zeby wybral 1 ;)

pozostale zmienne bedziesz uzywal pozniej? czasem warto nadac im jakas wartosc, zeby nie trzymaly "smieci";
P-32131
WeNoN
Temat założony przez niniejszego użytkownika
» 2011-04-28 00:06:10
Faktycznie, już to zmieniłem, dzieki ale dalej 2 ostatnie ify nie pokazuja komunikatu, czy odgadlem liczbe czy nie :( Jak dam za mala to nic nie pisze tylko dalej moge wpisywac kolejne liczby, a powinno pisac ze za mala, albo jak odgadne to nie pisze, "gratulacje..." tylko wychodzi z aplikacji, a powwino wlasnie zakomunikowac te gratulacje oraz wrocic do wyboru poziomu trudnosci wedlug tego ostatniego  }while (a == x); Wybaczcie ze tam magluje ale jestem poczatkujacy a nie usne puki nie dowiem sie dlaczego zle wychodzi XD

Tak, pozostale beda uzywane w case 2 i case 3 czyli w poziomie trudnosci sredni i trudny.
P-32132
dmx81
» 2011-04-28 00:10:52
mam :)
 pierwszy if ci wszystko blokuje, tzn po if nie otwieraj nawiasow klamrowych, poniewaz w ten sposob mowisz:

jesli warunek w if spelniony, wykonaj wszystko, co znajduje sie od momentu otwrcia klamry {      do momentu zamkniecia klamry }
P-32133
WeNoN
Temat założony przez niniejszego użytkownika
» 2011-04-28 00:17:03
YEAH! Wszystko dziala!! Dzieki wam wielkie! Teraz mogę robić spokojnie nastepne poziomy trudnosci :) Jeszcze raz dziekuje.
P-32134
« 1 » 2
  Strona 1 z 2 Następna strona