Wskaźniki z dwoma gwiazdkami
Ostatnio zmodyfikowano 2014-03-12 11:27
mateuszq Temat założony przez niniejszego użytkownika |
» 2014-03-12 09:35:01 Wykonałem program który chciałem zrobić, dodawanie macierzy kwadratowej. Wstawiam poniżej kod, chciałbym prosić o jakąś opinie na jego temat, czy jest w nim coś co warto zmienić lub napisać w inny sposób? Juz pomijając estetyke chodzi mi o składnie kodu. #include<iostream> #include<conio.h>
using namespace std;
int ** generuj( int n ) { int ** tab; tab = new int *[ n ]; for( int k = 0; k < n; k++ ) { tab[ k ] = new int[ n ]; } for( int i = 0; i < n; i++ ) { for( int j = 0; j < n; j++ ) { tab[ i ][ j ] = 10 + i; } } return tab; }
void wypisz( int n, int ** tab ) { for( int i = 0; i < n; i++ ) { cout << endl; for( int j = 0; j < n; j++ ) { cout << tab[ i ][ j ] << " "; } } }
int ** suma( int n, int ** tab1, int ** tab2 ) { int ** tab; tab = new int *[ n ]; for( int k = 0; k < n; k++ ) { tab[ k ] = new int[ n ]; } for( int i = 0; i < n; i++ ) { for( int j = 0; j < n; j++ ) { tab[ i ][ j ] = tab1[ i ][ j ] + tab2[ i ][ j ]; } } return tab; }
int main() { int n = 0; int ** m1, ** m2, ** m3; cout << "podaj stopien macierzy: "; cin >> n; m1 = generuj( n ); wypisz( n, m1 ); cout << endl; m2 = generuj( n ); wypisz( n, m2 ); cout << endl; m3 = suma( n, m1, m2 ); wypisz( n, m3 ); for( int i = 0; i < n; i++ ) { delete[] m1[ i ]; delete[] m2[ i ]; delete[] m3[ i ]; } delete[] m1; delete[] m2; delete[] m3; _getch(); return 0; }
|
|
Monika90 |
» 2014-03-12 10:52:24 Tak się nie pisze programów w C++. W C++ należy zdefiniować klasę. Tak się nawet nie pisze w C, bo nawet C udostępnia pewne mechanizmy abstrakcji, np. funkcje i struktury.
Na dodatek gdy któraś z alokacji rzuci wyjątkiem, to masz wyciek pamięci.
|
|
mateuszq Temat założony przez niniejszego użytkownika |
» 2014-03-12 11:27:58 Jezeli chodzi o klasy swiadomie ich nie uzylem dopiero będe wkraczal w ten temat poniewaz jestem jeszcze poczatkujacy. Dlatego narazie moj kod jest dosyc prymitywny |
|
1 2 « 3 » |