Probléme en C

Résolu/Fermé
Thibaut63 Messages postés 123 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 janvier 2021 - 5 oct. 2008 à 20:04
Thibaut63 Messages postés 123 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 janvier 2021 - 5 oct. 2008 à 22:07
Bonsoir,

Je suis actuellement en première année d'IUT Informatique, et j'ai un jolie TP d'algorithmique a faire. Après avoir ramé bien longtemps dessus j'appelle au secours ! Ce Tp se base essentiellement sur les Itérations ( While et For ).

Exercice :


" Les indices de ligne et de colonne utilisés dans cette fonction seront respectivement i et j.
Ecrire une fonction qui affiche 20 lignes de 50 caractères chacune où le caractère affiché est :

- Une étoile ( * ) si (i,j) appartient à l'ensemble A suivant :

A= { couples(i,j) tel que RACINE( (i-10)²+((j-25)²/5) ) <= 8 }

- Un espace sinon.

Pour cela on programmera et on utilisera obligatoirement une fonction appartientA qui prend en paramètre les indices i et j et qui retourne 1 si (i,j) appartiennent à A, 0 sinon.

"


J'ai demandé a mon professeur quel doit être le résultat obtenus et il devrait s'agir d'un cercle , ou plus précisément dune tête, qui dans les suite du TP , on complète avec d'autre fonction pour obtenir un smiley.
En revanche ma solution m'affiche un vulgaire tas de point en bas ...

Voila le code de ma fonction :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void lignescaract(void);
float appartientA(float i,float j);

void lignescaract(void)
{
float i, j,appartA;

for (j=0; j<20; j++)
{

printf(" \n");

for (i=0; i<50; i++)
{
appartA=appartientA(i,j);

if(appartA == 1)
printf("*");

if(appartA == 0)
printf(" ");
}
}
}


float appartientA(float i,float j)

{


if(sqrt(((i-10.0)*(i-10.0))+(((j-25.0)*(j-25.0))/5.0))<=8.0)
return 1;

else
return 0;


}

int main(void)
{
lignescaract();
printf(" \n");
system("PAUSE");
return 0;

}


Je ne demande en aucun cas la réponse juste un petit coup de pouce :)
Merci d'avance !!!

2 réponses

bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 oct. 2008 à 21:40
Bon j'ai pas vu à première vue de pb dans le code, jvais voir ça

Pour info, l'intérêt de déclarer ses fonctions c'est de pouvoir les mettre dans l'ordre que tu veux par la suite, il est plus judicieux quand c'est fait de placer la main en premier... ça fait tout scroller
-1
bizu53 Messages postés 1274 Date d'inscription samedi 30 août 2008 Statut Membre Dernière intervention 21 juin 2015 859
5 oct. 2008 à 21:49
J'ai trouvé !
Ton ellipse est centrée en (10,25)
Ce qui ne correspond pas à ta fenêtre d'affichage.
Une erreur dans le sujet je pense, en tout cas, si tu intervertis tes i et j dans ta formule ça te fait l'ellipse bien centrée :)
0
Thibaut63 Messages postés 123 Date d'inscription dimanche 10 août 2008 Statut Membre Dernière intervention 27 janvier 2021 40
5 oct. 2008 à 22:07
Merci beaucoup! j'aurais pu cherché un moment !
En vous souhaitant une bonne soirée !
-1