Rechercher : dans
Par :

Ecrire un programme langage C

Dernière réponse le 15 déc 2008 à 10:38:36 rachel, le 12 déc 2008 à 15:46:54 
 Signaler ce message aux modérateurs

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

Configuration: Windows Vista
Internet Explorer 7.0

Meilleures réponses pour « ecrire un programme langage C » dans :
Caractéristiques du langage C Voir Le fichier source Le fichier source d'un programme écrit en langage C est un simple fichier texte dont l'extension est par convention .c. Note d'un visiteur (J.Grondin) : L'extension est en minuscules. Le .C (majuscule) est interprété par...
Les piles en langage C VoirLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage...
Introduction au langage C VoirPetite histoire du C Le langage C a été mis au point par D.Ritchie et B.W.Kernighan au début des années 70. Leur but était de permettre de développer un langage qui permettrait d'obtenir un système d'exploitation de type UNIX portable. D.Ritchie...
Langage C - Les types de données VoirLes types de données Les données manipulées en langage C sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître l'occupation mémoire (le...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

xav3601, le 12 déc 2008 à 15:50:48

As tu déjà fais un début de code?

Répondre à xav3601

2

fiddy, le 12 déc 2008 à 16:01:19

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 ;)
Google is your friend

Répondre à fiddy

3

xav3601, le 12 déc 2008 à 16:08:03

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 ;)

Répondre à xav3601

4

rachel, le 12 déc 2008 à 16:14:36

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à!!

Répondre à rachel

5

xav3601, le 12 déc 2008 à 16:19:16

#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!!

Répondre à xav3601

6

rachel, le 12 déc 2008 à 16:22:40

Merci beaucoup!!!

Répondre à rachel

7

samar83, le 12 déc 2008 à 16:25:42

#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;
}

Répondre à samar83

8

fiddy, le 12 déc 2008 à 16:30:15

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
Google is your friend

Répondre à fiddy

9

xav3601, le 12 déc 2008 à 16:39:08

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...

Répondre à xav3601

10

fiddy, le 12 déc 2008 à 16:46:33

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
Google is your friend

Répondre à fiddy

11

xav3601, le 12 déc 2008 à 22:21:14

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 ;)

Répondre à xav3601

12

fiddy, le 12 déc 2008 à 23:16:03

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.
;)
Google is your friend

Répondre à fiddy

13

 xav3601, le 15 déc 2008 à 10:38:36

Certes mais concretement en entreprise qui s'interesse a l'esthetique de l'algo :P

Répondre à xav3601
Collection CommentÇaMarche.net