Langage C

Fermé
spirit44 Messages postés 5 Date d'inscription mardi 10 juillet 2007 Statut Membre Dernière intervention 3 février 2008 - 3 févr. 2008 à 15:05
testy Messages postés 75 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 17 février 2008 - 4 févr. 2008 à 23:18
Bonjour,

je viens de commencer le langage C et on me demande ceci :

Créer un programme qui effectue des saisies successives au clavier,
Le programme s'arrête lorsque le chiffre zéro aura été saisi. (le zéro n’est pas pris en compte)
Il affichera alors à l'écran :
La somme est : ...
La moyenne est : ...
Le plus grand nombre saisi est : ...

Je ne sais pas trop comment m'y prendre si vous pouviez me donner un coup de main ca serait tres sympa
merci
A voir également:

8 réponses

testy Messages postés 75 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 17 février 2008 6
4 févr. 2008 à 22:18
Aller, j'avais rien de mieux a faire... et pourtant j'ai jamais fait de C..
C'est compliqué cette histoire de type de données (double, int et tout)
Par contre j'aurais aimé faire le calcul de la moyenne dans la boucle mais j'ai pas eu d'idée (a cause du compteur qui s'incrémente quoi qu'il advienne qu'on le place en début ou en fin de boucle...)
Je sais pas a uoi sert le "return 0" a la fin non plus..



int main(void)
{
int N,LeMax, Somme = 0;
double Moyenne = 0 ;
int cpt = 0 ;

do
{
printf("Allez vas y gars rentre zy ton nombre pedro\n");
scanf("%d",&N);
Somme = Somme + N ;
if (N > LeMax)
LeMax = N ;
cpt++;
}
while (N!=0);
Moyenne = (double)Somme / ((double)cpt-1) ;

printf("La somme totale est : %d \n",Somme);
printf("La moyenne est : %f \n",Moyenne);
printf("La nombre le plus grand est : %d \n",LeMax);
return 0;
}
1
testy Messages postés 75 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 17 février 2008 6
3 févr. 2008 à 15:08
donne nous une ebauche et on la corrigeras.
histoire de savoir ou tu en es. tu crois pas qu'on va faire tes exercices a ta place non plus :P
0
ghiz Messages postés 39 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 16 août 2008 18
4 févr. 2008 à 18:40
il faut faire une boucle dans laquelle tu saisis un nombre, tu le rajoute à la somme qui doit être initialisée au début par zéro. la boucle doit se terminer une fois on saisit le zéro. et après tu calcule la moyenne en divisant la somme sur le nombre des nombres saisis.

Bonne chance!
0
oupsman Messages postés 316 Date d'inscription mercredi 26 décembre 2007 Statut Membre Dernière intervention 22 octobre 2008 10
4 févr. 2008 à 18:45
salut,

fais voir ton programme pour qu'on puisse te corrifer.


te donner la réponse n'est pas pédagogique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
salut je te proposerai un algorithme et à toi de le traduir en langage C, il faut fair un effort!
DEBUT
%declaration des variables%

%a toi de le faire%

%initialisation%
s=0
i=0
g=0

%boucle principale du programme%
TANTQUE(x<>0)
lire(x)
s=s+x
si (x>g)
g=x
finsi
i=i+1
finTANTQUE

%condition pour eviter les anomalies%
si(i<>0)
M=S/i
finsi


%affichage%
Ecrire("la somme est:",s)
Ecrire("la moyenne est:", m)
Ecrire("le plus grand nombre saisi est:",g)
fin



NB: normalement c bon, en tout cas je ne suis pas un informatition, mon domaine c'est l'éléctronique donc il se peut qu'il existe des ptites fautes!
0
ghiz Messages postés 39 Date d'inscription lundi 28 août 2006 Statut Membre Dernière intervention 16 août 2008 18
4 févr. 2008 à 22:44
le cpt++ soit on le place au début ou à la fin de la boucle, ça donnera la même chose pcq l'essentiel est qu'il s'incrémente à chaque foit qu'on saisit un nombre.
le return 0 est présent pcq le main que tu définis commence par int main() le int placé avant main() indique que la fonction main() doit retourner qlq chose de type int pas forcément 0 n'importe quoi de type int. sinon, tu peut la déclarer void main() au lieu de int main() et dans ce cas tu n'as pas besoin de mettre return 0.
pour les types de données c surtout pour la la mémoire occupée par les variables : un entier (int) ne prend pas autant de place qu'un réel (double).
j'espère que c un peu plus claire pour toi.
0
j'ai utilisai la structure conditionelle SI pour éviter la forme indéterminé 0/0 dans la somme si on saisie directement zéro donc on rentra jamais dans la boucle tantque donc on utilisera la condition initiale où tous les termes sont nuls, l'incrimentation se fait n'importe où tant qu'elle reste dans la boucle puisque sa utilisation ne sera pas dedans, mais si on utilisera i dans la boucle l'incrimentation sera en fonction du valeur initial, si la condition initial i=0, l'incrimentation sera au début i++, si la condition initial i=1, l'incrimentation sera enfin!
t'as utilisé main( ) donc il faut metre return 0, mais si tu met voidmain() sa sera pas necessaire de mettre return0.
pour simplifier une programmation, on peut décomposer un programme en sous programme on les appelles fonction et procédure donc quand tu les étudieras tu va comprendre pour quoi on met returne0, c'est une differnce entre porocédure et fonction...
0
testy Messages postés 75 Date d'inscription lundi 25 juin 2007 Statut Membre Dernière intervention 17 février 2008 6
4 févr. 2008 à 23:18
ok
main() = fonction
void main() = procédure

merci les gars pour vos réponses
0