Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Poziom 2 lekcja 21 zadanie nr. 1 losowanie bez powtórzeń.

Ostatnio zmodyfikowano 2016-09-06 14:40
Autor Wiadomość
Damfled
Temat założony przez niniejszego użytkownika
Poziom 2 lekcja 21 zadanie nr. 1 losowanie bez powtórzeń.
» 2016-09-05 17:18:33
Cześć, mam mały problem z zadaniem pierwszym ponieważ losuje mi również powtórzenia i nie wiem jak temu zaradzić. Przemierzając forum w poszukiwaniu odpowiedzi mój program został troche zmodyfikowany ale tez nic nie dało. Ostatni temat z jakiego korzystałem: http://cpp0x.pl/forum/temat/?id=22662. Wklejam poniżej najświeższą wersję i proszę o pomoc. :)

Treść zadania:  Napisz program, który wczyta 3 liczby podane przez użytkownika do tablicy, a następnie wylosuje 2 z nich bez powtórzeń. Wynik wypisz na ekran. Postaraj się napisać ten program w oparciu o funkcje.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
int podaj()
{
    int a;
    bool ok;
    do
    {
        std::cin >> a;
        ok = std::cin.good();
        std::cin.clear();
        std::cin.sync();
    } while( ok == 0 );
   
    return a;
}
int losuj()
{
    return std::rand() % 3;
}
bool sprawdz( int liczba, int tab[], int ile )
{
    if( ile <= 0 )
         return true;
   
    int licznik = 0;
   
    do
    {
        if( tab[ licznik ] == liczba )
        {
            return false;
        }
        licznik++;
    } while( licznik < ile );
   
    return true;
}
void wyswietl( int tab1[], int tab2[], int ilep, int iled )
{
    int licznik = 0;
    do
    {
        std::cout << tab1[ licznik ] << ", ";
        licznik++;
    } while( licznik < ilep );
   
    std::cout << "\n";
    licznik = 0;
    do
    {
        std::cout << tab2[ licznik ] << ", ";
        licznik++;
    } while( licznik < iled );
   
    std::cout << "\n";
    licznik = 0;
    do
    {
        std::cout << tab1[ tab2[ licznik ] ] << ", ";
        licznik++;
    } while( licznik < iled );
   
}
int main()
{
    srand( time( NULL ) );
    int pierwszat[ 3 ];
    int drugat[ 2 ];
    int elementyp = 0;
    int elementyd = 0;
    int pojemnoscp = 3;
    int pojemnoscd = 2;
   
    do
    {
        int liczby = podaj();
        pierwszat[ elementyp ] = liczby;
        elementyp++;
    } while( elementyp < pojemnoscp );
   
    do
    {
        int wylosowane = losuj();
        if( sprawdz( wylosowane, drugat, elementyd ) == true );
       
        {
            drugat[ elementyd ] = wylosowane;
            elementyd++;
        }
    } while( elementyd < pojemnoscd );
   
    wyswietl( pierwszat, drugat, pojemnoscp, pojemnoscd );
    return 0;
   
}
P-151466
mateczek
» 2016-09-06 05:42:21
C/C++
//zdecydowanie przesadziłeś :)
#include <iostream>
#include <ctime>
using namespace std;
int main()
{
    srand( time( NULL ) );
    int tablica[ 3 ];
    cin >> tablica[ 0 ] >> tablica[ 1 ] >> tablica[ 2 ]; //pobranie od urzytkownika liczb
   
    int losuj1 = rand() % 3; //pierwsze losowanie
    int losuj2;
    do {
        losuj2 = rand() % 3;
    } while( losuj2 == losuj1 );
   
    cout << "dwie wylosowane liczby to: " << tablica[ losuj1 ] << " i " << tablica[ losuj2 ] << endl;
   
}
P-151490
Damfled
Temat założony przez niniejszego użytkownika
» 2016-09-06 14:40:40
Dziękuję za pomoc. :)
P-151495
« 1 »
  Strona 1 z 1