IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

affichage éronné :(


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut affichage éronné :(
    j'ai un problème dans ma code à la fin l'affichage est faux s'il vous plais aidez moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>
     
    int l,nt,t,i,j,nr;
    char ch[100];
    char s;
    char T[100];
    char N[100];
    char V[100];
    int main()
    {
     char c;
    char* M[10][10];
     
    printf("1\n");
    do{
    printf("donnez un entier entre 0 et 100\n");
    scanf("%d",&nt);
    }while(nt<0 || nt>100 );
    printf("vous venez de taper : %d\n",nt);
    printf("donnez le nombre des variables terminaux\n");
    do{
    printf("donnez un entier entre 0 et 100\n");
    scanf("%d",&t);
    }while(t<0 || t>100);
    printf("vous venez de taper :          %d\n",t);
     
     
    printf("donnez les varibles non terminaux:\n");
               for(i=0;i<nt;i++)
               {
               		printf("var%d",i);
               		do{
               		 scanf("%c",&c);
                    }
                while(c>90 || c<65);
     
               N[i]=c;
               }
       printf("donnez les varibles  terminaux:\n");
               for(i=0;i<t;i++)
               {
               	printf("var%d",i);
               		do{
               		 scanf("%c",&c);
                    }
                while(c>122 || c<91);
    		    T[i]=c;
    		}
    printf("donner le nombre de regles\n");
    scanf("%d",&nr);
    //printf("donner la regle\n");
    //printf(" %c : ",N[i]);
     
    for(i=0 ; i<nt ;i++)
    {
    	printf("donner la derivation\n");
    printf(" %c : ",N[i]);
    for(j=0;j<nr;j++){
    scanf("   %s  ",ch);
     l=strlen(ch);
     //printf("1\n");
     M[i][j]=(char*)malloc((l)*sizeof(char));
    //printf("2\n");
    strncpy(M[i][j],ch,l);
    printf("%s\n", M[i][j]);
    }
    }
    printf("hi\n");
    for (i=0 ;i<nt ;i++)
    {
    printf("%s\n",M[i][j]);
     
    }
    }

  2. #2
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    ton indentation est affreuse, dur à lire !
    DAns ta derniere boucle, que vaut j ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (i=0 ;i<nt ;i++)
    {
      printf("%s\n",M[i][j]);
    }
    j vaut nr, donc tu es en dehors du tableau.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    même si je corrige cet boucle , c'est juste une faute de frappe puisque j'ai modifier le code plusieurs fois
    le résultat reste faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
     
    #include<stdio.h>
    #include<stdlib.h>
    #include <string.h>
     
    int l,nt,t,i,j,nr;
    char ch[100];
    char s;
    char T[100];
    char N[100];
    char V[100];
    int main()
    {
     char c;
    char* M[10][10];
     
    printf("1\n");
    do{
    printf("donnez un entier entre 0 et 100\n");
    scanf("%d",&nt);
    }while(nt<0 || nt>100 );
    printf("vous venez de taper : %d\n",nt);
    printf("donnez le nombre des variables terminaux\n");
    do{
    printf("donnez un entier entre 0 et 100\n");
    scanf("%d",&t);
    }while(t<0 || t>100);
    printf("vous venez de taper :          %d\n",t);
     
     
    printf("donnez les varibles non terminaux:\n");
               for(i=0;i<nt;i++)
               {
               		printf("var%d",i);
               		do{
               		 scanf("%c",&c);
                    }
                while(c>90 || c<65);
     
               N[i]=c;
               }
       printf("donnez les varibles  terminaux:\n");
               for(i=0;i<t;i++)
               {
               	printf("var%d",i);
               		do{
               		 scanf("%c",&c);
                    }
                while(c>122 || c<91);
    		    T[i]=c;
    		}
    printf("donner le nombre de regles\n");
    scanf("%d",&nr);
    //printf("donner la regle\n");
    //printf(" %c : ",N[i]);
     
    for(i=0 ; i<nt ;i++)
    {
    	printf("donner la derivation\n");
    printf(" %c : ",N[i]);
    for(j=0;j<nr;j++){
    scanf("   %s  ",ch);
     l=strlen(ch);
     //printf("1\n");
     M[i][j]=(char*)malloc((l)*sizeof(char));
    //printf("2\n");
    strncpy(M[i][j],ch,l);
    printf("%s\n", M[i][j]);
    }
    }
    printf("hi\n");
    for (i=0 ;i<nt ;i++)
    { for(j=0;j<nr;i++)
        printf("%s\n",M[i][j]);
     
    }
    }

  4. #4
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Citation Envoyé par ifdo7a Voir le message
    le résultat reste faux
    Tu es sûre ?
    Pour moi, c'est bon.

    Tu attends quoi comme résultat et tu as quoi ?

    for(j=0;j<nr;i++) a mon avis ca va crasher à un moment !!

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    à la fin je veux remplir une matrice par des chaines de caractères mais il m'affiche aB? lorsque je tape aB
    et encore il cesse de fonctionner dans le dernier étape " l’affichage de la totalité de la matrice "

  6. #6
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    tu as raison à propos i++

  7. #7
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Citation Envoyé par ifdo7a Voir le message
    à la fin je veux remplir une matrice par des chaines de caractères mais il m'affiche aB? lorsque je tape aB
    et encore il cesse de fonctionner dans le dernier étape " l’affichage de la totalité de la matrice "
    Détaille une exemple de matrice 2x3 par exemple. Et dit ce que tu mets et dans quelle variable, je pense que tu as un souci dans l'algo de remplissage vu que N et T ne servent, à priori, à rien. Sans parler de V qui est déclaré mais pas utilisé.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    pour V c'est vraie il est inutile mais pour T et N je vais l'utiliser auparavant j'ai taper , a, ab ,aB,B, A ,bA
    j'ai des resultats faux
    lorsque je tape a je suis obligée de taper ab pour que je puisse avoir l'affichage de a
    encore je dois taper 7 chaines pour avoir 6 chaines que je souhaite stocker dans la matrice

  9. #9
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    tu peux copier ici tout ce qui est affiché sur la console quand le programme est terminé ?

    ton programme se résuma à ça : (le reste c'est du code mort qui ne sert à rien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    	do{
    		printf("donnez un entier entre 0 et 100\n");
    		scanf("%d",&nt);
    	}while(nt<0 || nt>100 );
    	printf("vous venez de taper : %d\n",nt);
     
    	printf("donner le nombre de regles\n");
    	scanf("%d",&nr);
     
    	for(i=0 ; i<nt ;i++)
    	{
    		printf("donner la derivation\n");
    		printf(" %c : ",N[i]);
    		for(j=0;j<nr;j++){
    			scanf("   %s  ",ch);
    			l=strlen(ch);
    			//printf("1\n");
    			M[i][j]=(char*)malloc((l)*sizeof(char));
    			//printf("2\n");
    			strncpy(M[i][j],ch,l);
    			printf("%s\n", M[i][j]);
    		}
    	}
    	printf("hi\n");
    	for (i=0 ;i<nt ;i++)
    	{ for(j=0;j<nr;i++)
    		printf("%s\n",M[i][j]);
    	}

  10. #10
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    malheureusement je ne peux pas

  11. #11
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Pas grave !!!
    Bonne chance.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    merci
    mais juste je peux te donner : lorsque je tape a j'ai obtenu a et il m'affiche a2é exactement
    et chaque foi le resultat d'affichage se differt , et tous sont faux comme suit

  13. #13
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    initialise tous tes tableaux avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    memset(tableau, 0, sizeof(tableau));

  14. #14
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    est ce que cette initialisation pour les tableaux ou encore les matrice

  15. #15
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    le 2.

    Dans ta matrice tu stockes exactement la taille de la chaine (sans la caractère de fin de chaine), donc c'est normal que l'affichage déconne, mais ce n'est pas pour ça que ça ne marche pas.

  16. #16
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    est ce que je dois ajouter une case pour \0 c'est à dire strlen(ch)+1 ??

  17. #17
    Membre émérite
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2011
    Messages
    1 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 255
    Points : 2 627
    Points
    2 627
    Par défaut
    Oui, pour l'affichage c'est mieux !!

  18. #18
    Nouveau membre du Club
    Inscrit en
    Décembre 2010
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Décembre 2010
    Messages : 77
    Points : 30
    Points
    30
    Par défaut
    je vous remercie , l'affichage maintenant est parfait

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb affichage avec un PaintBox (pour eviter scintillement)
    Par juan64 dans le forum C++Builder
    Réponses: 7
    Dernier message: 08/04/2004, 10h21
  2. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 22h00
  3. Affichage de documents PDF
    Par Dajon dans le forum C++Builder
    Réponses: 5
    Dernier message: 10/10/2002, 12h36
  4. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 10h43
  5. Affichage en passant par un buffer...
    Par Sirotilc dans le forum MFC
    Réponses: 5
    Dernier message: 27/05/2002, 22h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo