Accueil > Forum > > > > Pointeur passe en argument par "&Pointeur"
Pointeur passe en argument par "&Pointeur"
jeudi 12 mars 2009 à 18:51:40 |
Pointeur passe en argument par "&Pointeur"

aerocrazy
|
Bonjour a tous, Je travail actuellement sur un Tp ayant pour but de mettre en œuvre les notions d'héritage, de surcharge et de liste chainée. J'ai a disposition deux fichiers: le MAIN et tp5.h (tp5.h contient deux classes dont VECTL). Dans la classe VECTL on me demande de definir une fontion MOD qui permet de : o modifier les cinq nombres définissant le vecteur (cinq premiers paramètres d'appel) ; o insérer le vecteur dans une liste chainée (deux derniers paramètres d'appel qui contiennent, dans l'ordre : l'adresse du dernier vecteur (avant insertion) de la liste, l'adresse de la tête de liste) (Notas : le pointeur contenant l'adresse du dernier élément est modifié à chaque insertion dans la liste, l'insertion à lieu à la fin de la liste) ; o calculer, si s'est possible, les vitesses telles que définies au TP N°4.
Mon problème vient des pointeurs passes en argument. Dans le MAIN, ils figurent avec "&". J'ai effectue de multiples recherches et il me semble la notion de référence ne puisse pas résoudre mon problème. Comment puis je traiter ce passage en argument? NOTA: Le MAIN m'est impose. C'est a moi de créer la bibliothèque. Appel dans le mainPV->MOD(XO,YO,XE,YE,TT,&PA,&TL);Voici les deux tentatives: Dans un fichier .h 1er) void VECTL::MOD(float a, float b,float c,float d,float temps,VECTL *dernier,VECTL *tete)2e) void VECTL::MOD(float a, float b,float c,float d,float temps,char* dernier, char* tete)Les deux essais ne fonctionnent pas. Merci @+
|
|
vendredi 13 mars 2009 à 00:00:04 |
Re : Pointeur passe en argument par "&Pointeur"

uaip
|
Salut, En effet ce n'est pas un passage par référence mais par pointeur. Présenté comme ça, on ne peut (je ne peux ?) pas expliquer pourquoi ça ne marche pas. Comment sont déclarés PA et TL ? Je m'explique : Imaginons que nous ayons une fonction de prototype : void fct(int *nbr); La méthode de passage du paramètre ne sera pas la même selon la déclaration de l'entier. Voici 2 cas d'appel : int nombre; //Déclaration d'un entier fct(&nombre); //Passage de l'adresse de l'entier et int *nombre; //Déclaration d'un pointeur sur un entier fct(nombre); //Passage de la valeur du pointeur, autrement dit de l'adresse de l'entier pointé
Donc précise les types de tes variables passées en paramètres.
Cordialement, uaip.
|
|
vendredi 13 mars 2009 à 09:53:18 |
Re : Pointeur passe en argument par "&Pointeur"

ed73
|
D'après ce que je comprends du sujet PA serait l'adresse d'un vecteur donc ta première déclaration est correcte, et TL l'adresse de la tête de liste donc probablement un pointeur sur un VECTL. Si tu dois passer cette valeur par adressse pour la modifier, il faudrait peut-être la déclarer comme un pointeur sur un pointeur sur un VECTL soit VECTL **tete ce qui donnerait :
void VECTL::MOD(float a, float b,float c,float d,float temps,VECTL *dernier,VECTL **tete)
Pour en être certain, il faudrait que tu nous donnes les déclarations de PA et TL dans le MAIN.
|
|
vendredi 13 mars 2009 à 10:18:05 |
Re : Pointeur passe en argument par "&Pointeur"

aerocrazy
|
CODE MAIN: //----------------------- //TP 5- programme principal //----------------------- #include "C:\TT\TP5.h" void main() { char TEST[12]; char Cont='O'; //Pour réaliser la boucle de constitution de la liste VECTL * TL=NULL;//tete de la liste (au départ vide) float XO,YO,XE,YE,TT;//pour creation du vecteur VECTL * PA=NULL; //pour adresse du vecteur "précédant" VECTL * PV; //
while (Cont=='O'||Cont=='o') { PV=new(VECTL); //<-- Creation un objet, par défaut, de la classe VECTL cout<<"Coordonnes de l'origine du vecteur ? "<<endl; cout<<"\t X ?"; cin>>XO; cout<<"\t Y ?"; cin>>YO;cout<<"Coordonnes de l'extremite du vecteur ? "<<endl; cout<<"\t X ?"; cin>>XE; cout<<"\t Y ?"; cin>>YE; cout<<"Temps ? "<<endl; cin>>TT; PV->MOD(XO,YO,XE,YE,TT,&PA,&TL);//actualisation des données et INSERTION dans la liste // BOUCLE ? cout<<"\n Voulez vous saisir un autre vecteur ?"<<endl; cout<<"\n repondre par la lettre O ou o pour poursuivre"<<endl; cin>>Cont; } VL(TL);//Visualisation de la liste cout<<"\n PROGRAMME FINI"<<endl; cin>>TEST; } CODE tp5.h #include <fstream> #include <iostream> using namespace std;
class VECT { protected: float Xa,Ya; float Xb,Yb;
public: VECT() { cout<<"\nCoordonnees de l'origine du vecteur?\n\t"; cout<<"Abcisse ?"; cin>>Xa; cout<<"\tOrdonne?"; cin>>Ya; cout<<"\nCoordonnees de l'extremite du vecteur?\n\t"; cout<<"Abscisse?"; cin>>Xb; cout<<"\tOrdonne?"; cin>>Yb; }
VECT (float P1,float P2) { Xa=0; Ya=0; Xb=P1; Yb=P2; };
VECT (float P1,float P2, float P3, float P4) { Xa=P1; Ya=P2; Xb=P3; Yb=P4; };
void VV() { cout<<"\nCoordonnees un vecteur :\n\t"; cout<<"Origine:X="<<Xa<<"Y="<<Ya; cout<<"\nExtremite :X="<<Xb<<"Y="<<Yb<<"\n"; }; };
/***************************************************************************************************************/ class VECTL:public VECT { public: float DXO,DYO,DXE,DYE; //Derivees des coordonnees des extremites du vecteur bool calc; //Indique la reussite ou le cas echeant l'echec des derivations float TT; //Le temps VECTL *Lc; //Declaration du pointeur
public: VECTL(float Xa=0, float Ya=0,float Xb=0,float Yb=0,VECTL *M = NULL); VECTL(float P1,float P2,float P3,float P4,float T,VECTL *P5 = NULL):VECT(P1,P2,P3,P4) { TT=T; float DT; if(P5 == NULL) { calc = false; } else { P5->Lc=this; DT = TT-P5->TT; if(DT>0) { calc = true; DXO=(Xa-P5->Xa)/DT; DYO=(Ya-P5->Ya)/DT; DXE=(Xb-P5->Xb)/DT; DYE=(Yb-P5->Yb)/DT; } else {calc=false;}; } }
void VV() {
VECT::VV(); cout<<"\t TEMPS:: "<<TT<<endl; if(calc == true) { cout <<"\t Variations sur l'origine: en X="<<DXO<<" en Y="<<DYO<<endl; cout<<"\t Variations sur l'extremite: en X="<<DXE<<" en Y="<<DYE<<endl; } else { cout<<"\t\n PAS DE CALUL de difference "<<endl; } }
void MOD(float a, float b,float c,float d,float temps,char* dernier, char** tete); };
void VECTL::MOD(float a, float b,float c,float d,float temps,char* dernier, char** tete) { VECTL laListe; //On creer un objet laListe.Lc = NULL; //Liste vide
tete = Lc; //Adresse du premier element
//Ajout d'un element VECTL *nouvel_element = new VECTL; if(nouvel_element == NULL) //L'element est a creer. { nouvel_element->Xa = a; nouvel_element->Ya = b; nouvel_element->Xb = c; nouvel_element->Yb = d; nouvel_element->Lc = Lc; //Le pointeur "suivant (Lc)" de "nouvel_element" pointe sur "Lc". Or "Lc = NULL". C'est le dernier element de la liste. nouvel_element = Lc; //Le pointeur liant l'elem precedent pointe sur "nouvel_element" au lieu de "NULL" //dernier = nouvel_element->Lc; //Je recupere l'adresse du dernier element float DT = temps - Lc->TT; if( DT > 0) { DXO=(Xa-Lc->Xa)/DT; DYO=(Ya-Lc->Ya)/DT; DXE=(Xb-Lc->Xb)/DT; DYE=(Yb-Lc->Yb)/DT; } } }
//********************************************************************************************************** int VL(VECTL *tete) //Visualisation des objets { puts("Coordonnees du vecteur:"); cout<<"Origine : X ="<<tete->DXO<<" Y ="<<tete->DYO<<endl; cout<<"Extremite: X ="<<tete->DXE<<" Y ="<<tete->DYE<<endl; cout<<"TEMPS : t ="<<tete->TT<<endl;
}
|
|
vendredi 13 mars 2009 à 10:58:30 |
Re : Pointeur passe en argument par "&Pointeur"

ed73
|
Réponse acceptée !
J'avais bon à moitié
PA et TL sont des pointeurs sur VECTL donc pour que l'appel à MOD fonctionne la déclaration doit être :
void VECTL::MOD(float a, float b,float c,float d,float temps,VECTL **dernier,VECTL **tete)
Maintenant, à toi d'écrire le contenu de cette fonction.
|
|
Cette discussion est classée dans : liste, pointeur, float, argument, vectl
Répondre à ce message
Sujets en rapport avec ce message
Problem d'affichage d'un tableau de float préalablement stoker avec memcpy() [ par Orezza ]
voila le code que j'ai tapé dans mon prog, j'ai pas mis la source entiere je vous mets kand meme l'arbre à noter que Liste_note_TP et Liste_note_TD so
liste chainée et pointeur générique ? [ par tintin72 ]
Bonjour, J'essaie de coder une liste chainée dont la valeur à stockée est matérialisé par un pointeur sur void de façon rendre mon code générique:
désallocation de pointeur [ par donlefou ]
Bonjour voici un bout de code :C_Liste *lst = new C_Liste;........autre_liste->ajout(lst);//delete lst;Je n'arrive pas à delete la liste lst.
convertion pointeur vers tableau [ par gdpasmini ]
Salut !Quelqu'un pourrait il me dire comment copier la chaine de caractere pointé par char * nom dans un tableau char name[] ??Merci d'avance !
Threads [ par LENOX8 ]
Bonjour, En fait je travaille sur un projet ou je dois écrire une thread qui accède à des données sous formes de liste chainees et doit mettre à jour
Sélection "intelligente" ComboBox [ par SebDeBib ]
Salut, j'ai une ComboBox, type DropDown, càd où je peux rentrer du texte ou saisir dans la liste... C'est une fenêtre de liste de recettes. Au début,
Thread au bout du gouffre!!!!!!!!!!!! [ par LENOX8 ]
Salut tout le monde, Merci pour toute les infos que vous m' avez donne, mais etant encore debutant je vois pas trop comment implantes les threads ains
Resume d'un téléchargement FTP (Wininet) [ par Bistoy ]
Je suis en train de me faire un petit client FTP car je n'arrive pas à en trouver un (même commercial) qui ne plante pas.Tout marche correctement mais
Passage d'argument pour printf [ par Quazar ]
BonjourJe cherche à créer une fonction qui aura le même effet que printf, c'est à dire que je passerais à cette fonction une liste de paramètre du mêm
Listes chainées [ par angelfire0808 ]
Bonjour voila voici mon, code j'ai une ereeur de compilation mais je ne comprend pas ;-(l'erreur c'est ici : " nouveau->suivant=(*tete); ".De plus j
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|