Programme C

mery -  
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
svp je suis débutante en programmation en langage C et j'ai besoin de votre aide pour résoudre ce problème:

Ecrire un programme qui affiche la moyenne d'une suite d'entiers positifs entrés au clavier.
On arrêtera la saisie quand le nombre -1 est entré, comme dans l'exemple suivant :
Entrez un entier positif : 5
Entrez un entier positif : 2
Entrez un entier positif : 3
Entrez un entier positif : -1
La moyenne de ces 3 entiers vaut 3.333333

Merci à vous
A voir également:

24 réponses

Dora The Explorer Messages postés 2811 Date d'inscription   Statut Contributeur Dernière intervention   854
 
Comme d'hab, pourquoi tu mettrais pas ce que tu as déjà commencé à écrire? Ensuite des gens t'aiguilleront peut-être selon tes erreurs.
0
loupius Messages postés 697 Date d'inscription   Statut Membre Dernière intervention   148
 
Dora a raison.
Cette question est déjà sortie il y a quelques semaines...
Bonne continuation.
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Programme en C++ :

#include "stdafx.h"
# include <iostream>
using namespace std;

int main()
{
int i,cumul,moy;

cumul=0;
float=0;

cout<<"entrer un chiffre (chiffre négatif pour terminer la saisie) :"<<endl;
cin>>i;

while(i>=0)
{
moy+=i;
cumul++;
cout<<"entrer un chiffre (chiffre négatif pour terminer la saisie) :"<<endl;
cin>>i;
}

cout<<moy%cumul<<endl;

return 0;
}

voilà voilà si ça marche pas tiens moi au courant avec l'erreur que ça retourne.

Bonne soirée.
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
il lui faut un programme en c et pas en c++
mais je vais lui faire et l'aider ensuite car je débute aussi et j'aime bien le C <3
a toute suite ;)
0

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

Posez votre question
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Avec un while !!! comme c'est fait dans mon programme ..
essaie plutot d'intepreter mon programme en C .. tu te casseras moins la tête :)
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
ouai mais je ne comprend pas ton programme en c++ j'en ai jamais fais et je comprend jamais rien
le mieu c'est qu'on me donne la reponse et comme ça, comme je me connais je regarderais le code pour mieu comprendre et je referais des exercices de ce genre ;)
je veux reussir je vous assure ;)
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Avec l'algo tu comprends ?
Je peux te donner l'algo et tu le fais en C ^^
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
nan nan j'ai lus un bout de lecon et j'ai compris mais c'est super chaud
le c je comprend très bien ;)
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Non mais on peut comprends , mais l'algo est la partie logique du programme , ca décrit comment va evoluer ton programme. C'est le squelette de ton programme. Si tu ne sais pas faire d'algo aucun de tes programmes ne marchera.
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
ouais l'algo c'est la partie logique du programme
mais des fois je suis bloquer en C et si tu veux quand je suis bloquer je visualise le programme dans ma tête une sorte d'algo aussi et je reussi mais stp si tu connais le bon code en C du programme qu'on veut faire donne le nous et je l'étudierais car je suis trop curieux de savoir comment ... arrive t-on a mettre -1 pour ARRETER le programme...
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Bah je ne connais pas du tout la syntaxe en C .. Pour arrête ton programme la saisie de -1 doit être une condition d'arrêt.

En C++ il faut dire : " Tant que le chiffre saisie n'est pas -1 faire ...... "
Mais je ne sais pas si en C c'est pareil et niveau syntaxe je ne saurai vraiment pas t'aider.
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Un exemple
lami20j@debian:~$ cat a.c
#include <stdio.h>

int main()
{
  int n,somme,i;
  i=somme=0;
  do{
    printf("Entrez un entier positif : ");
    scanf("%d",&n);
    if(n>=0){
      somme+=n;
      ++i;
    }
  }while(n>=0);
  printf("La moyenne de %d entiers vaut %f\n",i,(float)somme/i);
  return 0;
}
lami20j@debian:~$ gcc a.c
lami20j@debian:~$ ./a.out
Entrez un entier positif : 5
Entrez un entier positif : 2
Entrez un entier positif : 3
Entrez un entier positif : -1
La moyenne de 3 entiers vaut 3.333333
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
Ah ah ah c'est vraiment different le C et le C++ , ça a l'air vraiment hard la syntaxe du C ><
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Voici la traduction du message C++ en C

lami20j@debian:~$ cat b.c
#include<stdio.h>

int main()
{
        int i,cumul,moy;

        cumul=0;
        i=0;
        moy=0;

        printf("entrer un chiffre (chiffre négatif pour terminer la saisie) : ");
        scanf("%d",&i);
        while(i>=0){
                moy+=i;
                cumul++;
                printf("entrer un chiffre (chiffre négatif pour terminer la saisie) : ");
                scanf("%d",&i);
        }
        printf("%f\n",(float)moy/cumul);
        return 0;
}
lami20j@debian:~$ gcc b.c
lami20j@debian:~$ ./a.out
entrer un chiffre (chiffre négatif pour terminer la saisie) : 5
entrer un chiffre (chiffre négatif pour terminer la saisie) : 2
entrer un chiffre (chiffre négatif pour terminer la saisie) : 3
entrer un chiffre (chiffre négatif pour terminer la saisie) : -1
3.333333

0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
j'aurais voulu faire comme ça mais ça pas l'air de marcher :(
#include <stdio.h>
#include <stdlib.h>

int main()
{
    long nombre1, nombre2, nombre3, resultat = 0;
    long  nombreATaperPourArreter = -1;

	printf ("Entrez un entier positif \n");
	scanf("%d",&nombre1);
	printf ("Entrez un entier positif \n");
	scanf("%d", &nombre2);
	printf ("Entrez un entier positif \n");
	scanf("%d", &nombre3);
	resultat = (nombre1+nombre2+nombre3) / 3;
	printf ("La moyenne de ces 3 nombres est de %d \n", resultat);
	  while (nombreATaperPourArreter != -1)
    {
        scanf ("%d", &nombreATaperPourArreter);
        printf("fin du programme \n");
    }
	system("pause");
}
0
mery
 
merci les amis, mais stp janson-live, le programme que tu m'as donné , c'est vrai qu'il me permet d'ecrire une suite d'entiers, mais je voudrais savoir:

* si je veux ecrire 100 entiers :p est ce que je dois ecrire 100 fois :
printf ("entrer un entier positif \n");
scanf ("%d",&nombre ...)

* aussi la moyenne que tu as déclaré en bas ne s'affiche pas sur le programme :(

svp les amis si je dis n'importe quoi c'est par ce que je suis débutante et je veux de l'aide :)

merci
0
Dora The Explorer Messages postés 2811 Date d'inscription   Statut Contributeur Dernière intervention   854
 
https://forums.commentcamarche.net/forum/affich-15086035-programme-c#13
Tu n'as pas besoin de faire de nombreux printf. A l'aide d'une boucle, on continue à faire rentrer des nombres à l'utilisateur, tant que ce nombre n'est pas négatif. (pour coller plus à ton exercice à savoir entrer -1 pour arrêter, la fin de la boucle aurait du être
} while (n != -1);
je suppose.


int main()
{
  int n,somme,i;
  i=somme=0;

  // boucle qui dure tant que le nombre entré est supérieur à 0
  do{                                                      
    printf("Entrez un entier positif : ");
    scanf("%d",&n);
    if(n>=0){
      somme+=n;     //on ajoute le nombre entré (n) à la somme
      ++i;
    }
  }while(n>=0);
  printf("La moyenne de %d entiers vaut %f\n",i,(float)somme/i);
  return 0;
}
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

