Generátor náhodných čísel s kontrolou – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Generátor náhodných čísel s kontrolou – C / C++ – Fórum – Programujte.comGenerátor náhodných čísel s kontrolou – C / C++ – Fórum – Programujte.com

 

H3k70r0
Duch
12. 11. 2016   #1
-
0
-

Zdravím,

potřeboval bych vytvořit generátor náhodných čísel, např od 1-10. A poté bych chtěl, aby generoval čísla tak dlouho, dokud nepadnou všechny čísla v dané řadě čísel. Pokud vygeneruje například číslo 3, tak by číslo 3 vypsal a jel dál, pokud by znovu padla 3, tak už by ji nevypisoval a jel dál. A zároveň by teda počítal, kolik musel vygenerovat čísel, dokud nemá celou danou řadu čísel. Takže výsledek by měla být vypsána řada čísel(nemusí být seřazená), které jsou v dané řadě a celkový počet generovaných čísel než toho dosáhl.

Nejedná se o žádný úkol do školy apod. jsem jen samouk začátečník v C++ a tohle mě napadlo jako můj příklad pro cvičení. Byl bych moc rád aspoň za radu, jak to provést. Skončil jsem u vytvoření toho generátoru čísel a dál nevím, jak to zrealizovat. :-)

Děkuji.

Nahlásit jako SPAM
IP: 88.81.67.–
BDS+3
Věrný člen
12. 11. 2016   #2
-
0
-

#1 H3k70r

1.
Tedy, generovat čísla ty házet do pole, tak dlouho dokud nebude plné a zároveň procházet pole pro kontrolu duplicitních čísel. (Pro počet doplněných čísel bude třeba mít pomocnou proměnnou, která bude sloužit jako pozice na kterou se má zapisovat, a nebo použít pro výstup std::vector) 

2.

Pokud velikost pole má být totožná s rozsahem hodnot, stačí vygenerovat třeba vector jako zásobník hodnot (v tomto případě s čísly 1-10) náhodně vybírat index hodnoty s tohoto vectoru a přiřazovat hodnotu pod indexem do pole a tuto pak odstranit ze zásobníku. Smyčka by trvala tak dlouho, dokud nebude zásobník prázdný (v tomto případě 10x).

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
H3k70r0
Duch
12. 11. 2016   #3
-
0
-

no s polem nějaké základní věci dokážu, ale asi nevím, co znamená to s tím vectorem a nevím, jak udělat kontrolu duplicit v poli

Nahlásit jako SPAM
IP: 88.81.67.–
BDS+3
Věrný člen
12. 11. 2016   #4
-
+1
-
Zajímavé

#3 H3k70r 

Jedna z těch "základních věcí" je procházení pole:

bool KontrolaExistenceCisla(int cislo, int rozmer_pole, int pole[])
{
 for(int i=0; i<rozmer_pole; i++)if(pole[i]==cislo)return true;
 return false;
}

trochu se snaž ;)

Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
BDS+3
Věrný člen
12. 11. 2016   #5
-
0
-

2. verze s vectorem: 

#include <stdio.h>
#include <vector>
#include <time.h>
#include <stdlib.h>
//---------------------------------------------------------------------------
const int MAX_VALUE = 10;
//---------------------------------------------------------------------------
int main()
{
 std::vector<int>tmp;   //zásobník
 for(int i=1; i<=MAX_VALUE; i++)tmp.push_back(i); //naplnění zásobníku čísly 1- MAX_VALUE

 std::vector<int>out;    //výstup
 srand (time(NULL));     //inicializace pseudonáhodných čísel
 int r;
 while(!tmp.empty())      //smyčka bude pokračovat, dokud zásobník obsahuje nějaké prvky
 {
	 r = random(tmp.size());    //náhodný výběr indexu
	 out.push_back(tmp[r]);      //přihození čísla pod indexem do výstupního seznamu
	 tmp.erase(tmp.begin() + r);    //odebrání vybrané položky
 }

 for(unsigned i = 0; i<out.size(); i++)printf("%i\n", out[i]); // výpis

 system("PAUSE");
 return 0;
}
Nahlásit jako SPAM
IP: 185.69.69.–
W11 :)
H3k70r0
Duch
12. 11. 2016   #6
-
0
-

#5 BDS
díky, ale tomu zatím moc nerozumím :-)

Nahlásit jako SPAM
IP: 88.81.67.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 53 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý