Triangle de penrose et classe [Résolu]

ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 16 oct. 2007 à 22:05 - Dernière réponse : The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention
- 17 oct. 2007 à 19:12
Bonjour à toutes et à tous,
j'aurais aimé savoir comment commencer le début de mon code en rapport avec les triangles de penrose (un triangle de penrose est un triangle isocèle ayant pour coté isocèle la longueur du nombre d'or)
Pour celà j'ai créé une classe penrose, point et triIso, n'étant qu'au début de mon aprentissage je ne maitrise pas encore le langage et j'ai donc quelques problèmes de codage...
je vous mets ci-dessous ma classe Point :

// Point.cpp: implementation de la classe Point
//
//////////////////////////////////////////////////////////////////////

#include "Point.h"
#include

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

using namespace std;

Point::Point(double abs,double ord)
{
    x = abs;
    y = ord;
}

void Point::Affiche()
{
    cout<<"Abscisse :"<< x <<"Ordonnée :"<< y <<endl;
}

Point::~Point()
{

}

double Point::getx(){
    return(abs);
}

void Point::setx(double x){
    x = abs;
}

double Point::gety(){
    return(ord);
}

void Point::sety(double y){
    y = ord;
}

// Point.h: Interface de la classe Point.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_)
#define AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class Point 
{

private :
    double x,y;

public:
    Point(double,double);
    double getx();
    void setx(double);
    double gety();
    void sety(double);
    void Affiche();
    virtual ~Point();

};

#endif // !defined(AFX_POINT_H__1158B4D8_4436_4C81_AA39_2EC96B8CD085__INCLUDED_)

J'aurais donc aimé savoir si mon constructeur était correct et si les accesseurs des membres privés de la classe aussi?

car visual studio me met 3 erreurs qui sont les suivantes :

Erreur    1    error C2440: 'return' : impossible de convertir de 'int (__cdecl *)(int)' en 'double'    d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp    31   
Erreur    2    error C2440: '=' : impossible de convertir de 'int (__cdecl *)(int)' en 'double'    d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp    35   
Erreur    3    error C2065: 'ord' : identificateur non déclaré    d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp    39   

Si vous pouviez me dire d'ou vient le problème se serait gentil.

qui plus est pour la suite du projet je ne sais pas comment implémenter ma classe TriIso par rapport à la classe Point....
si vous aviez des idées....
Pour penrose celà découlera de triIso car elle en hérite

Voilà, merci pour ceux qui pourront m'aider

Cordialement, ichigoZ710
Afficher la suite 

Votre réponse

28 réponses

Meilleure réponse
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 19:12
3
Merci
Re

Ces 2 méthodes tu les déclares en méthodes privées de penrose et tu les utilises dans le constructeur de penrose.
Et pour faire de l'héritage, tu devrais relire ton cours.
Fin je vais devoir aller là manger,
je reviens au pire demain  si tu as des autres questions je regarderais.


=

Une autruche ne se cuit pas aux petits lardons

Merci The_Guardian 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de The_Guardian
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 16 oct. 2007 à 22:18
0
Merci
Bonsoir,

Bon déjà faut que tu te mettes d'accord avec toi même, car les coordonnées du point s'appellent x/y ou abs/ord ?
- si je regarde le .h c'est x/y
- si je regarde le .cpp c'est abs/ord
- tu mélanges les affectations aussi
- "a = b;" signifie que la valeur de "b" va être mise dans la variable appelée "a"
(ce qui est pas le cas dans setx ou sety)
- et il y a une fonction abs qui existe déjà
- je me demande si c'est pas ça qui le gêne sur une des erreurs

Ok  bon ensuite la classe triIso:
- un triangle isocèle c'est trois points avec des contraintes et  une fois que tu récupères les trois points, il faut que tu vérifies que ab=ac (si le triangle est isocèle eça pourrait même être une méthode du point, à toi de voirn a)
- calculer une distance entre deux points c'est pas dur
- ça pourrait même être une méthode du point, à toi de voir

