Erreur d'une borne sur tableau

Résolu
xkill2005
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
19 février 2021
- Modifié le 26 déc. 2020 à 11:58
xkill2005
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
19 février 2021
- 22 déc. 2020 à 21:06
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

ToutEnMasm
Messages postés
590
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 septembre 2021
3
Modifié le 21 déc. 2020 à 23:28
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;
0
Whismeril
Messages postés
17482
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
3 juillet 2022
600
21 déc. 2020 à 19:01
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.

0
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
21 déc. 2020 à 21:37
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;
}
0
ToutEnMasm
Messages postés
590
Date d'inscription
jeudi 28 novembre 2002
Statut
Membre
Dernière intervention
18 septembre 2021
3
22 déc. 2020 à 17:51
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;
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cptpingu
Messages postés
3834
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
20 octobre 2021
124
Modifié le 22 déc. 2020 à 19:18
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;
0
xkill2005
Messages postés
20
Date d'inscription
lundi 14 décembre 2020
Statut
Membre
Dernière intervention
19 février 2021

Modifié le 22 déc. 2020 à 21:21
 

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
0