Matrices

Fermé
Cristagide2b - Modifié le 26 janv. 2019 à 20:09
Cristagide2b Messages postés 2 Date d'inscription samedi 26 janvier 2019 Statut Membre Dernière intervention 26 janvier 2019 - 26 janv. 2019 à 21:31
Bonjour,

J'ai écris un programme qui permet de lire une matrice de 3 lignes et 3 colonnes. Mais voilà lorsque j'arrive à la saisie de la valeur [3][1], je rentre un nombre et après rien du tout. Le programme s'arrête.

Est-ce que quelqu'un pourrait m'aider ? Voici mon code :

#include <stdio.h>
#include <string.h>

int main()
{
int M1[2][2];
//int M2[2][2];
//int M3[2][2];
int i, j;
printf("Bonjour, veuillez entrer les valeurs de la première matrice, de ligne en ligne :\n\n");
for(i=0;i<=2;i++){
for(j=0;j<=2;j++){
printf("Valeur [%d][%d] : ", i+1, j+1);
scanf("%d", &M1[i][j]);
}
}
return 0;
}



Merci d'avance !

Configuration: Windows / Edge 17.17134

1 réponse

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
26 janv. 2019 à 20:57
int M1[2][2];
signifie
int M1[0..1][0..1];
Donc tu tapes hors du tableau, stack overflow et erreur, encore une "chance" que tu n'ai pas de Segfault ou similaire.
0
Cristagide2b Messages postés 2 Date d'inscription samedi 26 janvier 2019 Statut Membre Dernière intervention 26 janvier 2019
26 janv. 2019 à 21:06
Merci. Ce qui nous a été dis en cours n'était pas du tout ça. Apparemment quand on initialise un tableau, en algorithme on le présente sous la forme : T[1..3] et en C : T[2] puisque ça commence à 0, 1, 2... Je ne comprends pas pourquoi 2 n'est pas pris en compte ?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 331
26 janv. 2019 à 21:30
Car Tab[2] définit un tableau de 2 éléments, et comme on part de 0, ça fait 0..1
0
Cristagide2b Messages postés 2 Date d'inscription samedi 26 janvier 2019 Statut Membre Dernière intervention 26 janvier 2019
26 janv. 2019 à 21:31
Daccord je comprends mieux. Merci beaucoup !
0