Zmiany w Programie

0

Proszę o poprawienie programiku, dzięki z góry :)

#include "stdafx.h"
#include "iostream"
#include <iomanip>
#include <random>

using namespace std;

const int nmax = 10;
int z;
void PobTablice(int&z, int &n, int &m, int a[][nmax])
{
    //pobieranie il. wierszy
    do
    {
        cout << "Podaj il. wierszy\n n = ";
        cin >> n;
    } while ((n <= 0) || (n > nmax));
    //pobieranie il. kolumn
    do
    {
        cout << "Wstaw il. kolumn\n m = ";
        cin >> m;
    } while ((m <= 0) || (m > nmax));
    //zakres liczb
    cout << "Podaj zakres liczb\n z = ";
    cin >> z;

    if (z == 0 || z<0)
    {
        //pobieranie el. tablicy z konsoli
        cout << "\nPodaj elementy macierzy A\n";
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                cout << "A[" << i + 1 << ", " << j + 1 << "] = ";
                cin >> a[i][j];
            }
    }
    else
    {
        //pobieranie elemetnow randomowo od -z do z
        std::random_device rd;
        std::mt19937 gen(rd());
        std::uniform_int_distribution<> dis(-z, z);
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
            {
                a[i][j] = dis(gen);
            }
    }
}

void DrukTablice(int n, int m, int a[][nmax])
{
    cout << "\n TABLICA BEZ WYROWNANIA \n" << endl;

    for (int i = 0; i < n; i++)
    {//wyswietlamy el. i-tego wiersza bez wyrownania
        for (int j = 0; j < n; j++)
            cout << a[i][j] << ' ';
        cout << endl;//przechodzimy do nowego wiersza
    }
    cout << "\n TABLICA Z WYROWNANIEM \n" << endl;

    for (int i = 0; i < n; i++)
    {//wyswietlamy el. i-tego wiersza z wyrownaniem
        for (int j = 0; j < n; j++)
            cout << setw(10) << a[i][j];
        cout << endl;//przechodzimy do nowego wiersza
    }

}
int main()
{

    int a[nmax][nmax];
    int n, m; //n-il.wierszy, m-il. kolumn

    PobTablice(z, n, m, a);
    DrukTablice(n, m, a);

    system("pause");

    return 0;
}

Moje błędy :

  1. Liczba kolumn nie jest brana pod uwagę przy wydrukach (to jest typowy błąd "copy-paste").
  2. Szerokość kolumn jest ustawiona sztywno na 10 znaków, a powinna być równa szerokości najbardziej wymagającego elementu w danej kolumnie +1. To zresztą nie gwarantuje poprawności wydruku, np:
  3. Program obsługuje jeden przypadek w jednej aktywacji.

W 3 myślę, że wystarczy dać pętlę,

0
  1. No to popraw ten kod, tym razem nie kopując fragmentów.
  2. Licz długość ciągów – proste sumowanie.
  3. Tak.
bodsu napisał(a):

Proszę o poprawienie programiku, dzięki z góry :)

Marzyciel. ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0