J'obtiens l'erreur C++ suivante:
array must be initialized with a brace enclosed initializer
De cette ligne de C++
int cipher[Array_size][Array_size];
Quel est le problème ici? Que signifie l'erreur? Voici le code complet:
string decryption(string todecrypt)
{
int cipher[Array_size][Array_size] = 0;
string ciphercode = todecrypt.substr(0,3);
todecrypt.erase(0,3);
decodecipher(ciphercode,cipher);
string decrypted = "";
while(todecrypt.length()>0)
{
string unit_decrypt = todecrypt.substr(0,Array_size);
todecrypt.erase(0,Array_size);
int tomultiply[Array_size]=0;
for(int i = 0; i < Array_size; i++)
{
tomultiply[i] = int(unit_encrypt.substr(0,1));
unit_encrypt.erase(0,1);
}
for(int i = 0; i < Array_size; i++)
{
int resultchar = 0;
for(int j = 0; j<Array_size; j++)
{
resultchar += tomultiply[j]*cipher[i][j];
}
decrypted += char((resultchar%229)-26);
}
}
return decrypted;
}
La syntaxe pour initialiser statiquement un tableau utilise des accolades, comme ceci:
int array[10] = { 0 };
Cela initialisera le tableau à zéro.
Pour les tableaux multidimensionnels, vous avez besoin d'accolades imbriquées, comme ceci:
int cipher[Array_size][Array_size]= { { 0 } };
Notez que Array_size
doit être une constante de compilation pour que cela fonctionne. Si Array_size
n'est pas connu au moment de la compilation, vous devez utiliser l'initialisation dynamique. (De préférence, un std::vector
).
Vous ne pouvez pas initialiser un tableau à '0' comme ça
int cipher[Array_size][Array_size]=0;
Vous pouvez soit initialiser toutes les valeurs du tableau lorsque vous le déclarez comme ceci:
// When using different values
int a[3] = {10,20,30};
// When using the same value for all members
int a[3] = {0};
// When using same value for all members in a 2D array
int a[Array_size][Array_size] = { { 0 } };
Ou vous devez initialiser les valeurs après la déclaration. Si vous voulez initialiser toutes les valeurs à 0 par exemple, vous pouvez faire quelque chose comme:
for (int i = 0; i < Array_size; i++ ) {
a[i] = 0;
}
Vous ne pouvez pas initialiser des tableaux comme celui-ci:
int cipher[Array_size][Array_size]=0;
La syntaxe des tableaux 2D est la suivante:
int cipher[Array_size][Array_size]={{0}};
Notez les accolades sur le côté droit de l'instruction d'initialisation.
pour les matrices 1D:
int tomultiply[Array_size]={0};