Ecrire un programme langage C

Résolu
rachel -  
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un exercice qui consiste à ecrire un algorithme qui demande à l'utilisateur un nombre compris entre 0 et 20 jusqu'a ce que la réponse convienne. cette partie j ai reussi à faire mais après pour traduire cet algorithme en programme C je n 'y arrive plus !!!merci de bien vouloir m'aider!!

voilà ce que j ai fais pour l'algorithme:

algorithme
% demande à l'utilisateur un nombre compris entre 0 et 20
%declaration de variable
flottant : n
debut : %du traitement
tant que (n<0 ou n>20)faire
afficher ("erreur entrer un nombre compris entre 0 et 20 )
lire(n)
fin tant que
afficher ("saisie correcte")
fin
A voir également:

13 réponses

xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Merci pour ces petites correction bien necessaire (apres 1 ans sans C on oublie quelque truc :P)

Sinon tu peux essayer ma version poster un peu plus haut qui est un peu moins gourmande!
j'avais utiliser des cout et cin il faut les remplacer par des printf et scanf...
4
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
As tu déjà fais un début de code?
1
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Il manque une ligne à ton algo, tu dois rajouter "lire(n)" avant tant que.
Sinon, le reste est bon.
Pour la partie C, je te laisse voir avec xav3601 ;)
1
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Moi j'aurais une possibilite un peu differente de ton algo proposé afin de réduire le nombre d'événement...

float saisie()
{
float n;
while(1)
{
cout>>"Veuillez saisir une valeur entre 0 et 20\n"<<endl;
cin<<n;
if(n<20 && n>0) return n,
}
}


Voila!
c'est une fonction qui te retourne la valeur saisie quand elle est bonne ;)
0

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

Posez votre question
rachel
 
oui mais lorsque je rentre le programme dans l ordinateur ça me met plein d 'ereur
je vous transmet ce que j ai fais !(j'utilise le logisiel dev C++)

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
//demande à l'utilisateur un nombre compris entre 0 et 20
//declaration de variable
float n;

//debut du traitement
while{
if (n<0 & n>20) break;
printf ("erreur entrer un nombre entre 0 et 20);
scanf ( n%d,&n);
système ("pause");
return0;
//fin du traitement
}//fin du programme


voilà!!
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
//demande à l'utilisateur un nombre compris entre 0 et 20
//declaration de variable
float n;

//debut du traitement


//on demande d'entrer une premiere fois le nombre
printf ("entrer un nombre entre 0 et 20");
scanf ( n%f,&n);


//tant que le nombre n'est pas dans l'intervalle on recommence
while(n<0 && n>20)
{
printf ("erreur entrer un nombre entre 0 et 20");
scanf ( n%f,&n);
}

//quand on a une bonne valeur on l'affiche
printf ("la valeur de n est : %f",n);
//fin du traitement
}//fin du programme



voila je pense que ca devrait marcher!!
0
rachel
 
merci beaucoup!!!
0
samar83 Messages postés 67 Date d'inscription   Statut Membre Dernière intervention   2
 
#include<stdio.h>
#include<stdlib.h>

int main()
{
int n, ok=0;

while (ok==0)
{
scanf("%d",&n);
if (n<0 & n>20)
{
printf ("erreur entrer un nombre entre 0 et 20);
}
else
{ ok=1;}
}
printf ( "%d",n);
système ("pause");
return0;
}
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Je corrige les petites coquilles qui traînent dans le programme donné par xav:
L'instruction : scanf ( n%f,&n); est erronée.
La bonne est :
scanf ("%f",&n);


Et enfin, il ne faut pas oublier à la fin :
return 0;

Cdlt
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Ta deuxième version est bien plus jolie je trouve. Car le coup du while(1) et un joli return en plein milieu c'est du code spaghetti ^^. Algorithmiquement ta première version est nickel ;)
Ce qui donne (après correction et indentation ) :
#include<stdio.h>

int main(void)
{
   //demande à l'utilisateur un nombre compris entre 0 et 20
   //declaration de variable
   float n;

   //debut du traitement
   //on demande d'entrer une premiere fois le nombre
   printf ("entrer un nombre entre 0 et 20");
   scanf ("%f",&n);

   //tant que le nombre n'est pas dans l'intervalle on recommence
   while(n<0 && n>20)
   {
      printf ("erreur entrer un nombre entre 0 et 20");
      scanf ("%f",&n);
   }

   //quand on a une bonne valeur on l'affiche
   printf ("la valeur de n est : %f\n",n);
   return 0;
   //fin du traitement
}

Cdlt
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
comme dis precement le code donne en premier est moins gourmand en memoire...
le return en milieu n'est pas du code spaghetti mais du code economique ;)
0
fiddy Messages postés 11069 Date d'inscription   Statut Contributeur Dernière intervention   1 846
 
Salut,
Encore faut-il comparer ton code (qui se fait en une passe) avec l'autre version en une passe également.
Par exemple, il faudrait comparer ta version :

#include <stdio.h>

int main(void){
    float n;
    while(1){
        puts("saisir valeur entre 0 et 20");
        scanf("%f",&n);
        if(n<20 && n>0) return n;
    }

    return 0;
}


avec l'autre version :
#include <stdio.h>

int main(void){
    float n;
    do{
        puts("saisir valeur entre 0 et 20");
        scanf("%f",&n);
    }while(n>20 || n<0);

    return 0;
}

Non seulement on économise 3 caractères de plus dans ta version "spaghetti". Et en plus le compilateur ne peut pas optimiser aussi bien qu'avec l'autre version. L'inconvénient des boucles infinis avec un break ou return, c'est qu'algorithmiquement c'est moins beau, et en plus le compilateur est moins efficace.
;)
0
xav3601 Messages postés 3289 Date d'inscription   Statut Membre Dernière intervention   311
 
Certes mais concretement en entreprise qui s'interesse a l'esthetique de l'algo :P
0