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 :

Tableau de float


Sujet :

C

  1. #1
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 49
    Points : 37
    Points
    37
    Par défaut Tableau de float
    J'ai un tableau
    Pourquoi ceci ne marche pour récupérer des notes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scanf("%f", &moy);

  2. #2
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par condor666 Voir le message
    J'ai un tableau
    Pourquoi ceci ne marche pour récupérer des notes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    scanf("%f", &moy);
    Ta définition du tableau moy n'est pas correcte. Tu dois spécifier une taille en plaçant entre les crochets une expression constante.

    scanf() ne permet par ailleurs de saisir un tableau. Le spécificateur de format %f attend qu'on lui passe une variable de type pointeur sur float (float *) et non pointeur sur tableau de float (float (*)[]) comme tu l'as fait.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #3
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float t[10];
    int i;
     
    for(i = 0; i < 10; i++)
        scanf("%f", &(t[i]));
    - Il est conseillé d'utiliser le type double pour les flottants à la place du type float. Dans ce cas on remplace le %f de scanf par %lf (mais pour afficher c'est toujours %f, %lf c'est pour afficher un long double ...)
    - On peut tout simplement écrire t + i à la place de &(t[i]).

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Melem Voir le message
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    float t[10];
    int i;
     
    for(i = 0; i < 10; i++)
        scanf("%f", &(t[i]));
    - Il est conseillé d'utiliser le type double pour les flottants à la place du type float. Dans ce cas on remplace le %f de scanf par %lf (mais pour afficher c'est toujours %f, %lf c'est pour afficher un long double ...)
    - On peut tout simplement écrire t + i à la place de &(t[i]).
    Pour utiliser scanf() plus ou moins correctement, il faut encore vérifier sa valeur de retour et purger le tampon après utilisation.

    En ce qui concerne le spécificateur de format %lf avec printf(), il n'est pas défini en C90 et il est toléré en C99. Le type long double n'existe pas en C standard.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Donc quand je regarde mon code (cette après-midi j'avais pas codeblocks ouvert) c'était juste une question de parenthèse :
    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
     
    int main()
    {
        float tab[50];
        float N;
        int nbr;
        float somme=0;
        float moy=0;
     
        printf("Combien voulez-vous rentrer de notes (max 50) : ");
        scanf("%i", &nbr);
     
        for(N=0;N<nbr;N++)
        {
            printf("Entrez une note : ");
            scanf("%f", &tab[N]);
            somme += tab[N];
        }
     
        moy = somme/nbr
        printf("La moyenne des notes est : %.2f\n", moy);
     
        return(0);
    }
    faut juste que je rajoute la parenthèse et ça marche.

    EDIT : Mais ça marche quand même pas, tous comme T+i ou dans mon cas tab + N

  6. #6
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par ISO/IEC 9899:TC2 (WG14/N1124)
    There are three real floating types, designated as float, double, and long double. The set of values of the type float is a subset of the set of values of the type double; the set of values of the type double is a subset of the set of values of the type long double.

    ...

    An unsuffixed floating constant has type double. If suffixed by the letter f or F, it has type float. If suffixed by the letter l or L, it has type long double.

  7. #7
    Expert éminent sénior
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Points : 13 926
    Points
    13 926
    Par défaut
    Melem :
    - Il est conseillé d'utiliser le type double pour les flottants à la place du type float. Dans ce cas on remplace le %f de scanf par %lf
    Mais dans ce cas, il faut fournir l'adresse d'un double, pas d'un float

    (mais pour afficher c'est toujours %f, %lf c'est pour afficher un long double ...)
    %Lf pour un long double. %lf n'a pas plus de signification que %f. %f (ou %lf) est utilisé (avec printf) pour float (qui sera promu en double) et double.
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  8. #8
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par diogene
    %Lf pour un long double.
    Ah oui désolé, j'ai pas fait attention

  9. #9
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Merci Melem! Grâce à toi, j'ai appris quelque chose aujourd'hui. Je vais étudier ça de plus près.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  10. #10
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Bin de rien. On est bien là pour s'entraider .

  11. #11
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par condor666
    EDIT : Mais ça marche quand même pas, tous comme T+i ou dans mon cas tab + N
    Le problème n'est pas là. Ton code ne compile même pas.
    Citation Envoyé par condor666
    N doit être de type entier pourtant dans ton code N est de type float.
    Citation Envoyé par condor666
    Point-virgule !
    Et n'oublie pas #include <stdio.h> (pour printf et scanf).

  12. #12
    Nouveau membre du Club
    Inscrit en
    Février 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 49
    Points : 37
    Points
    37
    Par défaut
    Le point-virgule je l'avais déjà ajouté, je m'en était rendu compte tout seul.
    Je ne sais pas pourquoi l'avais mis N en float mais en rectifiant et en le mettant en int ça fonctionne nickel.
    Maintenant je peux travailler sur la V2 de mon prog où je ne demande plus à l'utilisateur combien de notes il veux rentrer, mais où un simple entrer suffira pour calculer la moyenne.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/08/2006, 14h25
  2. Réponses: 5
    Dernier message: 19/07/2006, 11h24
  3. Tri d'un tableau de float
    Par Jeane dans le forum C++
    Réponses: 19
    Dernier message: 24/04/2006, 17h27
  4. Conversion d'un tableau de float en double ?
    Par alex6891 dans le forum C++
    Réponses: 5
    Dernier message: 05/01/2006, 06h04
  5. Tableau de float
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/02/2005, 11h47

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