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

Rozdział 21 zadanie

Ostatnio zmodyfikowano 2016-10-04 20:11
Autor Wiadomość
Nesquik
Temat założony przez niniejszego użytkownika
Rozdział 21 zadanie
» 2016-10-03 22:13:35
"1. 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.

2. Zmodyfikuj program z pierwszego zadania tak, aby użytkownik musiał podać 10 liczb, a 8 z nich będzie losowanych bez powtórzeń. Sprawdź czy wyniki są poprawne."

Program umiera po tym jak wpisze 10 liczb, po prostu nic zatrzymuje sie i nic sie nie dzieje.

C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int wylosuj()
{
    return(( rand() % 3 ) + 0 );
}

bool bylaczynie( int losowana, int wylosowana[], int ile )
{
    int licznik = 0;
    if( ile <= 0 )
    {
        return false;
    }
   
   
   
    do {
       
        if( wylosowana[ licznik ] == losowana )
             return true;
       
        licznik++;
    } while( licznik < ile );
   
    return false;
   
}

int wpisz( int iLiczba[] )
{
    int licznik = 0;
    do {
        cout << " Wpisz liczbe: " << endl;
        cin >> iLiczba[ licznik ];
        licznik++;
    } while( licznik < 10 );
   
}

int main()
{
    srand( time( 0 ) );
    int liczba[ 10 ];
    int wylosowana[ 8 ];
    int wylosowanych = 0;
    wpisz( liczba );
    do {
       
        int losowana = wylosuj();
       
        if( bylaczynie( losowana, wylosowana, wylosowanych ) == false )
        {
            wylosowana[ wylosowanych ] = losowana;
            wylosowanych++;
        }
       
    } while( wylosowanych < 8 );
   
    wylosowanych = 0;
   
    do
    {
        cout << "Wylosowana liczba:" << liczba[ wylosowana[ wylosowanych ] ] << endl;
        wylosowanych++;
    } while( wylosowanych < 8 );
   
}
P-152230
carlosmay
» 2016-10-03 23:54:29
Program umiera po tym jak wpisze 10 liczb, po prostu nic zatrzymuje sie i nic sie nie dzieje.
Dzieje się. Program ma wylosować bez powtórzeń 8 z 10 liczby. Tymczasem po wylosowaniu trzech kończą się możliwości
niepowtarzalnych liczb. Program zapętla. Po prostu zmieniono wielkość tablic, ale nie zmieniono losowanych wartości.

To tak pobieżnie. Nie sprawdzałem całości.
P-152237
Nesquik
Temat założony przez niniejszego użytkownika
» 2016-10-04 20:11:02
Dzieki jak zmienilem przedzial losowanych to podzialalo, i jeszcze dodałem ze nie mozna wpisac 2 takich samych liczb :)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

using namespace std;

int wylosuj()
{
    return(( rand() % 8 ) + 0 );
}

bool bylaczynie( int losowana, int wylosowana[], int ile )
{
    int licznik = 0;
    if( ile <= 0 )
    {
        return false;
    }
   
   
   
    do {
       
        if( wylosowana[ licznik ] == losowana )
             return true;
       
        licznik++;
    } while( licznik < ile );
   
    return false;
   
}

void wpisz( int iLiczba[] )
{
    int licznik = 0;
    int liczbaspr;
    cout << "WPISZ 10 LICZB" << endl;
    do {
        cin >> liczbaspr;
        if( bylaczynie( liczbaspr, iLiczba, licznik ) == false )
        {
           
            iLiczba[ licznik ] = liczbaspr;
            licznik++;
           
        }
        else
             cout << "NIE POWTARZAJ LICZB" << endl;
       
    } while( licznik < 10 );
   
}

int main()
{
    srand( time( 0 ) );
    const int rozm_tab1 = 10;
    const int rozm_tab2 = 8;
    int liczba[ rozm_tab1 ];
    int wylosowana[ rozm_tab2 ];
    int wylosowanych = 0;
    wpisz( liczba );
    do {
       
        int losowana = wylosuj();
       
        if( bylaczynie( losowana, wylosowana, wylosowanych ) == false )
        {
            wylosowana[ wylosowanych ] = losowana;
            wylosowanych++;
        }
       
    } while( wylosowanych < 8 );
   
    wylosowanych = 0;
   
    do
    {
        cout << "Wylosowana liczba:" << liczba[ wylosowana[ wylosowanych ] ] << endl;
        wylosowanych++;
    } while( wylosowanych < 8 );
   
}
P-152252
« 1 »
  Strona 1 z 1