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

[C++] Przekazywanie dwuwymiarowej tablicy do funkcji

Ostatnio zmodyfikowano 2014-01-01 22:27
Autor Wiadomość
pekfos
» 2014-01-01 19:30:12
Tworzysz nową tablicę, zamiast użyć istniejącej.
P-100873
Tym3k
Temat założony przez niniejszego użytkownika
» 2014-01-01 20:19:24
C/C++
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?
P-100885
Tym3k
Temat założony przez niniejszego użytkownika
» 2014-01-01 22:27:30
C/C++
#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 ]; //<-------- PIERWSZY!
    srand( time( 0 ) );
    for( int i = 0; i < n; i++ )
    {
        tab[ i ] = new int[ n ]; //<--------------- ODWOŁANIE DO DRUGIEGO WYMIARU !
        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
P-100901
1 « 2 »
Poprzednia strona Strona 2 z 2