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 float moy[];
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 scanf("%f", &moy);
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 float moy[];
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++
+
Par exemple :
- 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 ...)
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]));
- 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++
+
Donc quand je regarde mon code (cette après-midi j'avais pas codeblocks ouvert) c'était juste une question de parenthèse :
faut juste que je rajoute la parenthèse et ça marche.
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); }
EDIT : Mais ça marche quand même pas, tous comme T+i ou dans mon cas tab + N
Envoyé par ISO/IEC 9899:TC2 (WG14/N1124)
Melem :
Mais dans ce cas, il faut fournir l'adresse d'un double, pas d'un float- 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
%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.(mais pour afficher c'est toujours %f, %lf c'est pour afficher un long double ...)
Publication : Concepts en C
Mon avatar : Glenn Gould
--------------------------------------------------------------------------
Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !
Ah oui désolé, j'ai pas fait attentionEnvoyé par diogene
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++
+
Bin de rien. On est bien là pour s'entraider .
Le problème n'est pas là. Ton code ne compile même pas.Envoyé par condor666
N doit être de type entier pourtant dans ton code N est de type float.Envoyé par condor666
Point-virgule !Envoyé par condor666
Et n'oublie pas #include <stdio.h> (pour printf et scanf).
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager