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

losowanie z tablic jednowymiarowych

Ostatnio zmodyfikowano 2013-11-03 17:39
Autor Wiadomość
matiko101
Temat założony przez niniejszego użytkownika
losowanie z tablic jednowymiarowych
» 2013-11-03 12:12:25
Witam,
Mam problem z losowaniem liczb wpisanych do tablicy.
Oto kod:
C/C++
#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;
int podajliczby()
{
    int c = 0;
    int tab1[ c ], crozmiar;
    cout << "Ile cyfr ma byc w tablicy ?\n";
    cin >> crozmiar;
    cout << "Podaj " << crozmiar << " liczb do tablicy\n";
    do
    {
        cin >> tab1[ c ];
        c++;
    }
    while( c < crozmiar );
   
    cout << "Podales nastepujace cyfry\n";
    c = 0;
    do
    {
        cout << tab1[ c ] << " , ";
        c++;
    }
    //ta funkcja(podajliczby) dziala dobrze
   
    while( c < crozmiar );
   
}
int losowanie()
{
    srand( time( 0 ) );
    cout << "\nLosuje liczby z tablicy\n";
    int c = 0, crozmiar, tab1[ c ], liczba;
    do
    {
        liczba =( rand() % tab1[ c ] );
    }
    while( c < crozmiar );
   
    cout << liczba;
}
//ta funkcja(losowanie) nie dziala tzn. zacina sie po wykonaniu funkcji podajliczby

int main()
{
    podajliczby();
    losowanie();
    return 0;
}
P-95146
MrPoxipol
» 2013-11-03 12:36:04
Rozmiar statycznej tablicy musi być znany podczas kompilacji. Użyj tablicy dynamicznej, albo vectora.
P-95148
matiko101
Temat założony przez niniejszego użytkownika
» 2013-11-03 12:38:41
Mógłbyś mi wytlumaczyc na czym one polegaja i w jaki sposob je umiescic ? :)
P-95149
pekfos
» 2013-11-03 13:37:20
C/C++
int * tablica = new int[ rozmiar ];
lub std::vector<> (» KursyKurs STL, C++ kurs)
P-95155
matiko101
Temat założony przez niniejszego użytkownika
» 2013-11-03 17:06:22
Tablice dynamiczne są jeszcze chyba dla mnie za trudne :(
Aktualnie stoję na losowaniu bez powtórzeń i nie mogę tego zrozumieć.
Mógłby mi ktoś z dobrej chęci krok po kroku napisać // co robi poszczególna linijka ? :)
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

bool czyBylaWylosowana( 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;
}

int wylosuj()
{
    return( rand() % 10 ) + 1;
}

int main()
{
    srand( time( 0 ) );
    int wylosowane[ 5 ];
    int wylosowanych = 0;
    do
    {
        int liczba = wylosuj();
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false )
        {
            wylosowane[ wylosowanych ] = liczba;
            wylosowanych++;
        } //if
    } while( wylosowanych < 5 );
   
    wylosowanych = 0;
    do
    {
        std::cout << wylosowane[ wylosowanych ] << std::endl;
        wylosowanych++;
    } while( wylosowanych < 5 );
   
    return 0;
}
P-95177
pekfos
» 2013-11-03 17:09:13
Czego nie rozumiesz?
P-95179
matiko101
Temat założony przez niniejszego użytkownika
» 2013-11-03 17:12:35
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

bool czyBylaWylosowana( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 ) //ta linijka nie jest dla mnie jasna
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == iLiczba ) // ta tez
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

int wylosuj()
{
    return( rand() % 10 ) + 1; //dlaczego return ?
}

int main()
{
    srand( time( 0 ) );
    int wylosowane[ 5 ]; //rozumiem ze chodzi o to ile ma byc wylosowanych liczb ?
    int wylosowanych = 0;
    do
    {
        int liczba = wylosuj(); // tu to nie mam pojecia
        if( czyBylaWylosowana( liczba, wylosowane, wylosowanych ) == false ) // tez nie mam pojecia
        {
            wylosowane[ wylosowanych ] = liczba; // czemu =liczba ?
            wylosowanych++;
        } //if
    } while( wylosowanych < 5 );
   
    wylosowanych = 0;
    do
    {
        std::cout << wylosowane[ wylosowanych ] << std::endl;
        wylosowanych++;
    } while( wylosowanych < 5 );
   
    return 0;
}
P-95180
pekfos
» 2013-11-03 17:16:45
P-95181
« 1 » 2
  Strona 1 z 2 Następna strona