Problem z zwracaniem dynamicznej tablicy dwuwymiraowej przez funkcję
Ostatnio zmodyfikowano 2016-03-05 19:44
Masmix Temat założony przez niniejszego użytkownika |
Problem z zwracaniem dynamicznej tablicy dwuwymiraowej przez funkcję » 2016-03-05 18:42:51 Witam! Tak jak już napisałem w temacie, mam problem ze zwróceniem tablicy dwuwymiarowej przez funkcję, tak aby można było gdzie indziej jej użyć. Napisałem w mainie tworzenie macierzy, a w funkcji "fun" jest wpisywanie do tej macierzy liczb. Więc moje pytanie brzmi, czy ktoś mógłby mi napisać jak mogę zwrócić tą macierz przez funkcję "fun" ? Z góry dzięki :) #include <iostream> #include <cstdlib> using namespace std; int fun( double ** tablica, int MAX1, int MAX2, double dana );
int main() { int MAX1, MAX2; double dana; cout << " Podaj ilosc wierszy " << endl; cin >> MAX1; double ** tablica = new double *[ MAX1 ]; cout << " Podaj ilosc kolumn " << endl; cin >> MAX2; for( int i = 0; i < MAX1; i++ ) { tablica[ i ] = new double[ MAX2 ]; } fun( tablica, MAX1, MAX2, dana ); } int fun( double ** tablica, int MAX1, int MAX2, double dana ) { for( int i = 0; i < MAX1; i++ ) { tablica[ i ] = new double[ MAX2 ]; for( int j = 0; j < MAX2; j++ ) { cout << " Podaj dana dla Tablica[" << i << "][" << j << "]" << endl; cin >> dana; tablica[ i ][ j ] = dana; cout << " Dana dla Tablica[" << i << "][" << j << "] wynosi " << tablica[ i ][ j ] << endl << endl; } } cout << "Dane w macierzy: " << endl; for( int i = 0; i < MAX1; i++ ) { for( int j = 0; j < MAX2; j++ ) { cout.width( 10 ); cout << tablica[ i ][ j ] << " "; } cout << endl << endl; } }
|
|
mateczek |
» 2016-03-05 18:53:40 wstaw kod w znaczniki [cpp] tutaj kod [/cpp]
|
|
Masmix Temat założony przez niniejszego użytkownika |
» 2016-03-05 18:55:39 #include <iostream> #include <cstdlib> using namespace std; int fun( double ** tablica, int MAX1, int MAX2, double dana );
int main() { int MAX1, MAX2; double dana; cout << " Podaj ilosc wierszy " << endl; cin >> MAX1; double ** tablica = new double *[ MAX1 ]; cout << " Podaj ilosc kolumn " << endl; cin >> MAX2; for( int i = 0; i < MAX1; i++ ) { tablica[ i ] = new double[ MAX2 ]; } fun( tablica, MAX1, MAX2, dana ); } int fun( double ** tablica, int MAX1, int MAX2, double dana ) { for( int i = 0; i < MAX1; i++ ) { tablica[ i ] = new double[ MAX2 ]; for( int j = 0; j < MAX2; j++ ) { cout << " Podaj dana dla Tablica[" << i << "][" << j << "]" << endl; cin >> dana; tablica[ i ][ j ] = dana; cout << " Dana dla Tablica[" << i << "][" << j << "] wynosi " << tablica[ i ][ j ] << endl << endl; } } cout << "Dane w macierzy: " << endl; for( int i = 0; i < MAX1; i++ ) { for( int j = 0; j < MAX2; j++ ) { cout.width( 10 ); cout << tablica[ i ][ j ] << " "; } cout << endl << endl; } }
|
|
mateczek |
» 2016-03-05 19:22:36 1. twój kod działa !!! 2. funkcja "fun" nic nie zwraca!!! 3. połowę tablicy tworzysz poza funkcją drugą połowę w main 4. w twoim kodzie nic z funkcji zwracać nie musisz masz przecież wskaźnik na tablicę w main!!! 4 masz wycieki pamięci bo nie zwolniłeś tablicy !!!! 5 zobacz ten kod bo prawdę mówiąc nie bardzo wiem co chcesz osiągnąć !!! #include <iostream> #include <cstdlib> using namespace std; double ** fun( int wiersze, int kolumny );
int main() { int wiersze, kolumny; cin >> wiersze >> kolumny; double ** tablica = fun( wiersze, kolumny ); cout << "Dane w macierzy: " << endl; for( int i = 0; i < wiersze; i++ ) { for( int j = 0; j < kolumny; j++ ) { cout.width( 10 ); cout << tablica[ i ][ j ] << " "; } cout << endl << endl; } for( int i = 0; i < wiersze; i++ ) { delete[] tablica[ i ]; } delete[] tablica; }
double ** fun( int wiersze, int kolumny ) { double ** tab = new double *[ wiersze ]; int dana; for( int i = 0; i < wiersze; i++ ) { tab[ i ] = new double[ kolumny ]; for( int j = 0; j < kolumny; j++ ) { cout << " Podaj dana dla Tablica[" << i << "][" << j << "]" << endl; cin >> dana; tab[ i ][ j ] = dana; cout << " Dana dla Tablica[" << i << "][" << j << "] wynosi " << tab[ i ][ j ] << endl << endl; } } return tab; }
|
|
Masmix Temat założony przez niniejszego użytkownika |
» 2016-03-05 19:44:22 Przyznaję rację, spieprzyłem. Kopiowałem kod na szybko i nie sprawdziłem dokładnie czy działa. Troszkę pogłówkowałem i problem sam się rozwiązał, także dzięki za poświęcony czas . |
|
« 1 » |