Inscription / Connexion Nouveau Sujet
Niveau algorithmique
Partager :

langage C

Posté par
smir
12-07-14 à 23:39

J'ai un exo, voici l'énoncé
Ecrire un algorithme appelé cercle qui demande le rayon d'un cercle et affiche son diamètre, sa circonférence et sa surface

Voici mon programme
#include<stdio.h>
#include<conio.h>
const float pi=3.14;
int main()
{
float r,d,c,s;
printf("DONNER LA VALEUR DU RAYON\n");
scanf("%f",&r);
d=2*r;
c=2*pi*r;
s=pi*r*r;
while(r > 0)
{
printf("le diametre du cercle est %f\n",d);
printf("la circonference du cercle est %f\n",c);
printf("la superficie du cercle est %f\n",s);
}
getchar();
return 0;

}  

Quand je compile tout marche mais le programme ne s'arrête pas. Je voudrais savoir comment faire.

Posté par
arima
re : langage C 12-07-14 à 23:42

Bonjour,
peut être à cause du while, qu'en penses-tu?

Posté par
smir
re : langage C 13-07-14 à 01:22

Oui c'est à cause de while bien sur,mais si je ne me trompe pas on peut l'arrêter ou le délimiter

Autre question:si je fais ceci on me dit y a erreur pourquoi.

printf("le diametre est %f, la circonference est %f,la surface est %f',d,c,s);  
Si j exécute la console me demande de donner une valeur mais si je donne la valeur y a pas d'exécution cad pas de résultat

Posté par
arima
re : langage C 13-07-14 à 01:24

Tu dis
"tant que r>0 fais ceci"
mais dans "ceci" tu ne changes jamais la valeur de r, alors si r ne change pas, c'est sur qu'il restera positif jusqu'à très longtemps...

Posté par
Razes
re : langage C 13-07-14 à 05:34

printf("le diametre est %f, la circonference est %f,la surface est %f',d,c,s);
l'erreur est probablement dûe au fait d'avoir utilisé une apostrophe 'au lieu d'une ".

Tu peux tester ce programme, car je n'ai pas de quoi le tester:

#include <stdio.h>
#include <conio.h>
#include <math.h> /* Ce qui nous permet de récupérer la valeur de PI et qui est notée M_PI dans math.h*/

int main()
{
char Reponse;
float r ;

do {
clrscr() /* Efface l'écran */
printf("Donner la valeur du rayon :\n");
scanf("%f",&r);
printf("Le diamètre du cercle est %f\n", 2*r);
printf("La circonférence du cercle est %f\n", 2*M_PI*r);
printf("La superficie du cercle est %f\n", M_PI*r*r);

/* On demande à l'utilisateur si il souhaite continuer ou quitter */
/* afin de terminer le programme proprement */
printf("Taper (Q) ou (q) pour quitter ou une autre touche pour continuer: ");

Reponse=getch();
} while(Reponse<>'Q' && Reponse<>'Q')

exit(0) /* Afin d'indiquer que le programme s'est terminé normalement.*/
}


while évalue la condition avant d'exécuter le bloc d'instructions,
do - while évalue la condition après avoir exécuté le bloc d'instructions. Ainsi le bloc d'instructions est exécuté au moins une fois.

Merci de nous dire si ça marche.

Posté par
Razes
re : langage C 14-07-14 à 01:20

Il y a qlq'un?

Posté par
smir
re : langage C 14-07-14 à 17:07

Salut, j'ai compilé mais ça ne marche pas
1er problème détecté c'est cette ligne printf("Donner la valeur du rayon :\n");
  

Posté par
Razes
re : langage C 14-07-14 à 20:30

Je suis désolé, mais je n'ai pas de compilateur C depuis vingt ans.

Je pense qu'il manque un point virgule après clrscr(), je pense que ça marchera après.

Posté par
Razes
re : langage C 15-07-14 à 02:52

Quoi de neuf?



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !