Pokaż wyniki 1 do 2 z 2

Temat: funkcja - gdzie jest blad

  1. #1
    Zarejestrowany
    Nov 2012
    Postów
    95

    Domyślnie funkcja - gdzie jest blad

    Witajcie!
    Przpisuje kod z Fortrana na C++ i mam problem z nastepujaca funkcja:

    Kod:
    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?

  2. #2
    Zarejestrowany
    Jan 2008
    Skąd
    za NATem :)
    Postów
    155

    Question

    Próbujesz pomnożyć double przez wskaźnik do double.
    Kod:
    G[i][j] = G[i][j] + P[k][l] * (TT[i][j][k][l] - (0.5 * TT[i][j][k][l]));
    W TT, double masz na piątym poziomie, a na czwartym double*.
    Zauważyłem, że wszystkie wymiary masz podane bezpośrednio, nie możesz zrobić po prostu double TT[2][2][2][2][2]; No chyba, że bardzo nie lubisz cache'u
    I po co Ci aż tyle wymiarów
    Nie zauważyłem, żebyś zwalniał gdzieś tą pamięć.
    Nie wypełniasz też najniższego poziomu jakimiś sensownymi wartościami, a wykonujesz na nich operacje, których wyniki zapisujesz pod G.
    Ta funkcja ma w ogóle czemukolwiek sensownemu służyć
    Ostatnio edytowane przez Rolek : 01-30-2013 - 15:09
    Niniejszy post przedstawia opinie autora w dniu dzisiejszym, na datę jego publikacji. Nie mogą być one wykorzystane przeciwko niemu w dniu jutrzejszym, ani innym następującym po nim dniu. Autor zastrzega sobie prawo do zmiany poglądów bez podawania przyczyn.

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj