Programme pour tracer un cercle en c
Résolu
Halidc
Messages postés
14
Statut
Membre
-
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 441 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour, j'ai fait un programme pour tracer un cercle en c .
// ce programme a pour but de tracer un cercle (continue) en utilisant 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((x * x) + (y * y) == (r * r) )
{
printf(" 0 ");
}
else
{
printf(" ",x,y);
}
}
}
printf("\n\nrepeter (oui=> 1)? ");
scanf("%i",&rep);
}
system("clear");
printf("\n============> AUREVOIR <===========\n");
return 0;
}
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; }-
-
-
Il faut mieux expliquer tes attentes, cela ne coûte pas plus cher et te permettra d'avoir des réponses convenant mieux à tes attentes...
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...
-
-
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 :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,