Comprend rien :-(

Résolu
cs_aciid_washor Messages postés 13 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 septembre 2008 - 6 avril 2005 à 17:40
cs_aciid_washor Messages postés 13 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 septembre 2008 - 7 avril 2005 à 08:39
Bonjour à tous,

j'ai un probleme avec un tableau... Je vais mettre mon code en C, ca sera plus clair...



#include<stdio.h>
#include<math.h>

#define N 3
#define M 3

float C[M][N];
int i,j,k,l;

main(){
i=1;
j=1;
while (i<N+1){
while (j<M+1){
C[i][j] = (i*j*(j+1)) / ((i+j-1)*(1- pow((2.0/3.0),(j+1))));
j++;
}
i++;
j=1;
}
for(i=1;i<N+1;i++){
for(j=1;j<M+1;j++){
printf("%f ", C[i][j]);
}
printf("\n");
}
}

Je compile, tout se passe bien...
Mais lorque je lance le "programme", j'ai pour le tableau C:
3.600000 4.263158 4.984615
3.600000 5.684210 7.476923
3.600000 6.394737 0.000000

Pourquoi est ce que la valeur C[3][3] est nulle??? alors que lorsque j'écris
le programme en pascal j'ai:
8.972307692307693?!

Merci d'avance pour toute piste...

4 réponses

skirby Messages postés 96 Date d'inscription vendredi 1 avril 2005 Statut Membre Dernière intervention 26 juillet 2007
6 avril 2005 à 17:54
Salut,



essaye ça



#include<stdio.h>

#include<math.h>

#include<windows.h>



#define N 3

#define M 3



float C[M][N];

int i,j,k,l;



main(){

i=1;

j=1;

while (i<N+1){

while (j<M+1){

C[i-1][j-1] = (i*j*(j+1)) / ((i+j-1)*(1- pow((2.0/3.0),(j+1))));

j++;

}

i++;

j=1;

}

for(i=0; i < N; i++){

for(j=0; j < M; j++){

printf("%f ", C[i][j]);

}

printf("\n");

}

system("PAUSE");

}



Ca devrait être mieux (enfin je pense)



Pour info, les tableaux commencent à 0 en C



A+ et fais moi signe si je me suis trompé
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
6 avril 2005 à 20:28
Yep,
Ton code est archi faux, il ne devrais meme pas marcher et planter.
En C/C++ le premier élément d'un tableau est l'élément d'indice 0, et non pas 1 comme en pascal.

Fait attention a ca, le pascal est le seul langage a débuter ses tableau a l'élément 1.

En gros t'as juste a modifier les bornes de tes deux boucles et tout sera nickel.

Shell
3
NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
7 avril 2005 à 02:29
En effet et en exemple ca donnerait ceci:



int tableau[3]; /* => 0 à 2 => 3 éléments */



tableau[0] = 1; /* indice 0 */

tableau[1] = 2; /* indice 1 */

tableau[2] = 3; /* indice 2 */

tableau[3] = 4; /* indice 3 => BOOM!!! indice 3 => innexistant */





~(.:: NitRic ::.)~
3
cs_aciid_washor Messages postés 13 Date d'inscription jeudi 24 juin 2004 Statut Membre Dernière intervention 19 septembre 2008
7 avril 2005 à 08:39
Merci beaucoup a tous.
0
Rejoignez-nous