Warsztat.GD

Programowanie => Szkółka => Wątek zaczęty przez: _user w Marzec 17, 2015, 19:14:23

Tytuł: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: _user w Marzec 17, 2015, 19:14:23
Chce  zeby do programu wprowadzalo sie 10 liczb a potem zeby ten program losowo wybieral 8 z nich i wypisywal bez powtorzen.
na razie moj kod wyglada tak
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int podaj(int tab[])
{
  int licznik = 0;
  do
  {
    std::cin >> tab[licznik];
    licznik++;
  } while( licznik < 10 );
 
  return 0;
}
void losuj(int tab[])
{
  int i =(rand() % 8 ) + 0;
  int  licznik = 0;
  cout << "8 wylosowanych liczb z 10 to: ";
  do
    {
      cout << tab[i] << endl;
      licznik++;
    }while(licznik < 8);
}
 
int main()
{
  srand(time(0));
  int tablica[10];
  podaj(tablica);
  losuj(tablica);
  return 0;
}

No ale nie wypisuje ich cos zbytnio losowo - a nie wiem czemu, no i nie ma zabezpieczenia przez powtorzeniami... Wiem ze bylo pare tematow o tym ale ja chce zrobic to bez uzycia petli for.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Kyroaku w Marzec 17, 2015, 19:29:01
Cytuj
No ale nie wypisuje ich cos zbytnio losowo
Nie wypisuje ich w ogóle losowo... A przynajmniej nie powinno.
void losuj(int tab[])
{
  int i =(rand() % 8 ) + 0;
  int  licznik = 0;
  cout << "8 wylosowanych liczb z 10 to: ";
  do
    {
      cout << tab[i] << endl;
      licznik++;
    }while(licznik < 8);
}
1. Losujesz liczbę tylko raz, wiec "i" się nie zmienia - wypisujesz 8x zawartość tablicy o stałym indeksie.
2. Chcesz wylosować 8 z 10. Poprawnie utworzyłeś pętlę, ale losujesz liczbę modulo z 8, a więc nigdy nie wylosujesz 8 oraz 9. Powinieneś losować liczbę modulo z 10 (tyle masz elementów w tablicy)
3. Jeśli chcesz bez powtórzeń, to musisz po prostu zapamiętać każdy wylosowany indeks i sprawdzić, czy nowo wylosowany się nie powtórzył.

BTW. W kursie, z którego się uczysz jest temat na ten temat...
http://cpp0x.pl/kursy/Kurs-C++/Poziom-2/Losowanie-bez-powtorzen/293
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: MatlertheGreat w Marzec 17, 2015, 19:38:31
int i =(rand() % 8 ) + 0;
  do
    {
      cout << tab[i] << endl;
      licznik++;
    }while(licznik < 8);
Dla czego oczekujesz, że coś takiego będzie działać?

Poświęć trochę własnej pracy i czasu, żeby rozwiązać problem. Nie przychodź z każdym problemem na forum, a dużo więcej się nauczysz szukając rozwiązania samemu ;).
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 17, 2015, 20:50:08
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

bool sprawdz(int iL, int tab[], int ile)
{
  if(ile <= 0);
    return false;

  int i = 0;
    do
      {
if(tab[i] == iL)
  return true;
i++;
      }while(i < ile);
  return false;
}
int podaj(int tab[])
{
  int licznik = 0;
    do
      {
std::cin >> tab[licznik];
licznik++;
      } while( licznik < 10 );

    return 0;
}
int losuj(int tab[])
{
  int  licznik = 0;
  cout << "8 wylosowanych liczb z 10 to: ";
    do
      {
int i =(rand() % 8 ) + 0;
cout << tab[i] << endl;
licznik++;
      }while(licznik < 8);
    return 0;
}

int main()
{
  srand(time(0));
  int tablica[10];
  int wylosowane = 0;
  podaj(tablica);
  losuj(tablica);
  do
    {
      int Liczba = losuj(tablica);
      if(sprawdz(Liczba, tablica, wylosowane) == false)
{
  tablica[wylosowane] = Liczba;
    wylosowane++;
}
    }while(wylosowane < 8);

    wylosowane = 0;
  do
    {
      cout << tablica[wylosowane] << endl;
      wylosowane++;
    }while(wylosowane < 5);
  return 0;
}
cos dziko liczy
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Krzysiek K. w Marzec 17, 2015, 20:54:05
Cytuj
Chce  zeby do programu wprowadzalo sie 10 liczb a potem zeby ten program losowo wybieral 8 z nich i wypisywal bez powtorzen.
W tym przypadku polecam std::shuffle.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 17, 2015, 20:55:03
Wiem o nim ale narazie chce wykonac to ze zdobyta dotad wiedza tylko, wyzej zamiescilem kod, bede wdzieczny za wskazowki czemu tak wariacko mi liczy
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Xirdus w Marzec 17, 2015, 21:21:17
Wiem o nim ale narazie chce wykonac to ze zdobyta dotad wiedza tylko, wyzej zamiescilem kod, bede wdzieczny za wskazowki czemu tak wariacko mi liczy
Czytając niniejszy post, właśnie zdobywasz wiedzę na temat tego, że nie ma sensu wymyślać od nowa czegoś co zostało już zrobione i dostępne jest w bibliotece standardowej :)

BTW poprawiłeś pierwszy punkt Kyroaku, a drugiego i trzeciego nie. No i rozwala mnie to "+ 0" :P
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 17, 2015, 21:22:14
nie rozumiem...
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Krzysiek K. w Marzec 17, 2015, 22:42:49
Cytuj
bede wdzieczny za wskazowki czemu tak wariacko mi liczy
Wariacki kod, to i wariacko liczy. Widać, że autor kodu chciał coś zrobić, nie miał pojęcia jak, ale coś mu tam gdzieś świtało i popisał sobie trochę kodu.

Pełno takich kwiatków na przykład jak:
int Liczba = losuj(tablica);gdzie losuj() zwraca zawsze zero. Definitywnie autor sam nie wie co robi.

Jeżeli chcesz coś zrobić, to przeanalizuj jak to ma działać, rozrysuj sobie na kartce parę przykładów i zrób je ręcznie, a dopiero koduj wtedy, jak wiesz już dokładnie jak to ma krok po kroku działać.


Dla przykładu rozpiszę omawiany problem, bom w dobrym humorze. :)
Załóżmy że mamy już wypełnioną tą tablicę "tablica" danymi liczbami.
Algorytm losowania będzie wyglądał tak:
- wybierz przypadkową komórkę tablicy,
- zapamiętaj liczbę jaka tam jest,
- usuń tą liczbę z tablicy,
- zwróć zapamiętaną liczbę

Co na C++ może wyglądać tak:
int tablica[10];
int rozmiar_tablicy = 10;
// tutaj gdzieś tablica się wypełnia

for(int i=0;i<8;i++)  // losujemy 8 liczb
{
  int numer_komorki = rand() % rozmiar_tablicy;   // - wybierz przypadkową komórkę tablicy
  int liczba = tablica[numer_komorki];    // - zapamiętaj liczbę jaka tam jest,

  // - usuń tą liczbę z tablicy,
  tablica[numer_komorki] = tablica[rozmiar_tablicy-1];      // przesuń ostatni element tablicy w miejsce usuwanej komórki
  rozmiar_tablicy--;    // skróć tablice o 1 (czyli usuń ostatni element)

  // - zwróć zapamiętaną liczbę
  printf( "%d\n", liczba );
}
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 00:39:27
A mozna wersje bez petli for ?
Ahhh ;/
Tam duzo wyjsc ktorych ja nie chce uzyc, ja chce to rozwiazac pewnymi sposobami, bo jak zrobie tak jak napisales to pomine pewien material i go nie przyswoje ;/ a ja chce sie nauczyc a nie byleby tylko ten program napisac.

Jak chce sposobem cos mniej wiecej w ten desen -> http://ideone.com/KRTMTT
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Oti w Marzec 18, 2015, 12:37:06
Chodzi o to, że chcesz pętlę do-while zamiast for? To strasznie bzdurny powód do narzekania. No ale-poczytaj trochę jak działa pętla for i jak działa pętla do-while, to może zauważysz, że to pętla do-while w tym wypadku powinna być zastąpiona pętlą for. Bo jest oparta na iteratorze, a do takich zastosowań dedykowana jest pętla for(ma uproszczoną składnię do tego).
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 12:41:38
Tak wiem juz, bardzo podobnie :) - A nie, niestety nie wiem jak ta petle for zamienic na do - while :/
for(int i=0;i<8;i++)
gdzie tutaj cos losuje ? gdzie rand(), o co chodzi.
No ale wolalbym jednak cos bardziej podobnego do -> http://ideone.com/z8nQBQ
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Krzysiek K. w Marzec 18, 2015, 13:51:21
Cytuj
A mozna wersje bez petli for ?
Jak masz zrobić coś 8 razy i nie chcesz pętli for - najprawdopodobniej robisz to źle.

