Ecrire un programme langage C
Résolu
rachel
-
xav3601 Messages postés 3289 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Ecrire un programme qui demande à l'utilisateur de saisir
- Rech. ou saisir l'url - Guide
- Ecrire en gras sur whatsapp - Guide
- Programme demarrage windows - Guide
- Comment écrire # sur pc - Guide
- Écrire en majuscule - Guide
13 réponses
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...
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...
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 ;)
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 ;)
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 ;)
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 ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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à!!
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à!!
#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!!
#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!!
#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;
}
#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;
}
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 :
Et enfin, il ne faut pas oublier à la fin :
Cdlt
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
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 ) :
Cdlt
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
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 ;)
le return en milieu n'est pas du code spaghetti mais du code economique ;)
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 :
avec l'autre version :
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.
;)
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.
;)