Salve a tutti, ho un problema.
Non riesco a capire perchè il codice seguente, che effettua una somma di un valore double ad ogni componente di un array(metodo Add), non funziona. Chiedo aiuto
Grazie.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
class MYCLASS
{
private:
double *mioarray;
int c;
int d;
public:
MYCLASS()
{c = 0;
d = 0;
mioarray = 0x00;}
MYCLASS(int nc, int nr)
{d = nc;
c = nr;
mioarray = new double[d*c];}
// Genero un costruttore di copia
MYCLASS(const MYCLASS &ris)
{d = ris.d;
c = ris.c;
mioarray = new double[d*c];
int total = d * c;
for (int i=0;i<total;i++){Set(i,Get(i));}
}
MYCLASS Add(MYCLASS ris, double cosB)
{MYCLASS *risultato = new MYCLASS(ris.d,ris.c);
int num_pos = (risultato->d) * (risultato->c);
double Val;
double cosA;
for (int i=0;i<num_pos;i++)
{
cosA = ris.Get(i);
Val = cosA + cosB;
risultato->Set(i,Val);}
return *risultato;
}
double Get(int i) { return mioarray[i]; }
double Get(int i, int j) { return mioarray[i * d + j]; }
void Set(int i, double Val) { mioarray[i] = Val; }
void Set(int i, int j, double Val) { mioarray[i * d + j] = Val; }
};
void main()
{
MYCLASS *prova = new MYCLASS(2,2);
MYCLASS *prova1 = new MYCLASS(2,2);
double a = 1.00;
prova->Set(0,0,3.22);
prova->Set(0,1,5.60);
prova->Set(1,0,11.55);
prova->Set(1,1,12.32);
prova1->Add(*prova,a);
}
- andry80
- S.O.S. Computer
- Martedì, 08 Febbraio 2005
- Subscribe via email
Comment
There are no comments made yet.
Accepted Answer
Pending Moderation
Salve a tutti, ho un problema.
Non riesco a capire perchè il codice seguente, che effettua una somma di un valore double ad ogni componente di un array(metodo Add), non funziona. Chiedo aiuto
Grazie.
Che errore ti dà il compilatore? Per che esame ti serve?
Ti consiglierei, se non ottieni presto la soluzione su questo forum, di provare su quello di Ingegneria Informatica, decisamente più frequentato.
Comment
There are no comments made yet.
- more than a month ago
- S.O.S. Computer
- # 1
Accepted Answer
Pending Moderation
:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock: ho compilato il tuo codice e il mio COMPIUTER e' morto di MORTE VIOLENTA
D1O CI SCAMPI DALL'ALLOCAZIONE CIECA DELLA TALPA
D1O CI SCAMPI DALL'ALLOCAZIONE CIECA DELLA TALPA
Comment
There are no comments made yet.
- more than a month ago
- S.O.S. Computer
- # 2
Accepted Answer
Pending Moderation
So che la mia risposta nn è tempestiva...infatti la scrivo per pura informazione.magari potrebbe essere utile a qualcun'altro.
Cmq il tuo problema è semplicemente di puntatori..infatti avresti dovuto richiamare al funzione prova1->Add(*prova,a); (situata nella funzione main() ) come un semplice puntatore (e quindi cambiare anke l'header della funzione)
quindi in main avresti dovuto chiamare semplicemente
prova1->Add(prova,a);
e la suddetta funzione sarebbe diventata
MYCLASS Add(MYCLASS *ris, double cosB)
{
MYCLASS *risultato = new MYCLASS(ris->d,ris->c);
int num_pos = (risultato->d) * (risultato->c);
double Val;
double cosA;
for (int i=0;i<num_pos;i++)
{
cosA = ris->Get(i);
Val = cosA + cosB;
risultato->Set(i,Val);
}
return *risultato;
}
insomma,come ho detto un semplice problema di putatori :wink:
3nigma
Cmq il tuo problema è semplicemente di puntatori..infatti avresti dovuto richiamare al funzione prova1->Add(*prova,a); (situata nella funzione main() ) come un semplice puntatore (e quindi cambiare anke l'header della funzione)
quindi in main avresti dovuto chiamare semplicemente
prova1->Add(prova,a);
e la suddetta funzione sarebbe diventata
MYCLASS Add(MYCLASS *ris, double cosB)
{
MYCLASS *risultato = new MYCLASS(ris->d,ris->c);
int num_pos = (risultato->d) * (risultato->c);
double Val;
double cosA;
for (int i=0;i<num_pos;i++)
{
cosA = ris->Get(i);
Val = cosA + cosB;
risultato->Set(i,Val);
}
return *risultato;
}
insomma,come ho detto un semplice problema di putatori :wink:
3nigma
Comment
There are no comments made yet.
- more than a month ago
- S.O.S. Computer
- # 3
- Page :
- 1
There are no replies made for this post yet.
Be one of the first to reply to this post!
Be one of the first to reply to this post!
Please login to post a reply
You will need to be logged in to be able to post a reply. Login using the form on the right or register an account if you are new here. Register Here »