Cytuj
No ale wolalbym jednak cos bardziej podobnego do -> http://ideone.com/z8nQBQ
No dobra, ale ten podlinkowany kod przecież jest OK. W czym problem?
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:04:54
No w tym ze ja swoj problem chce rozwiazac podobnym sposobem jak ten ktory widac w podlinkowanym kodzie.

Wydaje mi sie ze juz jestem prawie blisko, kod dziala troche nie tak jak powinien... nie sprawdza powtorzen a nie mam pojecia dlaczego, spojrzcie na niego, wydaje mi sie ze niewiele tu jest do poprawki
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
bool sprawdz(int tab[], int ile, int los)
{
  int i = 0;
  do
    {
      if(tab[i] == tab[los])
    return true;
 
      i++;
    }while(i < ile);
 
  return false;
}
int losuj()
{
  return(rand() % 3);
}
 
int main()
{
  srand(time(0));
  int tablica[3];
  int wylosowanych = 0;
 
  cout << "Podaj 3 liczby: ";
  int i = 0;
  do
    {
      cin >> tablica[i];
      i++;
    }while(i < 3);
 
  cout << "Losowe 2 liczby z podanych 3 to: " << endl;
    do
      {
    int liczba = losuj();
    if(sprawdz(tablica, wylosowanych, liczba) == false)
    {
      cout << tablica[liczba] << endl;
      wylosowanych++;
    }
      }while(wylosowanych < 2);
    return 0;
}
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: bies w Marzec 18, 2015, 14:15:35
Pętla:
for (int i = 0; i < max; ++i) {

    // kod wewnątrz pętli

}

To to samo co pętla:
{
    int i = 0
    do {
        if (!(i < max))
            break;

        // kod wewnątrz pętli

        ++i;
    } while (true);
}

I to samo co pętla:
{
    int i = 0
    while (i  < max) {

        // kod wewnątrz pętli

        ++i;
    }
}

Zwracam uwagę że wyrażenie (!(i < max)) jest równoważne (i >= max).

Jeśli znasz jedną z tych pętli to powinieneś zrozumieć jak działają wszystkie. Jak widzisz pętla for w przypadku iteracji n-razy jest znacznie czytelniejsza dlatego KrzysieK czy Oti piszą abyś ją poznał.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:17:37
Nie wiem czy ta odpowiedź już była, ale zrób sobie losową permutację tablicy, a później wybieraj kolejne jej elementy. Jeżeli potrzebujesz potrzebny stan tablicy (kolejność elementów) to zrób sobie kopię.

W skrócie: zamiast losować indeksy tablicy, przemieszaj losowo jej zawartość i czytaj kolejno. To najlepsze rozwiązanie chyba.

Pomogło? :P

Możesz też usuwać z tablicy wybrane wcześniej elementy i losować z pomijaniem pustych pól.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:20:08
Jak pomoglo.... Wiem ze moge losowo wypisac sobie 2 elementy tablicy, ale jak mam sprawdzic czy sie nie powtorzyly i w razie powtorki zeby wypisalo jeden element ??
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:30:34
Jak wylosujesz sobie element z tablicy i go usuniesz z niej, to drugi raz go nie wylosujesz. To samo tyczy się pierwszego rozwiązania. :P

A jeżeli do tablicy mogą wejść 2 takie same elementy i chcesz zapewnić by na wyjściu były tylko różne, to na wejściu pousuwaj duplikaty.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: Oti w Marzec 18, 2015, 14:30:43
Dobra, chyba już wiem o co tu się rozchodzi. To jakieś zadanie domowe-podlinkowany kod wzorcowy to pewnie dzieło jakiegoś kolegi. _user chce zrobić to tak, żeby też działało, ale żeby wyglądało inaczej niż u dobrodusznego kumpla. I ma być bez pętli for pewnie dlatego, że na zajęciach jeszcze jej nie przerobili i OP nie chce się wyróżniać.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:31:00
@Oti , nie to dzialanie z kursu, chce opanowac material tam podany, a w lekcji gdzie jest to zadanie inny problem jest tak rozwiazany i chce tez tak.

@Bayers, Nie chce usuwac elementu z tablicy bo tego w kursie jeszcze nie bylo, a zadanie moge rozwiazac tylko materialem do tej pory podanym, takze prosze o inna propozycje
Nie wiem jakie duplikaty ! Poprosze o jakies przyklady.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:35:40
@Bayers, a jak go usunac z tablicy ?

ByerN nie bayers. Wstaw tam coś co nie należy do zbioru danych wejściowych (dla liczb dodatnich może to być np. -1), albo przepisuj elementy w lewo (od kolejnego po usuniętym) i zapamiętaj rozmiar tablicy. W ten sposób nie allokujesz pamięci (zżera czas), a pamiętając rozmiar wiesz gdzie kończy się tablica.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:36:35
Nie wiem jakie duplikaty ! Poprosze o jakies przyklady.

