| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 09.03.07 Prihlásený: 28.07.09 Príspevky: 39 Témy: 7 Bydlisko: Trnava | Napísal stewe: 23.08.2007 12:25 | |
|
zdravim
ako by ste naprogramovali nasedovne, je jedno v akom jazyku, mne ide o ten princip samotny, ako by ste postupovali.
mam desat cisel. od 1 po 10. vyberiem si jedno z nich. napr. 6. cize mam cisla 1,2,3,4,5,7,8,9,10. teraz ide na rad pocitac a vybera si tiez cislo, ale uz len z tychto deviatich. teda napr. on si vyberie 4. to, co si on vyberie je nahoda, ale nemoze si vybrat to, co sa uz raz vybralo. teda teraz nemoze vybrat moju 6. ja si nemozem vybrat 6 a 4 .. atd. az zostane jedno cislo. ide o to, ako mu zdelit, ze co sa uz vybralo a co nie a nasledne z toho si nieco vybrat.(nahodne, v c++ existuje nastroj, ktoremu date rozsah od-do a on si vyberie cislo). ono da sa to spravit tak, ze to dam napr. do pola a pole[5] prepisem nulou (bola tam 5) a potom mu povedat,ze ak je hodnota toho, co si vybral 0, tak nech hlada dalej. tak som to aj riesil, ale problem je v tom, ze ked napr. zostanu len dve cisla, napr. 3 a 7, tak mu trva straaaasne dlho, okolo 20 sekund, kym si fakt "nahodne" vyberie trojku alebo sedmicku. cim menej ma na vyber, tym viac mu to trva.... cize bolo by treba spravit nove pole s tym, ze ono by malo kazdy krat menej prvkov (alebo aj 10, to je fuk) a prvky tohto pola by obsahovali uz len cisla, ktore neboli. a potom si lahko vyberie z deviatich, ked je jedno, ktore to bude... moze si vybrat ktorekolvek a kazde bude korektne.... uff. to je teda prispevok )
dik.
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 23.08.2007 12:53 | |
|
jedine cez podmienku alebo ak by si strasne chcel tak cez dynamicku alokaciu pamati ..
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 09.03.07 Prihlásený: 28.07.09 Príspevky: 39 Témy: 7 Bydlisko: Trnava | Napísal autor témy stewe: 23.08.2007 13:01 | |
|
na to este nemam skill
|
|
Registrovaný: 16.05.07 Prihlásený: 01.08.17 Príspevky: 837 Témy: 6 | Napísal juho: 23.08.2007 13:06 | |
|
no tak si ho urob .(?kolko levelov ti este chyba?)(max 70lVl).
_________________ getch();?{readkey;?} na konci? !A naco! Riesenie je (Alt+F5)
99% pochopí a shaggy je druhá kategória |
|
Registrovaný: 28.04.07 Prihlásený: 03.11.09 Príspevky: 133 Témy: 1 | Napísal imcold: 23.08.2007 21:01 | |
|
Povedzme, že máš N čísel, z ktorých si môže program vyberať. Náhodný výber prebehne N-1 krát. Po prvom vybratí náhodného prvku ho nahradíme posledným prvkom z poľa a budeme vyberať už len z N-1 čísel, po druhom vybratí prvok nahradíme predposledným prvkom a vyberáme už len z N-2 atď. Príklad (FPC):
Kód: const N = 9; var pole: array[0..N] of byte; i, c: byte; begin Randomize; for c := 0 to N do begin pole[c] := c; write(pole[c], ' '); end; writeln; for c := 0 to N - 1 do begin i := Random(N+1-c); write(pole[i], ' '); pole[i] := pole[N-c]; end; write(pole[0]); end.
edit: oops..
|
|
Registrovaný: 09.03.07 Prihlásený: 28.07.09 Príspevky: 39 Témy: 7 Bydlisko: Trnava | Napísal autor témy stewe: 23.08.2007 21:55 | |
|
JASNEEEEEEEE Po prvom vybratí náhodného prvku ho nahradíme posledným prvkom z poľa a budeme vyberať už len z N-1 čísel, po druhom vybratí prvok nahradíme predposledným prvkom a vyberáme už len z N-2 atď. JASNEEEE ))) DIKY
|
|
Registrovaný: 09.03.07 Prihlásený: 28.07.09 Príspevky: 39 Témy: 7 Bydlisko: Trnava | Napísal autor témy stewe: 24.08.2007 13:47 | |
|
Kód: #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h>
int main() { int pole[11]={0,1,2,3,4,5,6,7,8,9,10}; int vyber;
srand( time(NULL) ); clrscr(); for (int i = 9; i > 0; --i) { if(i%2==1) { scanf("%i", &vyber); for (int k = 0; k < i; ++k) { if (pole[k]==vyber) { pole[k]=pole[i]; } } for (int j = 0; j < i; ++j) { printf("%i ",pole[j]); } printf("\n"); } else { vyber = rand() % (i-1) + 1; for (int k = 0; k < i; ++k) { if (pole[k]==vyber) { pole[k]=pole[i]; } } for (int j = 0; j < i; ++j) { printf("%i ",pole[j]); } printf("\n"); } }
printf("konec"); getch(); return 0; }
a je to
|
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|