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

Wskaźniki z dwoma gwiazdkami

Ostatnio zmodyfikowano 2014-03-12 11:27
Autor Wiadomość
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.
C/C++
#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;
}
P-106151
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.
P-106152
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
P-106154
1 2 « 3 »
Poprzednia strona Strona 3 z 3