Autor Wątek: Losowanie z tablicy bez powtorzen[SOLVED]  (Przeczytany 5226 razy)

Offline ByerN

  • Użytkownik

# 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

Offline Mr. Spam

  • Miłośnik przetworów mięsnych


Offline ByerN

  • Użytkownik

  • +1
# Marzec 18, 2015, 14:53:36
Wezmę przykład z kolegów z forum i zakończę dyskusję z trollem. :P

Offline _user

  • Użytkownik

# Marzec 18, 2015, 14:55:30
Nie jestem trollem, i dobrze ze konczysz bo predzej ty nim jestes skoro piszesz nie znajac tematu.

Offline ByerN

  • Użytkownik

  • +1
# Marzec 18, 2015, 14:57:38
Programowanie zdecydowanie nie jest dla Ciebie. xD

Offline _user

  • Użytkownik

# Marzec 18, 2015, 15:04:39
Dla ciebie jeszcze bardziej :) i to ZDECYDOWANIE ! xd

Offline dzemeuksis

  • Użytkownik
    • Blog quodmeturbat

  • +1
# 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.

Offline _user

  • Użytkownik

# 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

Offline dzemeuksis

  • Użytkownik
    • Blog quodmeturbat

  • +1
# 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.

Offline _user

  • Użytkownik

# Marzec 18, 2015, 15:53:50
Dobra nie produkuj sie ty xd

Offline ByerN

  • Użytkownik

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

Offline _user

  • Użytkownik

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

Offline zx81 (taxi_dr...

  • Użytkownik
    • Something Beautiful team

  • +2
# Marzec 18, 2015, 16:41:11
@Bayers
prosze tu nie przekrecac nicku Naszego warsztatowego wujka!

Offline BrunonDEV

  • Użytkownik
    • Construgia -- RPG

# 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

Heh :D

-BD.
« Ostatnia zmiana: Marzec 18, 2015, 18:39:19 wysłana przez BrunonDEV »

Offline Kyroaku

  • Użytkownik

  • +1
# 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 -.-
« Ostatnia zmiana: Marzec 18, 2015, 19:05:25 wysłana przez Kyroaku »