Zwrócenie tablicy dwuwymiarowej.
Ostatnio zmodyfikowano 2013-06-30 13:51
Lee5.56 Temat założony przez niniejszego użytkownika |
Zwrócenie tablicy dwuwymiarowej. » 2013-06-26 19:20:29 Witam. Wiem że pisałem już o to ale nie otrzymałem odpowiedzi a muszę szybko skończyć ten program. Mianowicie piszę program mnożący dwie macierze w visual studio c++ pod okienka. Macierze to tablice dwuwymiarowe, mnożę je w funkcji i nie wiem jak z niej zwrócić obliczoną macierz wyjściową. I jeszcze chciałbym ją przekształcić te tablice na string. Moja funkcja wygląda tak : double mnozenie_mac( double Mac_1[ 2 ][ 2 ], double Mac_2[ 2 ][ 2 ] ) { double mac_wynik[ 2 ][ 2 ]; int i, k, w; for( i = 0; i <= 2; i++ ) { for( k = 0; k <= 2; k++ ) { for( w = 0; w <= 2; w++ ) { mac_wynik[ i ][ k ] += Mac_1[ i ][ w ] * Mac_2[ w ][ k ]; } } } return mac_wynik; } I następnie chciałbym wyświetlić te macierz przy użyciu MessageBox::Show w taki sposób: String ^ komunikat = "Macierz wynosi"; komunikat += mnozenie_mac( Mac_1, Mac_2 );
MessageBox::Show( komunikat, "Okno" ); Z góry dzięki za pomoc. |
|
MrPoxipol |
» 2013-06-28 11:24:31 Dodaj do argumentów funkcji: double mac_wynik[ 2 ][ 2 ]; , nic nie zwracaj. I tak nie wyświetlisz tablicy liczbowej jak napisałeś niżej. Nie zamieniasz tablicy na string. Porównaj ze swoim kodem. string komunikat = "Macierz wynosi: "; double mac_wynik[ 2 ][ 2 ]; mnozenie_mac( Mac_1, Mac_2, mac_wynik );
for( int i = 0; i < 2; ++i ) { for( int j = 0; j < 2; ++j ) { std::ostringstream o; o << mac_wynik[ j ][ i ]; kom += o.str(); } } MessageBox( NULL, kom.c_str(), "Komunikat", MB_OK );
|
|
pekfos |
» 2013-06-28 11:44:35 I następnie chciałbym wyświetlić te macierz przy użyciu MessageBox::Show w taki sposób: |
Ten sposób nie wygląda, na napisany w C++. |
|
akwes |
» 2013-06-30 13:51:50 @pekfos w visual studio c++ pod okienka.
|
C++/CLI @Lee5.56 int na String możesz zamienić tak int num = int::Parse( str );
A jeżeli chodzi o odbieranie tablicy to możesz zrobić to na kilka sposobów. Np: 1. Przez parametry funkcji void mnozenie_mac( const double input_mac1[ 2 ][ 2 ], const dobule input_mac[ 2 ][ 2 ], double output_mac[ 2 ][ 2 ] );
Wtedy do funkcji przesyłasz 3 macierze. Dwie do obliczeń a trzecią pustą, w której zapisane będą wyniki. 2. Zrobienie obiektu struct macBox { double mac[ 2 ][ 2 ]; };
macBox mnozenie_mac( const macBox m1, const macBox m2 );
Natomiast jeżeli chcesz aby ten kod działał: komunikat += mnozenie_mac( Mac_1, Mac_2 );
To funkcja mnozenie_mac musi zwracać System::String, albo znać konwersję do System::String. A najlepiej by było gdybyś zrobił funkcję System::String ^ macToString( const double mac[ 2 ][ 2 ] );
double mac1[ 2 ][ 2 ];
mnozenie_mac( macA, macB, mac1 ); String ^ komunikat = "Mnozenie macierzy "; komunikat += macToString( mac1 );
|
|
« 1 » |