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

Losowanie 2 z 3 liczb

Object Storage Arubacloud
0 głosów
231 wizyt
pytanie zadane 29 kwietnia 2016 w C i C++ przez Dynamic Bywalec (2,910 p.)

witam, napisałem kod do zadania:

"losowanie 2 liczb z 3 podanych przez użytkownika"

#include <iostream>
#include <cstdlib>
#include <time.h>

using namespace std;

int tablica[3];
int tablica2[2];

bool sprawdz(int tab2[], int licznik, int liczba)
{
    if(licznik<=0)
        return true;

    int i=0;
    do
    {
        if(tab2[i]==liczba)
            return false;
    }while(i<licznik);
    return true;
}

int losowanie(int tab[])
{
    return tab[rand()%2];
}
int main()
{
    srand(time(NULL));
    for(int i=0; i<3; i++)
    {
        cout << "podaj " << i+1 << " liczbe: ";
        cin >> tablica[i];
    }
    int licznik=0;
    int liczba;
    do
    {
        liczba = losowanie(tablica);
        if(sprawdz(tablica2,licznik,liczba)==true)
        {
            tablica2[licznik]=liczba;
            licznik++;
        }

    }while(licznik>2);

    licznik=0;
    do
    {
        cout << "wylosowana liczba to: " << tablica2[licznik]<< endl;
        licznik++;
    }while(licznik<2);
    return 0;
}

Efekt działania programu to:

niestety, ciągle wybiera pierwszą podaną liczbę;/ Prosiłbym o wyjaśnienie problemu,z góry dziękuje ;>

1 odpowiedź

0 głosów
odpowiedź 29 kwietnia 2016 przez Ehlert Ekspert (212,670 p.)

Problem jest z algorytmem. Zupełnie nie potrzebnie skomplikowałeś sobie sprawę.
PSEUDOKOD:

function losuj(tablica, size)
{
int randed, index;
do{
index = rand()%size;
randed = tablica[index];
}while(randed == INT_MIN);
tablica[index] = INT_MIN;
return randed;
}

Zaopatrz się jeszcze w funkcję sprawdzającą czy w tablicy jest co losować. Pamiętaj że do funkcji przekazujesz tablicę przez wskaźnik.

komentarz 29 kwietnia 2016 przez Dynamic Bywalec (2,910 p.)
wystarczyło

int losowanie(int tab[])

{

    return tab[rand()%3];

}

Podobne pytania

0 głosów
1 odpowiedź 512 wizyt
pytanie zadane 5 stycznia 2016 w C i C++ przez szmyt151 Bywalec (2,010 p.)
–1 głos
1 odpowiedź 666 wizyt
pytanie zadane 7 września 2016 w C i C++ przez Platiniumekk Początkujący (250 p.)
0 głosów
1 odpowiedź 801 wizyt
pytanie zadane 18 października 2018 w C i C++ przez Gadzic Nowicjusz (170 p.)

92,573 zapytań

141,423 odpowiedzi

319,648 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...