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

Liczba ma sie nie powtarzac (losowanie bez powtorzen)

0 głosów
443 wizyt
pytanie zadane 11 września 2015 w C i C++ przez balti Obywatel (1,040 p.)
edycja 12 września 2015 przez balti
#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
using namespace std;
void wylosowanie(int *tab,int rozmiar)
{
    for(int i = 0 ; i <= rozmiar ; i++)
    {
        tab[i]=rand()%49+1;

    }
   
}
void wyrzucenie(int *tab,int rozmiar)
{
    for(int i = 0 ; i <= rozmiar ; i++)
    {
        cout << tab[i] << "\t";
    }
}
void czy_zostala_wyl(int* tab ,int rozmiar)
{

    for(int j = 0 ; j <= rozmiar ; j++)
    {
        int pomoc = tab[j];
         for(int i = 1 ; i < rozmiar ;)
        {
            if(pomoc==tab[i])
            {
                tab[i]=rand()%49+1;
            }
            else
            {

                 i++;
            }
        }

    }

}
int main()
{
    cout << "Losowanie 6 liczb bez powtorzen" << endl;
    srand(time(NULL));
    int n = 5;
    int* tab = new int [n];
    wylosowanie(tab,n);
    czy_zostala_wyl(tab,n);
    wyrzucenie(tab,n);

    return 0;
}

Losowanie bez powtorzen miało byc . Niestety i tak powtarza dana liczbe . http://screenshot.sh/m190hQQcMoTFI

Nie wiem gdzie mam błąd . (Mialem juz podobny temat zrobiony ale z innym kodem)

3 odpowiedzi

+4 głosów
odpowiedź 11 września 2015 przez event15 Szeryf (93,790 p.)
Idź kursorem myszki na sam dół strony. Masz 3 identyczne posty, wszystkie z rozwiązaniem leniu.
+1 głos
odpowiedź 11 września 2015 przez WWOTEX Mądrala (6,200 p.)
Dodaj globalną zmienną TEMP, czyli okresową i za każdym razem gdy wylosujesz liczbę to od razu sprawdź czy nie jest ona równa zmiennej TEMP. Jeśli jest to losuj od nowa a jeśli nie to zapisz tą nową liczbę w zmiennej TEMP i kontynnuj program. Na tej zasadzie się to robi. Oczywiście żebyśmy się nie zrozumieli , ta zmienna nie musi się nazywać temp tylko to taka nazwa obrazująca.
komentarz 12 września 2015 przez balti Obywatel (1,040 p.)

Probowalem  zrobic jak napisales ale nadal mi zwraca powtorzone liczby. Poprostu zamiast zmiennej pomoc zrobilem globalna i porownywalem.

#include <iostream>
#include <cstdlib>
#include <time.h>
#include <windows.h>
using namespace std;
int global;
void wylosowanie(int* tab, int rozmiar)
{
    for (int i = 0; i <= rozmiar; i++) {
        tab[i] = rand() % 49 + 1;
    }
}
void wyrzucenie(int* tab, int rozmiar)
{
    for (int i = 0; i <= rozmiar; i++) {
        cout << tab[i] << "\t";
    }
}
void czy_zostala_wyl(int* tab, int rozmiar)
{

    for (int j = 0; j <= rozmiar; j++) {
        //int pomoc = tab[j];
        for (int i = 1; i <= rozmiar;) {
            if (global == tab[i]) {
                tab[i] = rand() % 49 + 1;
            }
            else {

                i++;
            }
        }
    }
}
int main()
{
    cout << "Losowanie 6 liczb bez powtorzen" << endl;
    srand(time(NULL));
    int n = 5;
    int* tab = new int[n];
    wylosowanie(tab, n);
    czy_zostala_wyl(tab, n);
    wyrzucenie(tab, n);

    return 0;
}

Chociaz bardziej mi sie podobala wczesniejsza wersja programu. To nie zmienia faktu ze ten kod jak i porzedni nie robi tego co bym chcial :(  Jakies pomysly ? :)

komentarz 12 września 2015 przez WWOTEX Mądrala (6,200 p.)
a ty chcesz wylosować sześć liczb i żadna z nich nie ma być taka sama? bo jeśli tak to podejdź do tego inaczej... zrób sobie np. tablicę o sześciu wartościach albo po prostu sześć zmiennych i wtedy po każdym wylosowaniu sprawdź czy liczba nie jest równa jednej ze zmiennych i jeśli nie to wpisz ją w jedną ze zmiennych... musisz to sobie obmyśleć w głowie... to na prawdę nie jest trudne ;) a w ogóle to już było dużo takich postów. możesz se poczytać tam
+1 głos
odpowiedź 12 września 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Panie, mówi Ci coś regulamin i faq?

https://forum.pasja-informatyki.pl/ask - Zakładając pytanie masz rażący wręcz oczy czerwony napis, nie muszę mówić który. Tam masz odnośnik do tej strony https://forum.pasja-informatyki.pl/faq

I przeczytaj proszę uważnie drugi punkt. Podpunkt pierwszy.

Podobne pytania

0 głosów
2 odpowiedzi 716 wizyt
pytanie zadane 30 listopada 2018 w C i C++ przez Michał_Warmuz Mądrala (5,830 p.)
0 głosów
1 odpowiedź 506 wizyt
pytanie zadane 20 czerwca 2018 w C i C++ przez Nowacx02 Obywatel (1,060 p.)
0 głosów
2 odpowiedzi 1,488 wizyt
pytanie zadane 29 lipca 2017 w C i C++ przez KubaW Nowicjusz (120 p.)

93,742 zapytań

142,678 odpowiedzi

323,297 komentarzy

63,326 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...