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

Lekcja 21 losowanie 8 z 10

Ostatnio zmodyfikowano 2014-10-26 19:59
Autor Wiadomość
matys210
Temat założony przez niniejszego użytkownika
Lekcja 21 losowanie 8 z 10
» 2014-10-25 19:07:48
Nie mam już pomysłu dlaczego mi to nie działa. Wpisywanie ok ale gdy komp zgaduje wartości to już jest klapa. Dzięki z góry za pomoc.


C/C++
// 10_podajesz_8_losuje.cpp : Defines the entry point for the console application.
//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.
//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.

#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>

using std::cin;
using std::cout;
using std::endl;



void wczytanie( int t[] );
void losowanie( int t[] );
bool spr( int t[], int l[] );
bool spr2( int l[], int );

int main()
{
    int t[ 10 ];
    wczytanie( t );
    losowanie( t );
    cin.get();
    cin.get();
    return 0;
}


void losowanie( int t[] )
{
    srand( time( NULL ) );
    int l[ 8 ], i = 0, r = 0;
    int j = 1;
   
    do
    {
        do
        {
            r =( rand() % 1000 );
        } while( spr2( l, r ) || spr( t, l ) );
       
        l[ i ] = r;
        cout << "Pewnie wpisales " << l[ i ] << endl;
        ++i;
    } while( ++j != 9 );
   
}


void wczytanie( int t[] )
{
    cout << "Podaj 10 liczb od 0 do 999\n";
    for( int i = 0; i < 10; ++i )
    {
        cin.clear();
        cin >> t[ i ];
    }
}

bool spr( int t[], int l[] )
{
    for( int i = 0; i < 8; ++i )
    {
        for( int r = 0; r < 10; ++r )
             if( l[ i ] == t[ r ] ) return true;
       
    }
    return false;
}

bool spr2( int l[], int r )
{
    for( int i = 0; i < 8; ++i )
    {
        if( r == l[ i ] ) return true;
       
    }
    return false;
}
P-119397
Jacob99
» 2014-10-26 14:12:13
Zrób tak:
1.Wczytaj liczby do kontenera.
2.Wylosuj liczby z zakresu 0-9.
3.Sprawdź, czy wylosowana liczba jest unikatowa(czy się nie powtarza).
4.Wypisz zawartość wylosowanych pól kontenera.
P-119439
Rashmistrz
» 2014-10-26 16:04:58
Wpisywanie ok ale gdy komp
zgaduje wartości to już jest klapa.
Idziesz w złym kierunku. Komputer nie ma zgadywać,
a wylosować 8 z podanych. Chociaż on nie musi
zgadywać, bo je już zna tylko o tym nie wie.

... ale i tak ten programik warto
naprawić chociażby dla treningu. ^_^

Główny cel:
[...]8 z nich będzie losowanych bez powtórzeń.[...]
P-119451
matys210
Temat założony przez niniejszego użytkownika
» 2014-10-26 19:59:14
No tak, czytać się nie potrafi. Dzięki :)
P-119481
« 1 »
  Strona 1 z 1