• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Losowanie liczb w c++

VPS Starter Arubacloud
0 głosów
636 wizyt
pytanie zadane 29 marca 2020 w C i C++ przez KimVivvi Nowicjusz (120 p.)

"Spytaj użytkownika o przedział liczb do losowania. Ale uwaga użytkownik może podać pierwszą liczbę większą od drugiej. Zastosuj instrukcje warunkowe. Wykorzystaj zamianę wartości zmiennych i zmienną pomocniczą".

Napisałam program, który kompletnie nie działa tak jak powinien i nie wiem gdzie popełniłam błąd.

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>

using namespace std;

int main()
{

	int liczba1, liczba2, liczba3, losowanie;

	cout<<"Podaj liczbe: ";
	cin>>liczba1;
	
	cout<<"Podaj liczbe: ";
	cin>>liczba2;
	
	srand(time(NULL));
	 
	 if(liczba1>liczba2)
	 {
	 losowanie=liczba1+rand()%(liczba2-liczba1+1);
	 cout<<"Wylosowano liczbe : "<<losowanie;
	}
	
	else if(liczba2>liczba1)
	{
		liczba1=liczba2;
		liczba2=liczba3;
		losowanie=liczba2+rand()%(liczba3-liczba2+1);
	 	cout<<"Wylosowano liczbe : "<<losowanie;	
	}
	
	else
	{
		cout<<"Liczby sa rowne";
	}
		
system("pause");	
return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 29 marca 2020 przez DragonCoder Nałogowiec (36,500 p.)
int main()
{
    std::cout << "Podaj poczatek: ";
    int min = 0;
        std::cin >> min;
    std::cout << "Podaj koniec. ";
    int max = 0;
        std::cin >> max;
    if (min > max) {
        int temp = max;
        max = min;
        min = temp;
    }
    std::random_device randomGenerator;
    std::mt19937 rng(randomGenerator ());
    std::uniform_int_distribution <std::mt19937::result_type> dist (min, max);

    for (int i = 0; i < 10; i ++) {
        std::cout << dist(randomGenerator) << "\n";
    }

    return 0;
}

Troche bardziej zmodernizowane

komentarz 29 marca 2020 przez adrian17 Ekspert (349,240 p.)
std::uniform_int_distribution <std::mt19937::result_type> dist (min, max);

Przekombinowałeś. AFAIK argumentem szablonu jest typ wyjściowy, który nie ma związku z wyjściem generatora. Możesz tutaj zwykłego inta wstawić.

komentarz 29 marca 2020 przez DragonCoder Nałogowiec (36,500 p.)

Oh okay, pierwszy raz to widzialem tak i jakos tak juz zostalo, ale dzieki za info

std::random_device randomGenerator;
    std::uniform_int_distribution <int> dist (min, max);

 

Podobne pytania

0 głosów
2 odpowiedzi 1,868 wizyt
pytanie zadane 26 maja 2020 w C i C++ przez saju13013 Nowicjusz (230 p.)
0 głosów
1 odpowiedź 662 wizyt
pytanie zadane 18 marca 2020 w C i C++ przez gallaxxyy Początkujący (270 p.)
0 głosów
0 odpowiedzi 345 wizyt

92,961 zapytań

141,924 odpowiedzi

321,160 komentarzy

62,295 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...