fbpx
Skip to main content

[c++] Sommare double a elemento array- Per Esperti

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME Autore della discussione
  • Visitatori
  • Visitatori
20 Anni 9 Mesi fa #8852 da COM_EASYSOCIAL_GUEST_NAME
[c++] Sommare double a elemento array- Per Esperti è stato creato da COM_EASYSOCIAL_GUEST_NAME
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; }
double Get(int i, int j) { return mioarray; }
void Set(int i, double Val) { mioarray = Val; }
void Set(int i, int j, double Val) { mioarray = 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);
}

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 9 Mesi fa #8878 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [c++] Sommare double a elemento array- Per Esperti

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.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 5 Mesi fa #13366 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [c++] Sommare double a elemento array- Per Esperti
: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

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • COM_EASYSOCIAL_GUEST_NAME
  • Avatar di COM_EASYSOCIAL_GUEST_NAME
  • Visitatori
  • Visitatori
20 Anni 2 Mesi fa #15574 da COM_EASYSOCIAL_GUEST_NAME
Risposta da COM_EASYSOCIAL_GUEST_NAME al topic [c++] Sommare double a elemento array- Per Esperti
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

Si prega Accedi o Crea un account a partecipare alla conversazione.