Regarde ici https://forums.commentcamarche.net/forum/affich-15086035-programme-c#13
Tu peux écrire jusqu'à la semaine prochaine des entiers positifs. Il suffit de taper un entier négatif pour que le programme s'arrête
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
ba je débute aussi mais je suis à fond dans le C mais au début ^^
mais mon programme que j'ai donné même si on entre -1 le programme ne s'arrête pas stp aidez moi je voudrais savoir pourquoi ????
et mery je ne peux pas répondre à ta question si tu peux écrire 100 fois un entier positif... car je débute comme toi ;)
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Avant de commencer écrire du code, réfléchi à ton algorithme, partie très importante.

Donc l'idée est de saisir des nombres entiers positifs et des qu'on saisi un entier négatif le programme doit s'arrêter.

Soit tu fait en dur comme tu as essayé en déclarant 3 variables nombres et une variable pour sortir.
Mais en ce cas ton programme sera limité à seulement 3 nombres entiers positifs.

Soit tu fait une boucle en calculant la somme des nombres saisis et en même temps tu comptes les nombre.
Pour la boucle tu mets la condition d'arrêt, un nombre entier négatif.
Quand tu sors de la boucle tu as deux valeur : la somme et le nombre des entiers positifs.
Il te restera à calculer la moyenne.

0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
je comprend pas regardez SVP !
#include <stdio.h>
#include <stdlib.h>

int main()
{
    long nombre1, nombre2, nombre3, resultat = 0;
    long nombreATaperPourArreter = 0;

     if (nombreATaperPourArreter == -1)
    {
        scanf ("%d", nombreATaperPourArreter);
        printf ("FIN du programme \n");
    }
	printf ("Entrez un entier positif \n");
	scanf("%d",&nombre1);
	printf ("Entrez un entier positif \n");
	scanf("%d", &nombre2);
	printf ("Entrez un entier positif \n");
	scanf("%d", &nombre3);
	resultat = (nombre1+nombre2+nombre3) / 3;
	printf ("La moyenne de ces 3 nombres est de %d \n", resultat);

	system("pause");
}

Faut-il que je mette un WHILE, DO WHILE, IF ... ???
aidez moi
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

J'ai l'impression que tu n'as pas lu ce que j'ai écrit.

Ta condition
 if (nombreATaperPourArreter == -1)

Ne sera jamais VRAIE, puisque nombreATaperPourArreter est toujours 0
Nul part dans ton programme on ne vois pas que cette variable change.
0
jason-live Messages postés 178 Date d'inscription   Statut Membre Dernière intervention   35
 
ba si dans le scanf ("%d", &nombreATaperpourArreter);
si je tappe 1 il devrait s'arreter mais ne s'arrete pas =(
et si j'ai lu mais j'ai rien compris :(
0
lami20j Messages postés 21331 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Re,

Ben, non.
Regarde

long nombreATaperPourArreter = 0;

if (nombreATaperPourArreter == -1)
{
scanf ("%d", nombreATaperPourArreter);
printf ("FIN du programme \n");
}


Donc ton scanf s'exécute if (nombreATaperPourArreter == -1)
Donc il ne s'exécutera jamais puisque long nombreATaperPourArreter = 0;

Tu n'as pas compris le if.
Dans ton cas les instructions de la boucle if ne s'exécute pas puisque au moment quand if commence la variable vaut 0
Comme la condition de if demande que la variable soit -1 et ce n'est pas le cas vu qu'elle vaut zéro, alors les instructions scanf et prinf de la boucle if ne s'exécutent pas.

0
Dora The Explorer Messages postés 2811 Date d'inscription   Statut Contributeur Dernière intervention   854
 
Au début, tu déclares ta variable. Tu l'initialises à 0.
Juste après, tu vérifies que cette valeur n'est pas égale à -1. Forcément, si elle est égale à 0, elle n'est pas égale à -1. Donc ta condition n'est pas vraie, et tu ne fais pas de scanf.

Tu as déjà utilisé des boucles?
0