=

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 16 oct. 2007 à 22:28
0
Merci
Donc tu me conseille de les déclarer comment car je croyais pourtant que d'après ce que j'avais demander à d'autres c'était comme ca qu'il fallait le faire.
Pour les autres méthodes ca confirme ce que je pensais!
Mais j'ai toujours eu des problèmes avec les constructeurs, accesseurs et autres... et j'arrive pas à m'y habituer hihihi
Donc à quoi ressemblerait le constructeur et un set pour toi?
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 16 oct. 2007 à 22:33
0
Merci
Re,

Ok ben tu les appelles partout x et y, et tu enlèves ces abs et ord
_ dans le constructeur je mettrais
 Point:oint(double x, double y) {
   this.x = x;
   this.y = y;
}
void Point::setdouble x) {
   this.x = x;
}

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 16 oct. 2007 à 22:35
0
Merci
setX ( double x ) <-- mal affiché le code

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 16 oct. 2007 à 22:36
0
Merci
idem mal affiché pour ce code

Point :: Point(double x, double y) {

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 16 oct. 2007 à 22:39
0
Merci
Je venais de faire ce constructeur est-il valable? :

Point::Point(const Point & p){
    x = p.x;
    y = p.y;
    cout << "appel du constructeur par recopie" << this << " "<< x <<" "<< y <<endl;
}
Commenter la réponse de ichigoZ710
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 16 oct. 2007 à 22:43
0
Merci
Avec votre méthode celà me génere une erreur partout où se trouve this.variable qui me dit celà :
Erreur    5    error C2228: la partie gauche de '.y' doit avoir un class/struct/union    d:\iut\2eme année\poo 2eme année\penrosetp1\point.cpp    49   
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 16 oct. 2007 à 22:47
0
Merci
re
Votre constructeur de copie est bon, mais l'autre le mien c'était le constructeur normal. Donc en résumé à votre erreur, si je la comprends bien, je me demande s'il serait pas plus judicieux de tester this->x
this->x = x au lieu de this.x
vous voyez ?
Je dois déconnecter, je reviens demain.
Au pire, je vous souhaite de trouver d'autres personnes présentes pour une autre aide.
=

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 16 oct. 2007 à 22:58
0
Merci
ca a fonctionné merci
je vous tiens au courant pour la suite du code car je risuqe d'avoir encore besoin d'aide hihihi
Commenter la réponse de ichigoZ710
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 17 oct. 2007 à 14:14
0
Merci
Bonjour,
j'ai cette erreur :

Erreur    1    error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup    LIBCMTD.lib   
Erreur    2    fatal error LNK1120: 1 externes non résolus    .\Debug/penroseTP1.exe   

Je ne sais pas du tout comment la résoudre...je n'arrive pas à trouver de quoi ca vient
Si vous avez besoin des sources dites le moi je refairais un poste dans la seconde

merci d'avance pour votre aide
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 14:54
0
Merci
Bonjour,

Est-ce que tu compiles un programme windows ou un programme DOS ? est-ce que tu as plusieurs fichiers .c dans ton projet ? C'est parce que la fonction WinMain, je vois pas d'où elle sort..

=
Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 17 oct. 2007 à 14:58
0
Merci
c'est bon j'ai résolu le problème ca venait du faite que j'étais pas en console....
enfin bon vive windows... lol et surtout visual

merci quand même
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 15:06
0
Merci
Ah voila pourquoi, moi visual... lol :p

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 17 oct. 2007 à 15:37
0
Merci
Bonjour, de nouveau je vous embetes :
je dois maintenant coder la classe TriIso et la un problème se pose :

TriIso(Point a,Point b,Point c){

}

Mais je ne sais pas comment faire mon constructeur pour TriIso car il faudrait faire en sorte que le constructeur compare les points 2 à 2 donc a avec b, b avec c et c avec a.
Mais je ne sais pas vraiment comment faire mes test à l'interieur de cette classe.

Pour savoir si il est isocèle, il faut que je fasse un calcul de distance entre les points puis voir si il sont égaux.

Et le plus dur c'est connaitre l'angle du triangle car si il est obtus c'est un triangle de penrose 2 et si l'angle de l'isocèle est aigu c'est un triangle de penrose de type 1.

Voila si vous pouviez me dépanner pour tout çà celà serait gentil.

Si vous avez besoin d'un ou plusieurs sources dites le moi.

cordialement, ichigoZ710
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 15:49
0
Merci
Re,

Ok dans votre classe triangle isocele pour te faciliter la vie c'est bien d'avoir un attribut qui indique le sommet pour lequel le triangle est isocele.

_ bon deja il faut calculer ab, ac et bc
- ensuite :
if (ab==ac) { sommet='a'; }
else if (ab==bc) { sommet='b'; }
else => erreur, le triangle est pas isocele

_ Après pour les angles :
- je vois pas bien ton problème pour le moment car vous me parles de triangle de penrose de type 1 et 2 alors que vous avez  pas de triangle de penrose pour le moment mais un triangle isocèle
- donc on fera les problemes des triangles de penrose plus tard
 _ Et enfin bon pour le calcul d'angle c'est de la trigo..
- supposons que ABC soit isocèle en A. Vous projettez A à angle droit sur BC.
- Tu atteris où ? milieu de BC non ?
- bon donc BAC=2*BAM (M milieu de BC) et BAM = arc-sinus (bm/ab) = arc-sinus(bc/(2.ab))

=

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 17 oct. 2007 à 16:39
0
Merci
Bonjour j'aurais aimé savoir comment faire l'héritage pour penrose car on a fini notre classe triangle isocèle enfin a votre avis devons-nous faire la recherche de l'angle dans la classe TriIso ou bien dans penroseI ou penroseII (moi je pense dans TriIso)
En faite je me suis tromper pour trouper si l'angle est obtus ou aigu, il faut faire avec le nombre d'or :

nombredor = ((1+rac(5))/2)

si le triangle est aigu celà veut dire que : (un coté isocèle)/(base)=nombredor
si le  triangle est obtus celà veut dire que : (base)/(un coté isocèle)=nombredor

Donc j'aimerais savoir ou nous devons fairec e test?

je vous demanderais encore quelque chose plus  tard et après celà devrait être bon j'espere...
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 16:50
0
Merci
Bonjour,

LOL j'adore la phrase dernière, aprés celà va être bon j'espere :p
Ssi c'est bon après, vous mettrez ma pastille verte que l'on close le dossier penrose, et au pire tu peux revenir sous autre post, l'un empechera pas l'autre.

Sinon, pour répondre.

Calculer les angles d'un triangle, ça me parait normal que le triangle soit isocèle, de penrose ou qu'il soit normal donc idéalement le calcul des angles doit être fait le plus haut possible dans la hiérarchie.
Et là tu as pas de classe triangle
- tu as juste ta classe triangle-isocèle
Alors fais le calcul d'angle là. Mais bon c'est pas encore important vu que tu en as pas besoin apparemment
_ donc tu fais ta classe triangle-isocele, ok
_  ensuite ta classe triangle-penrose
- ça hérite de triangle-isocèledonc dans le constructeur de triangle-penrose tu fais le test qui va bien
-  tu peux aussi en profiter pour initialiser la variable type qui contiendra 1 ou 2 selon l'angle ou la longueur des cotes
Bon ainsi ça devrait aller non ?

Aah
_ faut vérifier certaines conditions aussi parce que tout triangle-isocèle est pas forcément un triangle de penrose aussi..

Ok

=

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian
ichigoZ710 55 Messages postés mardi 16 octobre 2007Date d'inscription 15 novembre 2011 Dernière intervention - 17 oct. 2007 à 16:55
0
Merci
???
Commenter la réponse de ichigoZ710
The_Guardian 318 Messages postés vendredi 25 mai 2007Date d'inscription 19 octobre 2007 Dernière intervention - 17 oct. 2007 à 16:59
0
Merci
Re,

Vous n'avez pas compris quoi donc ?

Une autruche ne se cuit pas aux petits lardons
Commenter la réponse de The_Guardian

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.