[C++] Przekazywanie dwuwymiarowej tablicy do funkcji
Ostatnio zmodyfikowano 2014-01-01 22:27
pekfos |
» 2014-01-01 19:30:12 Tworzysz nową tablicę, zamiast użyć istniejącej. |
|
Tym3k Temat założony przez niniejszego użytkownika |
» 2014-01-01 20:19:24 int wyznacznik( int ** tab, int n ) { int Wyznacznik; int Wyznacznik_1 =( tab[ 0 ][ 0 ] * tab[ 1 ][ 1 ] * tab[ 2 ][ 2 ] ) +( tab[ 0 ][ 1 ] * tab[ 1 ][ 2 ] * tab[ 2 ][ 0 ] ) +( tab[ 0 ][ 2 ] * tab[ 1 ][ 0 ] * tab[ 2 ][ 1 ] ); int Wyznacznik_2 =( tab[ 2 ][ 0 ] * tab[ 1 ][ 1 ] * tab[ 0 ][ 2 ] ) +( tab[ 2 ][ 1 ] * tab[ 1 ][ 2 ] * tab[ 0 ][ 0 ] ) +( tab[ 2 ][ 2 ] * tab[ 1 ][ 0 ] * tab[ 0 ][ 1 ] ); Wyznacznik = Wyznacznik_1 - Wyznacznik_2; cout << "\nWyznacznik macierzy wynosi " << Wyznacznik << "."; return Wyznacznik; }
Funkcja z tego nie odczytuje, że chodzi o uzupełnioną już tablice... macie może jakiś przykład w jaki sposób tablice wielowymiarowe komunikują się pomiędzy funkcjami? |
|
Tym3k Temat założony przez niniejszego użytkownika |
» 2014-01-01 22:27:30 #include <iostream> #include <conio.h> #include <ctime> #include <stdlib.h>
using namespace std;
const int n = 3; int ** tab;
int menu(); void wypelnij_i_pokaz( int **& tab, int min, int max );
int wyznacznik( int **& tab, int n ); bool symetryczna( int **& tab, int n ); int suma_komorek( int **& tab, int n );
int main() { switch( menu() ) { case 1: { system( "CLS" ); cout << "Macierz 3x3" << endl; wypelnij_i_pokaz( tab, 1, 9 ); wyznacznik( tab, n ); break; } case 2: { wypelnij_i_pokaz( tab, 1, 9 ); if( symetryczna( tab, n ) ) cout << "Tablica jest symetryczna" << endl; else cout << "tablica jest niesymetryczna" << endl; break; } case 3: { wypelnij_i_pokaz( tab, 1, 9 ); suma_komorek( tab, n ); break; } } system( "pause" ); }
int menu() { int opcja; do { cout << " ============ Menu Lab 5 ============" << endl; cout << "1.Wyliczanie wyznacznika macierzy" << endl; cout << "2.Sprawdz czy macierz jest symetryczna " << endl; cout << "3.Suma wartosci komorek" << endl; cout << "=======================================" << endl << endl; cout << "wybierz warunek od 1 do 3" << endl; cin >> opcja; } while( opcja < 1 || opcja > 3 ); return opcja; }
void wypelnij_i_pokaz( int **& tab, int min, int max ) { tab = new int *[ n ]; srand( time( 0 ) ); for( int i = 0; i < n; i++ ) { tab[ i ] = new int[ n ]; for( int j = 0; j < n; j++ ) { tab[ i ][ j ] = rand() %( max - min + 1 ) + min; cout << tab[ i ][ j ] << " "; } cout << "\n"; } return; }
int wyznacznik( int **& tab, int n ) { int Wyznacznik; int Wyznacznik_1 =( tab[ 0 ][ 0 ] * tab[ 1 ][ 1 ] * tab[ 2 ][ 2 ] ) +( tab[ 0 ][ 1 ] * tab[ 1 ][ 2 ] * tab[ 2 ][ 0 ] ) +( tab[ 0 ][ 2 ] * tab[ 1 ][ 0 ] * tab[ 2 ][ 1 ] ); int Wyznacznik_2 =( tab[ 2 ][ 0 ] * tab[ 1 ][ 1 ] * tab[ 0 ][ 2 ] ) +( tab[ 2 ][ 1 ] * tab[ 1 ][ 2 ] * tab[ 0 ][ 0 ] ) +( tab[ 2 ][ 2 ] * tab[ 1 ][ 0 ] * tab[ 0 ][ 1 ] ); Wyznacznik = Wyznacznik_1 - Wyznacznik_2; cout << "\nWyznacznik macierzy wynosi " << Wyznacznik << "."; return Wyznacznik; }
bool symetryczna( int **& tab, int n ) { for( int i = 0; i < n; i++ ) { for( int j = 0; j < n; j++ ) { if( tab[ i ][ j ] != tab[ j ][ i ] ) { return false; } } } return true; }
int suma_komorek( int **& tab, int n ) { int suma = 0; for( int i = 0; i < n; i++ ) { for( int j = 0; j < n; j++ ) { if(( i + j ) % 2 == 0 ) { suma = suma + tab[ i ][ j ]; } } } cout << "suma wynosi " << suma << endl; return suma; }
Działa mi ten wyznacznik, zabrakło " & "..... to jest już poprawnie?;D |
|
1 « 2 » |