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 :

incohérence du code


Sujet :

C

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Par défaut incohérence du code
    bonjour , voici un petit programme tout simple pour saisir le contenu d'un tableau deux dimensions :

    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
    #include<stdio.h>
    #define max 3
    int carre[max][max];
    int n,rangee,colonne;
     
    void Lecture_du_carre()
    {
    	int i,j;
     
    	n = 3;
     
    	if(n%2==1)
    	{
    	if(n<=max)
            {
    		for(i=1; i<=3 ; i=i+1)
    		{
    			for(j=1 ; j<=3 ; j=j+1)
    			{
    			printf("\nvaleur de i = ");
    			printf("%d",i);
    			printf("\nvaleur de j = ");
    			printf("%d",j);
    			printf("\nentre la valeur : ");
     
    			carre[i][j] = getchar();
     
    			printf("\n");
    			}
    		}
    	}
    	}
    	else
    	{
    		printf("Erreur , recommencez n impair!");
    	}	
    }
    Tout d'abord comment mettre deux conditions dans un if?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(n%2==1)
    	{
    	if(n<=max)
            {
    Ensuite mon code a un for imbriqué dans un autre for , il devrait donc demander 9 fois la valeur de carre[i][j]

    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
    for(i=1; i<=3 ; i=i+1)
    		{
    			for(j=1 ; j<=3 ; j=j+1)
    			{
    			printf("\nvaleur de i = ");
    			printf("%d",i);
    			printf("\nvaleur de j = ");
    			printf("%d",j);
    			printf("\nentre la valeur : ");
     
    			carre[i][j] = getchar();
     
    			printf("\n");
    			}
    		}
    Or il le fait une fois sur 2

    Execution du programme :
    valeur de i = 1
    valeur de j = 1
    entre la valeur : 1


    valeur de i = 1
    valeur de j = 2
    entre la valeur : ICI C IMPOSSIBLE DE SAISIR UNE VALEUR IL DEMANDE DIRECT CELLE DU DESSOUS

    valeur de i = 1
    valeur de j = 3
    entre la valeur : 2


    valeur de i = 2
    valeur de j = 1
    entre la valeur : ICI C IMPOSSIBLE DE SAISIR UNE VALEUR IL DEMANDE DIRECT CELLE DU DESSOUS

    valeur de i = 2
    valeur de j = 2
    entre la valeur :3

    etc////
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut Re: incohérence du code
    Citation Envoyé par molesqualeux
    Tout d'abord comment mettre deux conditions dans un if?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (n%2==1)
    {
    ...
    }
    if (n<=max)
    {
    ...
    }
    Hum, je suis désolé de te dire ca mais ceci fait parti des bases élémentaires dans l'apprentissage du Langage C

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (n%2==1)
    {
    ...
    }
    else if (n<=max)
    {
    ...
    }
    ou sinon:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (n%2==1 && ou || n<=max)
    {
    ...
    }
    Enfin suivant ce que tu veut faire !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    On peut aussi vérifier si une erreur se produit avec getchar avec EOF style dans la 2° boucle for:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if (une_variable == EOF)
    {
       /* Fin de fichier ou erreur quelconque sur l'entree standard */
    }
    ou voir même comme ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ((carre[i][j] = getchar()) == EOF)
    {
       /* Fin de fichier ou erreur quelconque sur l'entree standard */
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    268
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 268
    Par défaut
    excuse moi mais ayant quelques notions de programmation en PHP , je peux te dire que c'est différent

    if (n%2==1)
    {
    ...
    }
    else if (n<=max)
    {
    ...
    }
    le 2° if s'execute que si le 2° est faut alors que moi je veux qu'il réalise les 2 en meme temps

    J'aurais été tenté par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( (n%2 ==1) and (n<=max) )
    mais il me retourne une erreur .

    Donc je suppose que c'est ta deuxième solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (n%2==1 and n<=max)
    ?

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par molesqualeux
    le 2° if s'execute que si le 2° est faut alors que moi je veux qu'il réalise les 2 en meme temps

    J'aurais été tenté par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if( (n%2 ==1) and (n<=max) )
    mais il me retourne une erreur .

    Donc je suppose que c'est ta deuxième solution
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    if (n%2==1 and n<=max)
    ?
    Donc dans ce cas:

    C'est sur qu'on ne peut pas compérer ces 2 langages, mais pour faire du C il faut apprendre le C, ca ne se devine pas !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par molesqualeux
    ?
    C'est pas 'and' mais '&&'

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Alors tout d'abord les variables globales c'est pas bien, c'est tres mal meme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    int carre[max][max];
    int n,rangee,colonne;
    Tu peux tres bien mettre ces declarations dans ta fonction.

    Ensuite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    printf("\nvaleur de i = ");
    printf("%d",i);
    printf("\nvaleur de j = ");
    printf("%d",j);
    Tu sais tu a le droit d'ecrire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    printf("\nvaleur de i = %d", i);
    printf("\nvaleur de j = %d", j);
    Ensuite pour ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    carre[i][j] = getchar();
    Une fois que tu a appuyer sur Entrée pour valider ton chiffre les \n est mis dans le tampon la prochaine fois que cette commande sera executée getchar() ne sera pas bloquant et prendra le \n du tampon
    C'est pour ca que
    entre la valeur : ICI C IMPOSSIBLE DE SAISIR UNE VALEUR IL DEMANDE DIRECT CELLE DU DESSOUS
    Donc pour resoudre le probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    carre[i][j] = getchar();
    getchar();
    Voila et pour finir achete un bouquin de C, le C et le phph se ressemblent un peu mais ce n'est pas parce que tu connais le php que tu connais le C

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Arf c'est vrai, j'avais oublié c'te buffer
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

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

Discussions similaires

  1. un code migré qui a un résultat incohérent
    Par JeanNoel53 dans le forum Firebird
    Réponses: 1
    Dernier message: 10/10/2012, 10h36
  2. Incohérence dans le code natif de cvDeterminant
    Par Thomas.Morais dans le forum OpenCV
    Réponses: 0
    Dernier message: 17/02/2012, 15h46
  3. De la rapidité du code
    Par jfloviou dans le forum Contribuez
    Réponses: 233
    Dernier message: 29/05/2009, 02h17
  4. Explorateur de code C
    Par Zero dans le forum C
    Réponses: 14
    Dernier message: 06/06/2002, 09h41
  5. OmniORB : code sous Windows et Linux
    Par debug dans le forum CORBA
    Réponses: 2
    Dernier message: 30/04/2002, 17h45

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