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 :

prob avec scanf


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut prob avec scanf
    bonsoir,
    comment pourrai-je tester la valeur lue par scanf??
    en d'autre terme je veux en remplissant un tableau savoir si la valeur entrée par l'utilisateur est un zéro alors exécuter un traitement sinon exécuter un autre traitement.
    j'ai essayé avec if mais ça ne marche pas

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Citation Envoyé par marooh Voir le message
    j'ai essayé avec if mais ça ne marche pas
    Comment ça, « ça ne marche pas » ? Si un if() ne fonctionne pas, c'est qu'il y a forcément une erreur dans ton code.

    Poste-le ici (avec les balises [code] et [/code]).

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Points : 41
    Points
    41
    Par défaut
    Salut, qu'est ce qui ne marche pas, le test sur le scanf?

    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
    #include <stdio.h>
     
     
    int main(int argc, char** argv)
    {
    	char car = '\0';
    	printf("Entrez un chiffre: ");
    	scanf("%c", &car);	// appel bloquant (1 caractère attendu, puis Return)
     
    	if( car == '0')
            {
    		printf("\n\nUn 0 a ete saisi");
                    // ton traitement, tu peux le faire ici...
            }
    	else
    		printf("\n\nLe caractere saisi est '%c'", car);
     
     
    	// fait une pause ecran 
    	fflush(stdin);
    	getchar();
     
     
    	return 0;
    }

    Si tu veux remplir un tableau, cette action peut être répétée avec une boucle while et tu stockes chaque 'car' dans une variable de type char[] et le tour est joué.
    Bon code!

  4. #4
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    voici le code modifié mais ça ne marche encore pas
    l'execution donne une saisie infini des chiffres que ce soit un zero ou pas
    alors que je veux que la saisie s'arrete en tapant zero et enregistrer l'indice de la case de zero pour l'utiliser aprés
    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
    #include <stdio.h>
     #include <stdlib.h>
    int main()
    {
     
     int i;
     float tableau[100];
    float c='\0';
    i=0;
    do
        {
            printf("entrer un chiffre :\n ");
        scanf("%f",&c);
       tableau[i]=c;
       i++;
        }
    while(c='0');
        if (c=='0')
        { p=i;
        }
        return(p);
    system("pause");
        return 0;
     }

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    je me suis rendu compte de quelque erreurs donc j'ai corrigé

    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
    #include <stdio.h>
     #include <stdlib.h>
    int main()
    {
     
     int i,p;
     float tableau[100];
    float c;
    i=0;
    p=0;
    do
        {
            printf("entrer un chiffre :\n ");
        scanf("%f",&c);
       tableau[i]=c;
       i++;
        }
    while(c=0);
        if (c=0)
         p=i;
     
        return(p);
    system("pause");
        return 0;
     }

  6. #6
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 372
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 372
    Points : 23 628
    Points
    23 628
    Par défaut
    Il y a de l'idée, mais il y a quelques petites erreurs quand même :

    Les apostrophes « ' ' » servent à choisir un caractère, et « c » est un float. Utilise 0 plutôt que '\0' (bon, ici, ça ne devrait pas provoquer de bug).

    • Tu as écrit « = » au lieu de « == ». Du coup, tu fais une affectation au lieu d'une comparaison ;
    • '0' est le caractère « 0 » qui occupe la position 48 dans le code ASCII. Sa valeur est donc non-nulle. Le booléen qui en résulte est donc toujours vrai et la boucle tourne en permanence ;
    • Tu veux sortir quand l'utilisateur rentre zéro. Cela signifie que tu veux continuer à tourner tant que la valeur est différente de zéro. Il faut donc écrire while (c!=0).


    Même chose : enlève les apostrophes.

    Bon courage.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    merci pour la réponse,j'ai résolu le probléme de la saisie.si vous pouvez verifier ce code qui permet de faire la saisie mentionnée précédemment et de faire la moyenne,le max,le min,la variance et les nombres inférieurs à la moyenne:
    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
    78
    79
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h>
    int remplissage(float*tableau,float c,int p);
    float biggest_value(float* tableau, int taille,float* minmax);
    float inferieur(float* tableau,int n,float moy);
    float variance(float moy,int n,float v);
    int main()
    {
     
        float minmax[2]={0},moy,var,v,inf;
       int n, p;
       float c;
       float tableau[1000];
     
     
        n=remplissage(tableau,c,p);
        moy=biggest_value(tableau,p,minmax);
        var=variance(moy,p,v);
        inf=inferieur(tableau,p,moy);
        printf("\n\nLe max est: %.0f\n\nle min est :%.0f\n\nla moyenne est : %.2f\n\nLa variance est : %.2f\n\nLe nombre de valeur inférieur à %.2f est : %.0f\n\n",minmax[0],minmax[1],moy,var,moy,inf);
     
        system("pause");
        return 0;
    }
     
    float biggest_value(float* tableau, int n ,float* minmax)
    {
        float somme=0;
        int i;
        minmax[1]=minmax[0]=tableau[0];
     
        for (i=0;i<n;i++)
        {
            somme+= tableau[i];
            if (minmax[0] < tableau[i])
                minmax[0] = tableau[i];
            if (minmax[1] > tableau[i])
                minmax[1] = tableau[i];
        }
     
     
        return somme/n;
    }
    float inferieur(float* tableau,int n,float moy)
    {
        float f=0;
        int i;
        for (i=0;i<n;i++)
        {
            if (moy>tableau[i])
            f ++;
        }
            return(f);
     
    }
    float variance(float moy,int n,float v)
    {
        v=(moy*moy)*n-((moy*moy)/n);
        return(v);
    }
    int remplissage(float*tableau,float c,int p)
    {
     
        int i=0;
    p=0;
    do
        {
            printf("entrer un chiffre :\n ");
        scanf("%f",&c);
       tableau[i]=c;
       i++;
        }
    while(c!=0);
        if (c==0)
         p=i;
     
        return(p);
    }

  8. #8
    Nouveau membre du Club
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Points : 39
    Points
    39
    Par défaut
    j'ai corriger le probleme pour ce programme mercii en tout cas pour l'aide

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

Discussions similaires

  1. [composant][MX_2004_pro] prob avec scrollpane
    Par scorpiwolf dans le forum Flash
    Réponses: 6
    Dernier message: 12/01/2004, 20h18
  2. Prob avec dates delphi
    Par ericmart dans le forum ASP
    Réponses: 6
    Dernier message: 20/10/2003, 17h51
  3. PB avec scanf
    Par ché dans le forum C
    Réponses: 6
    Dernier message: 13/08/2003, 07h25
  4. prob avec utilisation de package
    Par martijan dans le forum Modules
    Réponses: 13
    Dernier message: 11/07/2003, 09h37
  5. Thread probs avec WaitFor()
    Par pixelrock dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/11/2002, 09h40

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