[C++] Funkcia ako paramater

Programovacie jazyky, rady, poradňa...
sejnt
Amateur
Amateur
Príspevky: 11
Registrovaný: 15 nov 2009, 13:39
Bydlisko: Vysoka nad Kysucou

[C++] Funkcia ako paramater

Príspevok od používateľa sejnt »

Vo funkcii censusMatrix chcem scitat matrix1 a matrix2 da sa to takto alebo musim tie dve matice robit v main() ???dikza help..
censusMatrix() nie je dokoncena :)

Kód: Vybrať všetko

#include <iostream>
#include <iomanip> // for using manipulators
using namespace std;

void createMatrix1 (int rows, int columns) // Creating matrix one 
{
	int const N=20;
    int matrix1[N][N];
	for (int i = 1; i <= rows; i++)
		for (int j = 1; j <=columns; j++){
			cout << "Enter the "<< j <<". element on "<< i <<". line at second matrix\n";
			cin >> matrix1[i][j];
		}
}

void cerateMatrix2 (int rows, int columns) // Creating matrix two
{
	int const N = 20;
	int matrix2[N][N];
	for (int i = 1; i <= rows; i++)
		for (int j = 1; j <=columns; j++){
			cout << "Enter the "<< j <<". element on "<< i <<". line at second matrix\n";
			cin >> matrix2[i][j];
		}
}





void censusMatrix()
{
	int rows, columns;
	for (int i = 1; i <= rows; i++)
		for (int j = 1; j <=columns; j++);
}


int main(void)
{
	cout << "Choose your operation: \n";
	cout << "Press 1 for counting two matrices \n";
	cout << "Press 2 for matrix * scalar \n";
        cout << "Press 3 for matrix * vector \n";
	cout << "Press 4 for matrix * matrix \n";
        cout << "Press 5 for repetitions \n";
	cout << "Press 0 for exit \n";
	int choice;
	cin >> choice;
	system("cls");
	while (choice =! 0)
	{
		switch (choice) {
			case 1 :
                int rows, columns;
		cout << "Enter the number of rows at frist matrix \n";
	            cin >> rows;
	            cout << "Enter the number of columns at frist matrix \n";
	            cin >> columns;
				createMatrix1(rows, columns);
				system("cls");
				cerateMatrix2(rows, columns);
				system("cls");
				break;
		}
	}



	return 0;
}
c-ice
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 475
Registrovaný: 04 mar 2008, 15:18
Kontaktovať používateľa:

Príspevok od používateľa c-ice »

Kód: Vybrať všetko

void createMatrix1 (int rows, int columns) // Creating matrix one
{
   int const N=20; 
    int matrix1[N][N]; 
radšej takto aby si nemal alokovane zbytočne velké pole

Kód: Vybrať všetko

void createMatrix1 (int rows, int columns) // Creating matrix one
{
    int matrix1[rows][columns]; 
____________________________________________________

no to je to že ty vytvoris vo funckii matrix1 a matrix2 ale tie premenne sa z tej funkcie nedostanu v tomto pripade a ako skonci funkcia tak aj tie premenne nikde ich neodovzdavaš napr. cez return
alebo keby máš toto

Kód: Vybrať všetko

int const N=20;
int matrix1[N][N]; 
definovane za using namespace std; ako globalnu premennu a nemas to vo funkciach tak by to fungovalo a vygenerovane matice by si mal v Globalnych premennych pristupne aj vo funkcii aj v main

a pri počítani nemusíš použit globálnu ale budes vracat cez return do niejakej lokalnej premennej ak to budes chciet vôbec niekde ukladat a nebudes v tej funkcii robit iba niejaky vypis na obrazovku už vyslednej matice bez zmeny vygenerovanych

Ešte jedna vec Nepotrebuješ 2 funkcie tie funkcie mas prave preto použit aby ti to ulačili sprehladnili a aby si ich mohol použit viac krat v programe takže vytvor 1funkciu ktora najprv "vygeneruje" 1. a potom 2. .. môžeš spravit trojrozmerne pole kde jeden rozmer bude určovat kolka matica to je alebo ako kolvek ale tie 2 funkcie su ti zbytočne ked robia to iste
Napísať odpoveď