Skocz do zawartości

Dziwny proble z "if"


Rekomendowane odpowiedzi

Opublikowano

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

  • Administratorzy
Opublikowano

nie znam sie na c, ale tu powinno być coś a'la switch, ew. może zamiast else if się pisze elseif ?

Opublikowano

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;
}

Opublikowano

@Jabol:

 

Wiem. :]

Właśnie skończyłem, oto plik: Click

 

EDIT:

 

Za co bigshark dostał bana? :P

 

EDIT2:

 

Czemu ten program NIE pokazuje losowych liczb, tylko dodaje do poprzedniej np. 13? :(

Opublikowano

a ja tylko od siebie dodam jako ciekawostkę że nie pisze się

 if (Zmienna1<Zmienna2);// pusta funkcja if bo na końcu jest;
{
Zmienna1=Zmienna2;
}

tylko

 if (Zmienna1<Zmienna2)
{
Zmienna1=Zmienna2;
}

Poprawiłem ten błąd w twoim kodzie i mi wszystko działa

Opublikowano

A ten się dziwi czemu mu nie działa xD LOL..

 

Poprawiłem ten błąd w twoim kodzie i mi wszystko działa

 

chyba błędy bo przy każdym if tak było :lol:

Opublikowano

@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ć.

Opublikowano

#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.

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ę...