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

Losowanie cyfr z powtórzeniem,wprowadzanie liczb wierszy

Ostatnio zmodyfikowano 2017-02-21 18:58
Autor Wiadomość
maly7
» 2017-02-20 18:38:07
Zmienna
maxFillRow
 odpowiada za to ile wierszy ma być uzupełnionych? Jeśli tak albo przekazuj do funkcji liczbe wierszy - 1 albo w pętli for daj
i < maxFillRow - 1
P-158062
rafal6191
Temat założony przez niniejszego użytkownika
» 2017-02-21 10:06:30
i < maxFillRow - 1
Coś takiego nie działa. Już nie mam pojęcia jak to zrobić, szukałem już na kilku forach i różnych poradnikach i wraz nie rozumiem tego.
P-158090
michal11
» 2017-02-21 10:29:05
Wstaw aktualny kod, napisz co nie działa.
P-158092
rafal6191
Temat założony przez niniejszego użytkownika
» 2017-02-21 12:40:41
C/C++
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
#include <iomanip>
//====================================================================================================================

void Print( std::ostream & out, int tab[ 5 ][ 5 ], int Rows )
{
    for( int j = - 1; j < 5; ++j )
    {
        out << std::setw( 2 ) <<( j + 1 ) << ": ";
    }
    out << "\n";
   
    for( int i = 0; i < Rows; ++i )
    {
        out << std::setw( 2 ) <<( i + 1 ) << ": ";
        for( int j = 0; j < 5; ++j )
        {
            out << std::setw( 3 ) << tab[ i ][ j ] << " ";
        }
        out << "\n";
    }
}

void Fill( int tab[][ 5 ], int maxFillRow );
void SumColumns( int tab[][ 5 ], int Rows );

//====================================================================================================================

int main()
{
    using std::cout;
    using std::endl;
    using std::cin;
   
    srand( time( 0 ) );
   
    const int RowsNum = 5;
    const int ColumnsNum = 5;
   
    int RowsFilledByDigits;
    do
    {
        cout << "Podaj liczbe wierszy ktore maja byc wypelnione (1-5): ";
        cin >> RowsFilledByDigits;
       
       
    }
    while( RowsFilledByDigits <= 0 || RowsFilledByDigits >= 6 );
   
    int tab[ RowsNum ][ ColumnsNum ] { 0 };
   
   
    Fill( tab, RowsFilledByDigits );
   
    SumColumns( tab, RowsFilledByDigits );
   
    Print( cout, tab, RowsFilledByDigits );
   
   
    return 0;
}
//====================================================================================================================
void Fill( int tab[][ 5 ], int maxFillRow )
{
    for( int i = 0; i < maxFillRow; ++i )
    {
        for( int j = 0; j < 5; ++j )
        {
            tab[ i ][ j ] = rand() % 9 + 1;
        }
    }
}
//*****************************************************************************
void SumColumns( int tab[][ 5 ], int Rows )
{
    int columnSum = 0;
   
    for( int j = 0; j < 5; ++j )
    {
        for( int i = 0; i < Rows; ++i )
        {
            columnSum += tab[ i ][ j ];
        }
        tab[ Rows - 1 ][ j ] = columnSum;
        columnSum = 0;
    }
}

Zostało chyba tylko to żeby właśnie ten ostatni wiersz by pusty. Tylko nie wiem w jaki sposób zmienić pętle żeby tak było
P-158098
hit
» 2017-02-21 12:56:31
A dlaczego pusty? Z tego co rozumiem to ma on zawierać sumy wartości z kolumn. Niezrozumiałe jest też dla mnie to, że deklarujesz tablicę 5x5, a maksymalna liczba do wypełnienia wierszy to też może być 5. Nie zostanie wtedy 1 wiersz właśnie na te sumy. Wg mnie w takim przypadku powinieneś pobierać 1-4.
P-158100
michal11
» 2017-02-21 14:19:28
C/C++
do
{
    cout << "Podaj liczbe wierszy ktore maja byc wypelnione (1-4): ";
    cin >> RowsFilledByDigits;
   
   
}
while( RowsFilledByDigits <= 0 || RowsFilledByDigits >= 5 );

int tab[ RowsNum ][ ColumnsNum ] { 0 };

++RowsFilledByDigits;

Fill( tab, RowsFilledByDigits - 1 );

SumColumns( tab, RowsFilledByDigits );

Print( cout, tab, RowsFilledByDigits );
P-158103
rafal6191
Temat założony przez niniejszego użytkownika
» 2017-02-21 18:58:45
I to już będzie dobrze?
Jeśli tak to wielkie wielkie dzięki za pomoc.
P-158115
1 2 3 « 4 »
Poprzednia strona Strona 4 z 4