xD ? no jak dostaniesz tablicę [2,3,2,1] to masz zduplikowane 2.

W programowaniu trzeba też myśleć. To o czym mówie, technicznie nie wykracza po za poznany przez Ciebie materiał.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:36:51
W skrócie: zamiast losować indeksy tablicy, przemieszaj losowo jej zawartość i czytaj kolejno. To najlepsze rozwiązanie chyba.

To bylo ciekawe, podaj tego przyklad( i spojrz na ten link z poprzedniej strony, ja chce tak)
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:39:40
Podaj tego przyklad, i spojrz na link
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:39:55
Wylosuj 2 indeksy, a później przepisz.

int buffer = tab[randomId1];
tab[randomId1] = tab[randomId2];
tab[randomId2] = buffer;

randomId1 i randomId2 to 2 losowe indeksy tablicy.

przemieszaj tak kilka razy, a później pętla for i czytasz kolejno tablice.

Link widziałem. Zamiast for użyj while skoro chcesz. xD miłej zabawy.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:40:50
A gdzie tu sprawdzenie czy sie nie powtarzaja ?


ohh jak milo ze zyczysz milej zabawy :) Wczoraj swietnie sie kilkanascie godzin bawilem, dzis z checia tez zmarnuje kolejny dzien, i pojutrze tez na ten kod :) Bo dalej nie wiem jak to zrobic i sie pewnie nigdy nie dowiem albo najlepiej zostawie ten kurs bo to zadanie niszczy mi psychike
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:43:23
"Chce  zeby do programu wprowadzalo sie 10 liczb a potem zeby ten program losowo wybieral 8 z nich i wypisywal bez powtorzen."

Elementy tablicy mają się nie powtarzać, a nie liczby. Jak wyciągniesz kolejno elementy z tablicy to się nie powtórzą. xD
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:44:03
Chce zeby liczby sie nie powtarzaly !
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:45:35
Do tablicy wejściowej mogą wejść duplikaty?
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:47:21
Tak, i zeby nie wypisywalo pare razy jak uzytkownik poda pare razy ta sama liczbe
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:49:57
No to tak jak mówię, na początku pousuwaj duplikaty, a później zrób to co wspomniałem.

Wygoogluj sobie: "c array remove duplicates"

http://stackoverflow.com/questions/1532819/algorithm-efficient-way-to-remove-duplicate-integers-from-an-array
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:52:07
Nie uzyje zadnego array remove, Wspominalem jakies 901237819247129841234 razy
http://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQ
http://ideone.com/z8nQBQ
http://ideone.com/z8nQBQ
http://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQhttp://ideone.com/z8nQBQ
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:53:36
Wezmę przykład z kolegów z forum i zakończę dyskusję z trollem. :P
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 14:55:30
Nie jestem trollem, i dobrze ze konczysz bo predzej ty nim jestes skoro piszesz nie znajac tematu.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 14:57:38
Programowanie zdecydowanie nie jest dla Ciebie. xD
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 15:04:39
Dla ciebie jeszcze bardziej :) i to ZDECYDOWANIE ! xd
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: dzemeuksis w Marzec 18, 2015, 15:07:59
W kwestii uniknięcia duplikatów.

Wariant 1
Po prostu zbieraj wylosowane liczby do jakiegoś wektora, ale przedtem sprawdzaj, czy dany element się w nim już przypadkiem nie znajduje. Jeśli się znajduje, to nic nie rób i losuj następny. Jeśli się nie znajduje, to dodaj do wektora i wypisz wynik. Tyle.

Wariant 2
A jeśli użyjesz kontenera, który nie przyjmuje duplikatów (np. set), to nawet jeszcze prościej, bo wrzucasz do niego wszystkie wylosowane liczby jak leci, a na koniec wypluwasz wszystkie elementy zbioru. Kwestię duplikatów w tym przypadku załatwia za ciebie język programowania.

I przestań pajacować, bo tylko się błaźnisz.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 15:09:48
W kwestii uniknięcia duplikatów.

Wariant 1
Po prostu zbieraj wylosowane liczby do jakiegoś wektora, ale przedtem sprawdzaj, czy dany element się w nim już przypadkiem nie znajduje. Jeśli się znajduje, to nic nie rób i losuj następny. Jeśli się nie znajduje, to dodaj do wektora i wypisz wynik. Tyle.

