Programme pour tracer un cercle en c
Résolu
Halidc
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Programme pour tracer un cercle en c
- Mettre en veille un programme - Guide
- Programme demarrage windows - Guide
- Tracer un mail - Guide
- Forcer la fermeture d'un programme - Guide
- Cette action ne peut pas être réalisée car le fichier est ouvert dans un autre programme - Guide
2 réponses
// ce programme a pour but de tracer un cercle (continue) en utilissant des caracteres. // probleme: le cercle tracer n est pas continue, comment faire ? #include <stdio.h> #include <stdlib.h> int main() { int r , x, y, rep=1; while(rep==1) { system("clear"); printf("Entrer le rayon du cercle : "); scanf("%i",&r); for (y = -r; y < r+1; y++) { printf("\n"); for (x = -r; x < r+1 ; x++) { if(abs((x * x) + (y * y)-(r * r)) <= (r/2)) { printf(" * "); } else { printf(" "); } } } printf("\n\nrepeter (oui=> 1)? "); scanf("%i",&rep); } system("clear"); printf("\n============> AUREVOIR <===========\n"); return 0; }
Bonjour,
Le problème est que tu affiches des points sur un repère dont les coordonnées sont des entiers. Donc forcément, ça ne sera pas un cercle parfait.
En revanche, ce que tu peux faire est d'autoriser une certaine tolérance.
Tu affiches tous les points qui satisfont la condition suivante :
A toi de jouer avec epsilon. Tu peux même t'arranger pour qu'il soit fonction de x, y et r.
Note :
printf(" ",x,y);
C'est incorrect ça. Il faut enlever x et y. Ou alors si tu veux afficher les valeurs, il faut utiliser %d...
Cdlt,
Le problème est que tu affiches des points sur un repère dont les coordonnées sont des entiers. Donc forcément, ça ne sera pas un cercle parfait.
En revanche, ce que tu peux faire est d'autoriser une certaine tolérance.
Tu affiches tous les points qui satisfont la condition suivante :
if( abs((x * x) + (y * y)-(r * r))<epsilon)
A toi de jouer avec epsilon. Tu peux même t'arranger pour qu'il soit fonction de x, y et r.
Note :
printf(" ",x,y);
C'est incorrect ça. Il faut enlever x et y. Ou alors si tu veux afficher les valeurs, il faut utiliser %d...
Cdlt,
Cela te convient ou pas ?
Merci quand meme.
En interprétant ce que tu souhaites (voir en extrapolant), tu souhaites un cercle parfait dans une console ? Si c'est le cas, c'est impossible. Dans la console, tu ne peux afficher que des caractères à des coordonnées entières, ce qui n'est pas le cas d'un cercle...