Nowe posty

Autor Wątek: funkcja - gdzie jest blad  (Przeczytany 2453 razy)

Gosik

  • Gość
funkcja - gdzie jest blad
« dnia: 2013-01-30, 09:29:18 »
Witajcie!
Przpisuje kod z Fortrana na C++ i mam problem z nastepujaca funkcja:

void FOK(double **G)
 {
  double **P;
  P = new double *[2]; for (int i = 0; i < 2; i++) P[i] = new double [2];
 
 
   double *****TT;

   TT = new double ****[2];
  for (int i = 0; i < 2; i++)
  {
   TT[i] = new double ***[2];
   for (int j = 0; j < 2; j++)
   {
    TT[i][j] = new double **[2];
    for (int k = 0; k < 2; k++)
     {
      TT[i][j][k] = new double *[2];
      for (int l = 0; l<2; l++) TT[i][j][k][l] = new double [2];

   }
  }
}
 
 
  for (int i = 0; i < 2; i++)
  for (int j = 0; j < 2; j++)
  {
   G[i][j] = 0;
   for (int k = 0; k < 2; k++)
   for (int l = 0; l < 2; l++)
G[i][j] = G[i][j] + P[k][l] * (TT[i][j][k][l] - (0.5 * TT[i][j][k][l]));
  }
 }
Wsykakuje mi blad:
invalid operands of types ‘double’ and ‘double*’ to binary ‘operator*’


Gdzie lezy moj blad w tym kodzie lub w moim rozumowaniu?

chmooreck

  • Gość
funkcja - gdzie jest blad
« Odpowiedź #1 dnia: 2013-01-30, 11:05:30 »
TT[j][k][l] to jest wskaźnik na double'a (double *)

P.S. Oczywiście w Twoim kodzie zwalniasz tą pamięć przed opuszczeniem funkcji ?
PS.2 nie prościej to zadeklarować TT[2][2][2][2][2] (chyba, że rozmiary tablic=2 są tylko uproszczeniem na potrzeby przedstawienia kodu na forum) ?

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3068
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
funkcja - gdzie jest blad
« Odpowiedź #2 dnia: 2013-01-30, 11:37:44 »
OT: Kompiluj kompilatorem CLANG, tam komunikaty błędów są dużo dokładniejsze i generalnie "na temat". GCC generuje szybszy kod, więc developerkę warto robić na CLANGu a finalną kompilację na GCC, jak kod CLANGowy jest za wolny.
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy