• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C++,tablica dwuwymiarowa

+1 głos
129 wizyt
pytanie zadane 24 marca 2021 w C i C++ przez Ciasteczko:) Początkujący (440 p.)

Witam! Miałam za zadanie napisać program, który wylosuje n kul z m pojemników. Kule muszą być ponumerowane od a do b. Wartości a, b oraz n, m należało pobrać od użytkownika. Należało również założyć, że 1 <= n <= 1000; 1 <= m <= 100; Wylosowane kule należało zapisać w tablicy dwuwymiarowej. Po losowaniu wyświetlić wynik losowania kolejno n liczb w m wierszach. I właśnie mam pytanie jak zapisać kule w tablicy dwuwymiarowej? Jakby to wyglądało w kodzie? Oto napisany kod do tej pory:

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;


int LiczbaLosowa( int Min, int Max, int Wsp )
{
    srand( static_cast < unsigned int >( time( NULL ) * Wsp ) );
    int Wynik =( rand() %( Max - Min + 1 ) + Min );
    return Wynik;
}


int zakres(int a, int b)
{
    int losowane_kule;
    losowane_kule =( rand() %(( b - a ) + 1 ) + a );
    return losowane_kule;
}

int kule(int n);


int main()
{
    srand( time( NULL ) );
    int a, b;
    int n;
    int m;
    int losowane_kule[ n ];

    cout << "Uzytkowniku podaj przedzial liczbowy twoich kul" << endl;
    cout << "od (podaj liczbe):" << endl;
    cin >> a;
    cout << "do (podaj liczbe):" << endl;
    cin >> b;

    int tabela[1000][100];
    cout << "Podaj liczbe pojemnikow (podaj liczbe):" << endl;
    cin >> m;
    cout << "Podaj liczbe kul w pojemniku (podaj liczbe):" << endl;
    cin >> n;

    int tab[ n ];
    for( int i = 0; i < n; i++ )
    {
        tab[ i ] = LiczbaLosowa( 1, 100, i + 1 );
    }

    for(int i=0; i<n; i++)
    {
       cout << "Liczba_" << i + 1 << ": " << zakres( a, b ) << endl;

    }
    return 0;
}

Dziękuję za jakąkolwiek pomoc! 

komentarz 24 marca 2021 przez TOWaD Bywalec (2,920 p.)
 int tabela[100][1000]={}; 
for( int j = 0; i < m; j++ )
    for( int i = 0; i < n; i++ )
    {
        tabela[j][ i ] = LiczbaLosowa( 1, 100, i + 1 );
    }

może tak?

komentarz 24 marca 2021 przez Ciasteczko:) Początkujący (440 p.)
Nie działa :c
1
komentarz 24 marca 2021 przez Scheduler Mądrala (6,950 p.)

@Ciasteczko:),

srand( time( NULL ) );
    int a, b;
    int n;
    int m;
    int losowane_kule[ n ];

Ostatnia linijka w tym bloku nie ma prawa zadziałać. Inicjalizujesz tablice o wielkości n, ale jest ona niezainicjalizowana. Zamiast tablicy statycznej musisz użyć dynamicznej lub innej struktury danych(ja polecam vector). 

1 odpowiedź

0 głosów
odpowiedź 25 marca 2021 przez VBService Mędrzec (179,230 p.)

Propozycja  smiley


#include <iostream>
#include <ctime>

using namespace std;

int losuj_kule(int a, int b)
{
    return a + rand() % (( b + 1 ) - a);
}

int main()
{
    // ustawienie punktu startowegoy generatora pseudolosowego 
    // wystarczy raz na początku programu
    srand(time(NULL));
    
    int n, m;
   
    // 1 <= m <= 100 
    cout << "Podaj liczbe pojemnikow (1 - 100): ";
     cin >> m;
     
    // 1 <= n <= 1000 
    cout << "Podaj liczbe kul w pojemniku (1 - 1000): ";
     cin >> n;     
    
    int pojemniki[m][n] = {0};
    int a, b;
    
    cout << "Podaj przedzial liczbowy twoich kul" << endl
         << "od (podaj liczbe): ";
     cin >> a;
    cout << "do (podaj liczbe): ";
     cin >> b;
    
    // ... Wylosowane kule należało zapisać w tablicy dwuwymiarowej
    for (int i=0; i<m; ++i)
    {
        for (int j=0; j<n; ++j)
        {
            pojemniki[i][j]=losuj_kule(a, b);
        }
    }
    
    cout << endl;
    
    // ... Po losowaniu wyświetlić wynik losowania kolejno n liczb w m wierszach
    for (int i=0; i<m; ++i)
    {
        for (int j=0; j<n; ++j)
        {
            cout << pojemniki[i][j] << " ";
        }
        
        cout << endl;
    }
    
    return EXIT_SUCCESS; 
}

komentarz 25 marca 2021 przez Ciasteczko:) Początkujący (440 p.)
Dziękuję!

Podobne pytania

0 głosów
1 odpowiedź 123 wizyt
+1 głos
4 odpowiedzi 211 wizyt
pytanie zadane 1 lutego 2021 w C i C++ przez forok Nowicjusz (160 p.)
0 głosów
2 odpowiedzi 157 wizyt

88,701 zapytań

137,308 odpowiedzi

306,748 komentarzy

58,894 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...