IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

invalid types { double}[int]' for array subscript


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Octobre 2013
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 18
    Par défaut invalid types { double}[int]' for array subscript
    Salut,j'ai entrain de créer un programme de multiplication vecteurs . comme entrées j'ai (double a[10] et double b[10]) et sortie double c[10]. lorsque je compile mon programme . j'ai cette erreur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    :28: error: invalid types 'mat_prod {aka double}[int]' for array subscript
    dans la ligne 28 : hw_result[i][j] != sw_result[i][j]. j'ai pas compris d'ou elle vient cette erreur.
    merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    #include <iostream>
    #include "matrix_mult.h"
     
    using namespace std;
     
    int main(double c)
    {
       mat_a in_mat_a[10] = {1,1,2,3,4,5,6,7,8,9};
       mat_b in_mat_b[10] = {9,8,7,6,5,4,3,2,1,1};
       mat_prod hw_result[10], sw_result[10];
       int error_count = 0;
     
       // Generate the expected result
       // Iterate over the rows of the A matrix
       for(int i = 0; i < 9; i++) {
          for(int j = 0; j < 9; j++) {
             // Iterate over the columns of the B matrix
              int k ;
             sw_result[k] = 0;
             // Do the inner product of a row of A and col of B
             for(int k = 0; k < 9; k++) {
                sw_result[k] = in_mat_a[i] * in_mat_b[j];
             }
          }
       }
     
    #ifdef HW_COSIM
       // Run the Vivado HLS matrix multiplier
       matrix_mult(in_mat_a, in_mat_b, hw_result);
    #endif
     
       // Print product matrix
       for (int i = 0; i < 9; i++) {
          for (int j = 0; j < 9; i++) {
    #ifdef HW_COSIM
     
             // Check result of HLS vs. expected
             if (hw_result[i][j] != sw_result[i][j]) {
                error_count++;
             }
    #else
             cout << sw_result[i][j];
    #endif
          }
       }
     
    #ifdef HW_COSIM
       if (error_count)
          cout << "TEST FAIL: " << error_count << "Results do not match!" << endl;
       else
          cout << "Test passed!" << endl;
    #endif
       return error_count;
    }
    vector multiplication

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Pas mal d'erreurs en plus de celle du compilateur…

    Les deux formes que peut prendre la fonction main() sont :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int main(int argc, char *argv[])
    Si tu espères récupérer un double en entrée, c'est cette seconde forme qu'il faudra utiliser. Cf. Comment accéder aux paramètres de la ligne de commande ?
    Après t'être assuré que le paramètre a bien été passé, tu pourras utiliser std::stod.

    Tu as des tableaux de taille 10, mais des boucles for(int i = 0; i < 9; i++) { : il te manque le dernier élément d'indice 9.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
              int k ;
             sw_result[k] = 0;
             // Do the inner product of a row of A and col of B
             for(int k = 0; k < 9; k++) {
                sw_result[k] = in_mat_a[i] * in_mat_b[j];
             }
    Tu as deux variables int k ici, et la première n'est pas initialisée !

    Pour en revenir à l'erreur que tu obtiens, tu trouveras l'explication par ici (cas n°2).
    La partie mat_prod {aka double} nous renseigne sur le fait que mat_prod est en fait un alias du type double, et la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mat_prod hw_result[10], sw_result[10];
    reviens donc à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double hw_result[10], sw_result[10];
    soit des tableaux d'une seule dimension.
    Dernière modification par Invité ; 08/05/2018 à 13h58.

Discussions similaires

  1. erreur :invalid types ‘bool[int]’ for array subscript
    Par ferhat.adel dans le forum Débuter
    Réponses: 1
    Dernier message: 10/06/2013, 18h56
  2. Erreur : invalid types «int[int]» for array subscript
    Par fabrice91 dans le forum Débuter
    Réponses: 9
    Dernier message: 01/10/2010, 16h00
  3. Réponses: 0
    Dernier message: 26/08/2009, 15h59
  4. wscompile : invalid type for JAX-RPC structure
    Par Marthym dans le forum Services Web
    Réponses: 2
    Dernier message: 28/06/2007, 11h46
  5. Array subscript has type 'char'
    Par obelix dans le forum C
    Réponses: 11
    Dernier message: 31/10/2005, 18h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo