Erreur d'une borne sur tableau [Résolu]

Signaler
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
3 janvier 2021
-
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
3 janvier 2021
-
Bonjour,

L'index 2 est en dehors de la plage d'index valide 0 à 1

Où est mon erreur merci cordialement ?

int const maxsize = 2;
    char idcube[maxsize];
    idcube[0] = "a";
    idcube[1] = "b";
    idcube[2] = "c";
 
    int timer = 0;
    int amplificatoum = 0;
    if (nombre > 0)
    {
        while (timer < nombre)
        {
            cout << "nombres de cube construit: " << idcube[amplificatoum] << endl;
            timer = timer + 1;
            amplificatoum = amplificatoum + 1;
        }
    }

6 réponses

Messages postés
569
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
3 janvier 2021
2
const int amaxsize = 5;
int timer = 0;
int amplificatoum = 0;
int essai()
{
int hr;
 char aidcube[amaxsize];
aidcube[1] = 'b';
aidcube[2] = 'c';   // >>>>>>>>>' au lieu de " <<<<<<<<<<<<<
hr=0;
return hr;
Messages postés
15346
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
5 janvier 2021
494
Bonsoir

autant pour l'un qui débute sur le forum et pour l'autre dont ce n'est pas le cas, pour poster un code il faut faire comme décrit là https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Ca devrait ressembler à
bool balisesBienUtilsees = true;

if(balisesBienUtilsees)
{
       cout << "Oh, y'a de la couleur, l'indentation et les numéros de lignes" << endl;
}


@ToutEnMasm, effectivement il y a cette erreur aussi, mais ce n'est pas la première détectée par le compilateur puisque le message d'erreur est
L'index 2 est en dehors de la plage d'index valide 0 à 1 ?


@xkill, quand tu définis un tableau, tu lui donnes le nombre d'éléments qu'il peut recevoir.

donc avec
int const maxsize = 2;
char idcube[maxsize];

Le tableau peut recevoir 2 éléments, celui qui sera "rangé", "contenu" à l'index 0 et celui qui sera contenu à l'index 1.
Pour pouvoir accéder à l'index 2, il faut que le tableau contienne au moins 3 éléments.

Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
5 janvier 2021
114
Bonjour.

J'ai edité le post pour le remettre au propre. Merci de faire attention la prochaine fois.
Pour les erreurs, regarde les deux commentaires ci-dessus. Pour le code, voici une version propre:
#include <iostream>

int main()
{
  const int maxsize = 3;
  const char idcube[maxsize] = {'a', 'b', 'c'};

  for (int i = 0; i < maxsize; ++i)
  {
    std::cout << "Nombres de cubes construits: " << idcube[i] << std::endl;
  }

  return 0;
}
Messages postés
569
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
3 janvier 2021
2
La version avec std::cout est certes pratique mais ne permet
pas de manipuler des bytes(char) dans un prog.
Je préfère celle la:

#include <stdio.h>
#include <conio.h>

int main()
{
int  caracter=0;
char  * pcaracter;
int hr;
char aidcube[maxsize];
aidcube[0] = 'a';
aidcube[1] = 'b';
aidcube[2] = 'c';   // >>>>>>>>>' au lieu de " <<<<<<<<<<<<<
aidcube[3] = 'D';   
aidcube[4] = 'e';   
aidcube[5] = 'f';  
aidcube[6] = 'g';   
aidcube[7] = 'h';   // dur dur ici,dépassement capacité sans erreur

for (int i = 0; i < maxsize; ++i)
{
	pcaracter=&aidcube[i];
	caracter =(char) * pcaracter; //reduction a chaine zero terminate
	printf("aidcube numero:%d  chaine= %s \n",i,&caracter);
}
_getch();
hr=0;
return hr;
}
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
5 janvier 2021
114
La version avec std::cout est certes pratique mais ne permet
pas de manipuler des bytes(char) dans un prog.

Hein ? C'est pourtant ce que fait std::cout ...

pcaracter=&aidcube[i];
caracter =(char) * pcaracter; //reduction a chaine zero terminate
printf("aidcube numero:%d chaine= %s \n",i,&caracter);

Pourquoi passer pas des chaines pour afficher des caractères ?
printf("aidcube numero:%d  chaine= %c \n", i, aidccube[i]);
// ou
std::cout << "aidcube numero:" << i << " chaine= " << aidccube[i] << std::endl;
// On aurait même pu écrire si on voulait vraiment passer par des conversions:
std::cout << "aidcube numero:" << i << " chaine= " << &caracter << std::endl;
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
3 janvier 2021

 

char s3[100] = { 'b','o' }; 
string s3[100] = { "abc","o" }; 
char s3[100] = "abc" ; 
string abc = "abc";
string s3[10] = { abc };








cette galère serieux