2017-09-14 1 views
0

J'ai trois grands groupes d'entiers que j'aimerais ajouter à différentes lignes d'un tableau. Ces entiers sont définis comme suit:Affectation d'éléments définis à un tableau 2D C

#define APARTMENT1_USAGES {0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.111, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.065, 0.167, 0, 0, 0, 0.048, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0} 
    #define APARTMENT2_USAGES {0, 0, 0, 0, 0, 0, 0, 0.130, 0, 0, 0, 0, 0, 0.176, 0, 0.125, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.161, 0.000, 0.039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0.000, 0.109, 0, 0.032, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.152, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0.135, 0, 0, 0, 0, 0, 0, 0, 0, 0.100, 0, 0, 0.063, 0, 0, 0, 0, 0.000, 0, 0.025, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0.000, 0, 0, 0, 0, 0, 0.378, 0, 0.147, 0.229} 
    #define APARTMENT3_USAGES {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0, 0, 0, 0, 0, 0.000, 0, 0, 0, 0.01, 0.01, 0.02, 0.03, 0.03, 0, 0, 0, 0, 0.088, 0, 0} 

Je raccourci ces juste pour montrer l'idée, ils sont généralement des éléments 30x24. Ce que j'essaie de faire est de charger chacun d'entre eux dans une rangée d'un tableau 2D, mais je reçois une erreur de syntaxe sans explication. Je l'ai essayé comme suit:

double apartmentUsage[3][30*24]; 
apartmentUsage[1][30*24] = APARTMENT1_USAGES; 
apartmentUsage[2][30*24] = APARTMENT2_USAGES; 
apartmentUsage[3][30*24] = APARTMENT3_USAGES; 
+2

'double apartmentUsage [3] [30 * 24] = {APPARTEMENT1_USAGES, APPARTEMENT2_USAGES, APPARTEMENT3_USAGES};'. Vous devez le faire dans l'initialisation. – mch

Répondre

0

L'une des erreurs que vous faites face est la suivante: Si vous définissez array[3], vous pouvez avoir trois valeurs stockées dans array[0], array[1] et array[2]. Dans votre code. est défini comme apartmentUsage[3][..] mais commence par 1. devrait être comme this-

int multiply=30*24; 
apartmentUsage[0][multiply] = APARTMENT1_USAGES; 
apartmentUsage[1][multiply] = APARTMENT2_USAGES; 
apartmentUsage[2][multiply] = APARTMENT3_USAGES; 

**BUT** cela aussi résoudra pas complètement votre problème. Essayez le faire dans l'initialisation elle-même comme indiqué dans les commentaires - double apartmentUsage[3][multiply] = {APARTMENT1_USAGES, APARTMENT2_USAGES, APARTMENT3_USAGES};

+1

L'utilisation de '30 * 24' est probablement préférable à l'utilisation de' multiply' car ce dernier fait du tableau un VLA (tableau de longueur variable), alors que le premier en fait un tableau régulier de taille fixe. –