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

Pętla while.

Ostatnio zmodyfikowano 2014-06-12 23:56
Autor Wiadomość
4Gigis1
Temat założony przez niniejszego użytkownika
Pętla while.
» 2014-06-10 21:22:28
Stworzyłem sobie ten oto program.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
   
    int a;
    int b;
    int c = 0;
    int wybor;
    int zz;
    int liczba;
   
    std::cout << "Wybierz zakres:" << std::endl;
    std::cout << "Od: ";
    std::cin >> a;
    std::cout << "Do: ";
    std::cin >> b;
   
    srand( time( NULL ) );
    liczba =( rand() %( b - a ) ) + a;
    std::cout << liczba << std::endl;
   
    std::cout << "Powtorzyc losowanie?" << std::endl;
    std::cout << " [1] Tak" << std::endl;
    std::cout << " [2] Nie" << std::endl;
    std::cin >> wybor;
   
    switch( wybor )
    {
    case 1:
       
        while( zz =!liczba )
        {
            srand( time( NULL ) );
            zz =( rand() %( b - a ) ) + a;
        }
        std::cout << zz << std::endl;
        break;
       
    case 2:
       
        break;
       
    default:
        std::cout << "Nie podano zadnej liczby.";
       
    }
   
    return 0;
}
I oto chciałbym, aby w drugim losowaniu, nie mogło się wylosować to co w pierwszym, a to nie działa. Gdzie jest błąd?
P-111902
Jacob99
» 2014-06-10 21:24:46
Kurs na tej stronie-> Losowanie bez powtórzeń.
P-111903
pekfos
» 2014-06-10 21:33:40
Kurs na tej stronie-> Losowanie bez powtórzeń.
Raczej "Kurs na tej stronie-> Operacje porównania".
C/C++
while( zz =!liczba )
P-111904
4Gigis1
Temat założony przez niniejszego użytkownika
» 2014-06-10 22:14:33
Przepraszam, nie zauważyłem... Błąd w starym programie poprawiłem i nadal nie działa. Nie wiem czy da się, tym co napisałem za pierwszym razem, to zrobić?
P-111906
pekfos
» 2014-06-11 14:35:49
srand() powinno być wywołane raz w takim programie. Dodatkowo, po poprawieniu warunku w pętli, zz jest użyte niezainicjalizowane, i zapewne warunek jest zły.. Popraw i zamiast pisać same 'dalej nie działa', podaj kod.
P-111919
4Gigis1
Temat założony przez niniejszego użytkownika
» 2014-06-11 20:40:49
Dobrze, zamieniłem pętle while, na do... while, wydaje mi się, że to uprości sprawę. Kod:

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
   
    int a;
    int b;
    int c = 0;
    int wybor;
    int zz;
    int liczba;
    srand( time( NULL ) );
   
    std::cout << "Wybierz zakres:" << std::endl;
    std::cout << "Od: ";
    std::cin >> a;
    std::cout << "Do: ";
    std::cin >> b;
   
    liczba =( rand() %( b - a ) ) + a;
    std::cout << liczba << std::endl;
   
    std::cout << "Powtorzyc losowanie?" << std::endl;
    std::cout << " [1] Tak" << std::endl;
    std::cout << " [2] Nie" << std::endl;
    std::cin >> wybor;
   
    switch( wybor )
    {
    case 1:
       
        do
        {
            zz =( rand() %( b - a ) ) + a;
        } while( zz != liczba );
       
        std::cout << zz << std::endl;
        break;
       
    case 2:
       
        break;
       
    default:
        std::cout << "Nie podano zadnej liczby.";
       
    }
   
    return 0;
}
 
P-111949
pekfos
» 2014-06-11 20:47:47
C/C++
while( zz != liczba );

i zapewne warunek jest zły
Jak chcesz wylosować taką samą liczbę, to po prostu przypisz..
P-111950
4Gigis1
Temat założony przez niniejszego użytkownika
» 2014-06-11 20:52:59
Nie rozumiem, w takim razie jaki warunek powinienem użyć?
P-111951
« 1 » 2 3
  Strona 1 z 3 Następna strona