Programme pour tracer un cercle en c

Résolu/Fermé
Halidc Messages postés 12 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 17 février 2014 - 2 févr. 2014 à 20:07
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 19 févr. 2014 à 22:57
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;
}


A voir également:

2 réponses

Halidc Messages postés 12 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 17 février 2014 13
16 févr. 2014 à 14:51
// 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;
}
16
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
16 févr. 2014 à 15:54
Et ?
Cela te convient ou pas ?
0
Halidc Messages postés 12 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 17 février 2014 13
17 févr. 2014 à 03:11
Mieux que ca si possible !!
Merci quand meme.
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
19 févr. 2014 à 22:57
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...
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
2 févr. 2014 à 22:35
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,
0