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