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

[C++] Zadanie domowe. Poziom 2. Lekcja 21. Losowanie bez powtórzeń

Ostatnio zmodyfikowano 2013-04-25 19:59
Autor Wiadomość
lancher
Temat założony przez niniejszego użytkownika
[C++] Zadanie domowe. Poziom 2. Lekcja 21. Losowanie bez powtórzeń
» 2013-04-25 18:33:40
Witam. Zwracam sie z prosba o pomoc i porade.. Mecze sie z drugim zadaniem czyli : 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.
Jak mi sie wydaje doszedlem juz do rozwiazanie problemu logicznego ale dalej chyba motam cos w kodzie... Kogos bardziej doswiadczonego prosze o ewentualnei wskazanie bledow w kodzie jak i doradzenie w kwestii skrocenia kodu itp. Aktualnie program wyswietla mi jakies nie zadeklarowane w ogole liczby.

Kod:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstdio>
using namespace std;

bool BylaLosowana( 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 Wypisanie( int tab[], int a )
{
    a = 0;
    cout << "Wylosowane liczby to: " << endl;
    do
    {
        cout << tab[ a ] << " , ";
        a++;
    } while( a < 8 );
   
}

void Wartosc( int wpis[], int los[], int licz, int wynik[], int zmienn )
{
    int a = 0;
    do
    {
        los[ a ] = zmienn;
        wpis[ zmienn ] = wynik[ a ];
        a++;
    } while( a < 8 );
   
}
int Losuj()
{
    int c;
    c =( rand() % 10 ) + 1;
    cout << c;
    return c;
}

int Wprowadzenie( int wyjscie[] )
{
    cout << "Podaj 10 liczb z ktorych program wylosuje 8 bez powtorzen..." << endl;
    int a = 0;
    do
    {
        cin >> wyjscie[ a ];
        a++;
    } while( a < 10 );
   
}
int main()
{
    srand( time( 0 ) );
    int podane[ 10 ], wylosowane[ 8 ], wyjsciowe[ 8 ], a = 0, b = 0, liczba; //deklarowanie zmiennych
    Wprowadzenie( podane ); //uzytkownik wprowadza dane
    do
    {
        liczba = Losuj(); //losowanie liczby
        if( BylaLosowana( liczba, wylosowane, a ) == false ) //sprawdzanie warunku czy liczba sie juz powtorzyla
        {
            wylosowane[ a ] = liczba;
            a++;
        }
    } while( a < 8 );
   
    Wartosc( podane, wylosowane, a, wyjsciowe, b ); //zmiana wartosci zmiennych wyjsciowych
    Wypisanie( wyjsciowe, a ); //wypisanie wyniku
   
    return 0;
}



P-81168
pekfos
» 2013-04-25 18:47:50
Aktualnie program wyswietla mi jakies nie zadeklarowane w ogole liczby.
C/C++
int Losuj()
{
    int c;
    c =( rand() % 10 ) + 1;
    cout << c; //A to co?
    return c;
}
P-81169
lancher
Temat założony przez niniejszego użytkownika
» 2013-04-25 18:49:20
napisalem to tylko po to zeby upewnic sie czy losuje mi dobrze a pozniej zapomnailem usunac ;) nie powinno miec wplywu na program :D
a liczby niezadeklarowane wyswietlaja mi sie oczywiscie  w wyniku ;)
P-81170
pekfos
» 2013-04-25 19:01:10
C/C++
wpis[ zmienn ] = wynik[ a ]; //Tu błąd
P-81171
lancher
Temat założony przez niniejszego użytkownika
» 2013-04-25 19:30:52
okej wyjde na debila ktory nawet gdy otrzymna odpowiedz na tacy to nie wie co zrobic ale po 30 minutach analizowania nie wiem co jest zle... wiem ze nie powinno sie podawac rozwiazania bo powinienem sam na to wpasc nie mniej jednak prosze o jakas podpowiedz...
P-81172
pekfos
» 2013-04-25 19:51:29
a = b;
 przypisuje
b
 do
a
, a nie odwrotnie.
P-81173
lancher
Temat założony przez niniejszego użytkownika
» 2013-04-25 19:59:22
wielkie dzieki ;) musialem nie doczytac tego bo jestem pewien ze gdzies w kursie to jest ;) gdyby nie to popelnialbym jeszcze wiecej takich bledow ;) dzieki wielkie za pomoc. temat do zamkniecia ;)
P-81174
« 1 »
  Strona 1 z 1