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

Rozdzial 21 zad. 1

Ostatnio zmodyfikowano 2016-07-28 14:31
Autor Wiadomość
RockerFeller
Temat założony przez niniejszego użytkownika
Rozdzial 21 zad. 1
» 2016-07-28 12:05:39
Witam znowu mam klopot z zadaniem jedynie z tym aby wylosowac dwie liczby z trzech. Losuje mi ciagle druga i pierwsza liczbe.
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void podaj( int wylosowane[], int wylosowanych )
{
    while( wylosowanych < 3 )
    {
        cin >> wylosowane[ wylosowanych ];
        wylosowanych++;
    }
}

int losuj()
{
    return rand() % 3;
}

bool czyByla( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] != iLiczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

void napisz( int liczba )
{
    cout << liczba << "\n";
}

int main()
{
    int wylosowane[ 3 ];
    int wylosowanych = 0;
    cout << "Podaj trzy liczby";
    podaj( wylosowane, wylosowanych );
    int losowane;
    int liczba;
    while( wylosowanych < 2 )
    {
        losowane = losuj();
        liczba = wylosowane[ losowane ];
        if( !czyByla( liczba, wylosowane, wylosowanych ) )
        {
            napisz( liczba );
            wylosowanych++;
        }
    }
   
    return 0; }
Przykladowe logi to
Podaj trzy liczby
input: 1 2 3
2
1
P-150326
Luq
» 2016-07-28 12:42:03
Dopisz w mainie
srand( time( NULL ) )
P-150327
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-28 12:54:12
Niezle zapomnialem najwazniejszej rzeczy. Ale itak dalej
Podaj trzy liczby
input: 3 33 333
33
3
P-150328
Luq
» 2016-07-28 13:10:01
Skopiowałem Twój kod u siebie, dodałem na początku maina srand i u mnie losuje różne liczby.

Zmodyfikuj funkcję czyByla, bo nie działa jak należy
P-150330
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-28 13:31:40
Tia teraz wypisuje losowo... ale tylko jedna liczbe.
C/C++
bool czyByla( int iLiczba, int tab[], int ile )
{
    if( ile == 0 )
         return false;
   
    int i = 0;
    while( i < 3 );
   
    {
        if( tab[ i ] = iLiczba )
             return true;
       
        i++;
    }
   
    return false;
}

int main()
{
    srand( time( NULL ) );
    int wylosowane[ 3 ];
    int wylosowanych = 0;
    cout << "Podaj trzy liczby";
    podaj( wylosowane, wylosowanych );
    int losowane;
    int liczba;
    while( wylosowanych < 2 )
    {
        losowane = losuj();
        liczba = wylosowane[ losowane ];
        if( !czyByla( liczba, wylosowane, wylosowanych ) )
        {
            napisz( liczba );
            wylosowanych++;
        }
    }
   
    return 0;
P-150331
Luq
» 2016-07-28 14:04:59
Trochę ze złej strony do tego podchodzisz.
Najlepiej stwórz sobie zmienną, w której przechowasz wynik pierwszego losowania i wynik drugiego losowania porównaj z tą zmienną.

Co do kodu, to po warunku pętli while nie stawiaj średnika, a w ifie uważaj na różnicę między = a ==
P-150332
RockerFeller
Temat założony przez niniejszego użytkownika
» 2016-07-28 14:31:13
Tak to jest jak sie spieszy...
Skopiowalem z do...while; razem ze srednikiem:/

-------edit-------

Troche kombinowania i...
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

void podaj( int wylosowane[], int wylosowanych )
{
    while( wylosowanych < 3 )
    {
        cin >> wylosowane[ wylosowanych ];
        wylosowanych++;
    }
}

int losuj()
{
    int liczba = rand() % 3;
    return liczba;
}

bool czyByla( int iLiczba, int tab[], int ile )
{
    if( ile == 0 )
         return false;
   
    int i = 0;
    while( i < 2 )
    {
        if( tab[ i ] == iLiczba )
             return true;
       
        i++;
    }
    return false;
}

void napisz( int liczba )
{
    cout << liczba << "\n";
}

int main()
{
    srand( time( NULL ) );
    int tab[ 2 ];
    int wylosowane[ 3 ];
    int wylosowanych = 0;
    cout << "Podaj trzy liczby";
    podaj( wylosowane, wylosowanych );
    int losowane;
    int liczba;
    int i = 0;
    while( wylosowanych < 2 )
    {
        losowane = losuj();
        liczba = wylosowane[ losowane ];
        if( !czyByla( liczba, tab, i ) )
        {
            napisz( liczba );
            tab[ i ] = liczba;
            i++;
            wylosowanych++;
        }
    }
   
    return 0; }
Dzieki za wskazowki :)
P-150334
« 1 »
  Strona 1 z 1