Probléme en C
Résolu
Thibaut63
Messages postés
143
Statut
Membre
-
Thibaut63 Messages postés 143 Statut Membre -
Thibaut63 Messages postés 143 Statut Membre -
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 !!!
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 !!!
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 :)