[c] bug dans un code

Résolu
novocain3 Messages postés 3 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 17 juillet 2009 - 17 juil. 2009 à 18:11
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 - 20 juil. 2009 à 15:50
bonjour,
Newbi en programmation, je me suis lancé dans la creation d'un code en [c] qui doit inscrir les valeur d'un tableau à 2 dimensions dans un tableau à 1.

Le probleme, survient lors du lancement. Mon programme plante une fois arrivé à l'étape de fusion des deux tableaux.
(une fenetre souvre avec comme information voir===><===voir)

Information complmentaire:
OS: Xp sp3
soft: Dev-C++

#include <cstdlib>
#include 
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<math.h>

using namespace std;

int main(int argc, char *argv[])
{
int N=0,i,j=0,k,jC=0,jL=0;
int L=0,C=0;     //lignes colonnes
int dim;         //dimmension tableau TT

// dimension du tableau T[L][C]
printf("le nbre de lignes du tableau\n");
scanf("%ld",&L);
printf("le nbre de colonnes du tableau\n");
scanf("%ld",&C);

int T[L][C];     //creation du tableau


for (i=0;i<L;i++)//initialisation tableau
    {
                 for (k=0;k<C;k++)
                 {
                  T[i][k]=0;
                 }
    }


for  (i=0;i<L;i++)//affichage l'initialisation 
     {
     for (k=0;k<C;k++)
         {
          printf("[ %ld ] ",T[i][k]);
         }
     printf("\n");
     }


for (i=0;i<L;i++)//remplissage tableau au clavier
    {
    jL++;
                 for (k=0;k<C;k++)
                 {
                  jC++;
                  printf("L[%ld]C[%ld] = ",jL,jC);
                  scanf("%d", &T[i][k]);
                 }
    jC=0;
    printf("\n");
    }


for  (i=0;i<L;i++)//affichage tableau rempli
     {
     for (k=0;k<C;k++)
         {
          printf("[ %ld ] ", T[i][k]);
         }
     printf("\n");
     }

//inversion tableau collones + ligne en lignes

dim=L*C;                             //calcul de la dimension
printf("dimension TT = %ld\n",dim);  //affichage de la dimension
int TT[dim];                         //creation tableau


for (i=0;i<dim;i++)//initialisation du tableau TT
{
    TT[i]=0;
    printf("[ %ld ]",TT[i]);
}

//_______________
//mise en commain
//________________

printf("\n\nmise en commain T[L][C] dans TT[dim]");

for (i=0;i<L;i++)
{
    for (k=0;i<C;k++)
    {
        for (j=0;j<dim;j++)//utilisation J dans la troisieme boucle pour la designation de la case de TT
        {
            TT[j]=T[i][k];
        }
    }
}


for (i=0;i<dim;i++)       //affichage de TT avec domme valeur celle de T
{
    printf("[ %d ]",TT[i]);
}


    printf("\n");
    system("PAUSE");
    return EXIT_SUCCESS;
}



merci pour vos furtur reponses !

4 réponses

nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
17 juil. 2009 à 21:10
Salut,

Ton erreur se trouve apres la ligne de code
printf("\n\nmise en commain T[L][C] dans TT[dim]");
parce que tu as une boucle de trop

ce que tu aurais ecris :

for (i= 0;i<L;i++)

{

for (k=0;i<C;k++)
for (k =0;k<C;k++)

{

for (j=0;j<dim;j++)//utilisation J dans la troisieme boucle pour la designation de la case de TT

{

TT[i*k]=T[i][k];

}

}

}


Au revoir , et bonne continuation.

http://liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!
3
novocain3 Messages postés 3 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 21:36
merci beaucoup pour reponse.
0
novocain3 Messages postés 3 Date d'inscription mardi 27 novembre 2007 Statut Membre Dernière intervention 17 juillet 2009
17 juil. 2009 à 21:50
Oui effectivement, grossiere erreur sur la 2eme for avec l'inversion des i & k. (Encore merci "nickydaquick" pour ta rep #2).

Mais sinon j'ai opté pour une autre solution,
for (j=0,i=0;i<L;i++) 
{
    for (k=0;k<C;k++)// pas d'init j ici sinon reinscription apres 1ere boucle
    {       
            TT[j]=T[i][k];
            j++;//utilisation J pour la designation de la case de TT   
    }
}


Quand penses-tu ?
0
nickydaquick Messages postés 416 Date d'inscription vendredi 31 janvier 2003 Statut Membre Dernière intervention 19 décembre 2013 3
20 juil. 2009 à 15:50
Salut,

Oui cela fonctionne aussi , et en plus tu sauves des multiplications en les remplacants par une incrementation... joli.


http://liveplayaz.com
je suis heureux de faire partie d'une grande famille ...!
/B&
0
Rejoignez-nous