Skocz do zawartości

Dziwny proble z "if"


Solmis

Rekomendowane odpowiedzi

Mam taki kod:

 

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
string wybierz;
int maximum;
int liczba_koncowa;

cout<<"Wpisz z jakiego zakresu liczb ma losowac program\n";
cout<<"\nWpisz '1', zeby wylosowac liczbe z zakresu 0-4\n";
cout<<"\nWpisz '2', zeby wylosowac liczbe z zakresu 0-6\n";
cout<<"\nWpisz '3', zeby wylosowac liczbe z zakresu 0-8\n";
cout<<"\nWpisz '4', zeby wylosowac liczbe z zakresu 0-10\n";
cout<<"\nWpisz '5', zeby wylosowac liczbe z zakresu 0-12\n";
cout<<"\nWpisz '6', zeby wylosowac liczbe z zakresu 0-20\n";
cout<<"\nWpisz '7', zeby wylosowac liczbe z zakresu 0-100\n";
cin>>wybierz;

if (wybierz == "1");
{
maximum = 4;
}
if (wybierz == "2");
{
maximum = 6;
}
if (wybierz == "3");
{
maximum = 8;
}
if (wybierz == "4");
{
maximum = 10;
}
if (wybierz == "5");
{
maximum = 12;
}
if (wybierz == "6");
{
maximum = 20;
}
if (wybierz == "7");
{
maximum = 100;
}



     srand( (unsigned)time( NULL ) );
     liczba_koncowa = rand() % maximum;
     cout<<"Wylosowana liczba: "<<liczba_koncowa;

    getch();

    return 0;
}

 

Ma on losować liczby z wybranego zakresu. Wszystko działa, tylko losuje ZAWSZE liczby z zakresu 0-100 (największego).

Próbowałem dodać "else", ale wtedy mi nie kompilowało się.

Poradźcie mi (co zrobić, albo podajcie jakąś dyrektywę #include do "else". :P

Odnośnik do komentarza
Udostępnij na innych stronach

Zobaczmy:

#include <cstdlib>
#include <iostream>
#include <ctime>
#include <conio.h>
#include <string>

using namespace std;

int main()
{
int wybierz;
int maximum;
int liczba_koncowa;

cout<<"Wpisz z jakiego zakresu liczb ma losowac program\n";
cout<<"\nWpisz '1', zeby wylosowac liczbe z zakresu 0-4\n";
cout<<"\nWpisz '2', zeby wylosowac liczbe z zakresu 0-6\n";
cout<<"\nWpisz '3', zeby wylosowac liczbe z zakresu 0-8\n";
cout<<"\nWpisz '4', zeby wylosowac liczbe z zakresu 0-10\n";
cout<<"\nWpisz '5', zeby wylosowac liczbe z zakresu 0-12\n";
cout<<"\nWpisz '6', zeby wylosowac liczbe z zakresu 0-20\n";
cout<<"\nWpisz '7', zeby wylosowac liczbe z zakresu 0-100\n";
cin>>wybierz;

if (wybierz == 1);
{
maximum = 4;
}
if (wybierz == 2);
{
maximum = 6;
}
if (wybierz == 3);
{
maximum = 8;
}
if (wybierz == 4);
{
maximum = 10;
}
if (wybierz == 5);
{
maximum = 12;
}
if (wybierz == 6);
{
maximum = 20;
}
if (wybierz == 7);
{
maximum = 100;
}



    srand( (unsigned)time( NULL ) );
    liczba_koncowa = rand() % maximum;
    cout<<"Wylosowana liczba: "<<liczba_koncowa;

   getch();

   return 0;
}

Odnośnik do komentarza
Udostępnij na innych stronach

@LionX

 

Słusznie, mój błąd. Ale niestety tak to jest jak się czyta only 1. post. ;/

Założę się, że nawet tego pliku nie pobrałeś. Przerobiłem toto na ify, ale jest to samo, co przy switchach. ;/

 

@topic:

 

Myślę, że chodzi o to:

 

 srand( (unsigned)time( NULL ) );
liczba_koncowa = rand() % maximum;
cout<<"Wylosowana liczba: "<<liczba_koncowa;

 

A dokładniej o znak "%". Dlatego przy większych liczbach zauważa się, że to (obliczając) dodaje kilkanaście.

 

Oczywiście mogę się mylić.

Odnośnik do komentarza
Udostępnij na innych stronach

#include <iostream>
#include <conio.h>


using namespace std;

int main()
{
    int maximum, LiczbaKoncowa, wybierz;
    
    cout<<"Wpisz z jakiego zakresu liczb ma losowac program\n";
    cout<<"\nWpisz '1', zeby wylosowac liczbe z zakresu 0-4\n";
    cout<<"\nWpisz '2', zeby wylosowac liczbe z zakresu 0-6\n";
    cout<<"\nWpisz '3', zeby wylosowac liczbe z zakresu 0-8\n";
    cout<<"\nWpisz '4', zeby wylosowac liczbe z zakresu 0-10\n";
    cout<<"\nWpisz '5', zeby wylosowac liczbe z zakresu 0-12\n";
    cout<<"\nWpisz '6', zeby wylosowac liczbe z zakresu 0-20\n";
    cout<<"\nWpisz '7', zeby wylosowac liczbe z zakresu 0-100\n";
    
    cin>>wybierz;
    
    switch(wybierz)
    {
                   case 1: maximum = 4; break;
                   case 2: maximum = 6; break;
                   case 3: maximum = 8; break;
                   case 4: maximum = 10; break;
                   case 5: maximum = 12; break;
                   case 6: maximum = 20; break;
                   case 7: maximum = 100; break;
    }
    
    srand(time(NULL));
    LiczbaKoncowa = rand() % maximum + 1;
    cout << "Wylosowana liczba: " << LiczbaKoncowa;
    getch();
    return 0;
}

 

Cała filozofia. Losować losuje. O to Ci chodziło ? Niewiem tylko po co zmienną wybierz zadeklarowałeś jako string skoro wpisujesz liczby.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...