Graphique f(x)=x^p

dustez Messages postés 1 Date d'inscription vendredi 6 janvier 2006 Statut Membre Dernière intervention 21 octobre 2006 - 21 oct. 2006 à 22:18
goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 - 23 oct. 2006 à 18:07
On me demande de réaliser un programme affichant sous forme textuelle des graphiques représentant les fonction du type f(x)=x^p,
à partir des paramètres x, p, ux (unité de l'axe X: chaque unité représentera une colonne sur l'axe X) et uy (unité de l'axe y: chaque unité représentera une ligne sur l'axe Y) qui seront lis sur input..

En gros ça devra ressembler à ça:
^
|                                                                                           ...
|                                                                                X
|                                                                      X
|                                                               X
|                                                       X
|                                          X
+--------------------------------------------------------------------->

On me conseille d'utiliser la fonction double pow(double x, double y)

Comment je dois m'y prendre ?

Merci d'avance.

9 réponses

moumouteb Messages postés 192 Date d'inscription dimanche 16 janvier 2005 Statut Membre Dernière intervention 28 février 2011 10
21 oct. 2006 à 23:13
Avec une API ou directement dans la console?

--------------------
Quand la merde vaudra de l'or les pauvres naitrons sans trou cu cul. Coluche.
Mon projet : Squirrel's Cliff
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 oct. 2006 à 00:27
faut travailler avec gotoxy ou fonction analogue :)

ULARGE_INTEGERJokyQi=QI("Joky"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 oct. 2006 à 04:11
Salut :

Utiliser :

1. un changement de repère pour centrer votre repère.
En effet, sous WINDOWS on a
     (0,0) -------------------> +
           |               |
           |               |
           |----------------
           |
           V
           +

2. dessiner votre foction point par point avec la fonction SetPixel (hDC, x, y, RGB (255, 0, 0)).
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 oct. 2006 à 09:12
Salut :

Ce que j'ai dit s'applique uniquement au mode graphique sous WINDOWS.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 oct. 2006 à 12:56
oui mais il est en mode texte, c'est bien marqué :)

ULARGE_INTEGERJokyQi=QI("Joky"
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
22 oct. 2006 à 13:06
Salut :

Donc rien à ajouter : gotoxy est la solution.

Une question quel environnement tu utilises?
car si utilise Visual C++ / DevC++

Je pense que la fonction gotoxy n'existe pas. Elle est définie dans le fichier "conio.h" de turbo C++.

Une solution pour s'en sortir :
ceci est la fonction gotoxy écrit avec l'API WINDOWS :


#include
<windows.h>


void
GotoXY(
int
x,
int
y)
{

     COORD coord;

     coord.X = x;

     coord.Y = y;     

     SetConsoleCursorPosition(
           
GetStdHandle(STD_OUTPUT_HANDLE), coord);



     return;
}
0
goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 2
23 oct. 2006 à 11:42
Il est aussi possible de construire le graph en créant directement des
chaines de caracteres et en les affichant dans la console.

Par exemple il faut faire quel que chose comme ca:


char graph[10][31];

for(i=0;i<10;i++)

{

    for(j=0;j<30;j++)

        graph[i][j]=' ';    //initialiser le graph avec des espaces

    graph[i][30]='\0';


for(i = 0; i<30; i++)

{

    aux=(int)pow(x,p);

    if (aux<10 && aux>0)

        graph[9-aux][i]='x';

}

for(i=0; i<10; i++) printf("%s\n", graph[i]);


C'est juste le code approximatif. Je paris qu'il y a plein de
fautes(desolé mais la je suis en pose de dejeuné :-D) mais on peut
comprendre le principe.

Bonne chance
0
Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
23 oct. 2006 à 13:07
Salut :

Je pense que votre solution n'est pas fonctionnelle.
Avec gotoxy les choses sont plus simples.

Il faut juste prendre en compte le chamgement de repère.

On va transformer (O, _x, _y) en (A, _x,-_y):


Remarque la notation _V veut dire vecteur V.




R.O.N. (O, _x, _y)          R.O.N. (A, _x, -_y)





O(0,0)


------------ x    = ==>      y
|                           |
|       .M(u, v)            |    .M(X,Y)
|                           |
|                           |
|   .


A(a, b)         


A(0,0)
|---------- x
 


y                  

Exprimons X et Y en fonction de (u, v, a, b):

_OM = u._x + v._y
_AM = X._x - Y._y  (*)

donc _AM = _AO + _OM (relation de chasles)
         = -a._x - b._y + u._x - v._y
         = (u - a)._x - (b + v)._y     (**)

L'identification de (*) et (**) donne :
X = u - a
Y = -(b + v)
C'est la transformation recherchée ...

Bonne chance ...
Cordialement.
0
goast_tu Messages postés 212 Date d'inscription dimanche 3 avril 2005 Statut Membre Dernière intervention 28 mai 2011 2
23 oct. 2006 à 18:07
n'est pas fonctionnelle? ca depend de ce qu'on demande de faire. En
tout cas a la fac je fesais toujours de cette facon et meme on nous
l'imposait.
0
Rejoignez-nous