Wariant 2
A jeśli użyjesz kontenera, który nie przyjmuje duplikatów (np. set), to nawet jeszcze prościej, bo wrzucasz do niego wszystkie wylosowane liczby jak leci, a na koniec wypluwasz wszystkie elementy zbioru. Kwestię duplikatów w tym przypadku załatwia za ciebie język programowania.

I przestań pajacować, bo tylko się błaźnisz.

Serdecznie dzieki za NIECZYTANIE niczego co napisalem :) Ty sie blaznisz kolego, najpierw sie czyta potem pisze pajacu
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: dzemeuksis w Marzec 18, 2015, 15:26:00
Dostałeś już kilka, jeśli nie kilkanaście rozwiązań swojego problemu, których najwyraźniej nie jesteś w stanie pojąć. Zanim więc zarzucisz innym nie znajomość tematu, czy też nie czytanie, spróbuj po prostu zrozumieć to, co się do ciebie pisze. Wiem, to trudne, łatwiej opluć. Ale warto, polecam.
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 15:53:50
Dobra nie produkuj sie ty xd
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: ByerN w Marzec 18, 2015, 15:54:29
Miałem napisać by nie karmić trolla. I zgłodniałem. xD Ktoś ma jakiś fajny przepis na zapiekankę z makaronem i tuńczykiem?
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: _user w Marzec 18, 2015, 16:09:50
Dobra temat do zamkniecia, mam rozwiazanie:
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
 
bool wylosowanoWczesniej(int wylosowane[], int ileWylosowanych, int nowoWylosowana)
{
    int i = 0;
    do {
        if (wylosowane[i] == nowoWylosowana)
            return true;
 
        ++i;
    } while (i < ileWylosowanych);
 
    return false;
}
 
int losuj()
{
    return (rand() % 3);
}
 
int main()
{
    srand(time(0));
    int zrodlowe[3];
    int wylosowane[3];
 
    cout << "Podaj 3 liczby: ";
    int i = 0;
    do {
        cin >> zrodlowe[i];
        ++i;
    } while (i < 3);
 
    cout << "Losowe 2 liczby z podanych 3 to: " << endl;
    int wylosowanych = 0;
    do {
        int wylosowanyIndeks = losuj();
        int nowaLiczba = zrodlowe[wylosowanyIndeks];
 
        if (!wylosowanoWczesniej(wylosowane, wylosowanych, nowaLiczba)) {
            cout << nowaLiczba << endl;
            wylosowane[wylosowanych] = nowaLiczba;
            ++wylosowanych;
        }
    } while (wylosowanych < 2);
 
    return 0;
}
Tytuł: Odp: Losowanie z tablicy bez powtorzen
Wiadomość wysłana przez: zx81 (taxi_driver) w Marzec 18, 2015, 16:41:11
@Bayers
prosze tu nie przekrecac nicku Naszego warsztatowego wujka!
Tytuł: Odp: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: BrunonDEV w Marzec 18, 2015, 18:29:53
Heh, @_user, odpowiadałem na Twój temat dzisiaj na forum cpp0x.pl. :D

EDIT:
http://cpp0x.pl/forum/temat/?id=19110 (http://cpp0x.pl/forum/temat/?id=19110)

Heh :D

-BD.
Tytuł: Odp: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: Kyroaku w Marzec 18, 2015, 19:03:36
JEBNOŁEM !
Podaliśmy mu xxx rożnych rozwiązań zadania, cały czas smęcił, że coś mu nie działa, że On chce inaczej, że coś tam... A na koniec zerżnął kod z kursu (z którego się zresztą uczy i do którego zresztą sam go wysłałem na pierwszej stronie w pierwszym poście tego tematu) i twierdzi, że "MA ROZWIĄZANIE".
Jestem poirytowany -.-
Tytuł: Odp: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: BrunonDEV w Marzec 18, 2015, 19:38:40
To chyba gorzej niż ja gdy zaczynałem z programowaniem. :D

Na forum cpp0x jest dużo więcej tego typu tematów (tylko że tam jest na nie specjalny dział :D). ;)

-BD.
Tytuł: Odp: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: Karol w Marzec 18, 2015, 19:38:50
Ja się dziwie, że za swoje pyskówki (i ten temat w którym bluzgał na ludzi na forum, a potem przeedytował z prośbą o skasowanie) nie dostał jeszcze bana tak jak na forum 4p :U.
Tytuł: Odp: Losowanie z tablicy bez powtorzen[SOLVED]
Wiadomość wysłana przez: _user w Marzec 19, 2015, 00:24:40
No pewnie... mi to nikt nie ublizal....
Dobra po co sie jeszcze spinacie, temat zamkniety, co tu komentowac.