Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++]Problema Operatore Matrix Programmazione ad Oggetti

    Salve a tutti e scusatemi l'ora,
    Questo è il mio primo post qui e siccome mi sembrava un sito molto affidabile ho deciso di chiedere a voi ,
    Comunque bando alle ciance ,
    Stavo facendo questo programma alquanto banale , vi giuro che cercando su questo forum non ho trovato nulla a riguardo , le guide sono utili a grandi linee.....comunque , quando finisce il programma dice:

    This application has requested the Runtime to terminate it in an unusual way.
    Please contact the application's support team for more information




    Vabbè , se mi potete aiutare ve ne sarei grato perchè sarei molto interessato a capire che genere di errore ho fatto.....

    Questo è il codice:
    #include<iostream>;
    using namespace std;

    int x,y;

    class matrix
    {
    double** mat;
    int r,c,who;
    public:
    matrix(int a,int b);
    ~matrix();
    void set();
    void print();
    matrix(const matrix &ob);
    matrix operator+(matrix op2);
    matrix operator=(matrix op2);
    matrix operator-(matrix op2);

    };

    matrix::matrix(int a,int b)
    {
    r=a;
    c=b;
    mat=new double*[r];
    for(int i=0;i<r;i++)
    mat[i]=new double [c];
    for(int i=0;i<r;i++)
    for(int j=0;j<c;j++)
    mat[i][j]=0;
    }

    //non sono sicuro che questo costruttore di copia sia scritto nel modo corretto!!
    //non so se in questo contesto possa servire, anche se ho fatto delle allocazioni dinamiche!
    matrix::matrix(const matrix &ob)
    {
    mat=new double*[r];
    *mat=*ob.mat;
    for(int i=0;i<r;i++){
    mat[i]=new double [c];
    *mat[i]=*ob.mat[i];
    }
    cout << "E stato chiamato il costr di copia.\n";
    }

    matrix::~matrix()
    {
    for(int i=0;i<r;i++)
    delete [] mat[i];
    delete [] mat;
    }

    void matrix::set()
    {
    for(int i=0;i<r;i++){
    cout<<"inserire la riga "<<i+1<<":\n";
    for(int j=0;j<c;j++)
    cin>>mat[i][j];
    }

    }


    void matrix:rint()
    {
    cout<<"La matrice e:\n";
    for(int i=0;i<r;i++){
    for(int j=0;j<c;j++)
    cout<<"\t"<<mat[i][j];
    cout<<"\n";
    }

    }



    matrix matrix:perator+(matrix op2)
    {
    matrix temp(x,y);

    for(int i=0;i<r;i++)
    for(int j=0;j<c;j++)
    temp.mat[i][j]=mat[i][j]+op2.mat[i][j];
    return temp;
    }

    matrix matrix:perator=(matrix op2)
    {
    for(int i=0;i<r;i++)
    for(int j=0;j<c;j++)
    mat[i][j]=op2.mat[i][j];
    return *this;
    }

    matrix matrix:perator-(matrix op2)
    {
    matrix temp(x,y);

    for(int i=0;i<r;i++)
    for(int j=0;j<c;j++)
    temp.mat[i][j]=mat[i][j]-op2.mat[i][j];
    return temp;
    }

    int main()
    {
    int z;

    cout<<"inserire la dim.riga della matrice:\n";
    cin>>x;
    cout<<"inserire la dim.colonna della prima matrice:\n";
    cin>>y;
    matrix a(x,y),b(x,y),c(x,y);
    a.set();
    b.set();
    a.print();
    b.print();

    c=a+b;
    c.print();

    cin>>z;
    return 0;
    }
    Grazie a tutti in anticipo
    Ciao a tutti

  2. #2
    Up
    Ciao a tutti

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,565
    Il costruttore di copia è sbagliato.
    c non è inizializzato e vale -898932 e da quindi un bell'errore.
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

  4. #4
    Ah grazie mille ma mi potresti dire come lo potrei scrivere meglio ?
    Perchè sennò lo rifarei nella stessa maniera e punto e daccapo xD
    Grazie mille Wolwerine
    Ciao a tutti

  5. #5
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Dovrebbe bastare:
    codice:
    matrix::matrix(const matrix &ob)  : r(ob.r), c(ob.c)
    {
    etc...
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  6. #6
    Troppo gentili ,
    Non volevo che voi pensasse che volessi la pappa già bella e pronta era solo per completezza della risposta e che non dasse adito a doppie e triple interpretazioni

    Grazie ancora
    Ciao a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.