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

C++,tablica dwuwymiarowa

Object Storage Arubacloud
+1 głos
264 wizyt
pytanie zadane 24 marca 2021 w C i C++ przez Ciasteczko:) Początkujący (490 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 Mądrala (5,700 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 (490 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 Ekspert (252,740 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 (490 p.)
Dziękuję!

Podobne pytania

0 głosów
1 odpowiedź 290 wizyt
0 głosów
1 odpowiedź 256 wizyt
pytanie zadane 7 grudnia 2022 w C i C++ przez Janchess Początkujący (480 p.)
+1 głos
4 odpowiedzi 468 wizyt
pytanie zadane 1 lutego 2021 w C i C++ przez forok Nowicjusz (160 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...