[C++] DEBUG
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai écrit un programme censé de définir une classe vecteur permettant d'implémenter les opérations suivantes sur les tableaux de taille dynamique :
somme des éléments d'un vecteur, le produit scalaire de deux vecteurs, produit d'un vecteur par un réel et somme de deux vecteurs.
Lorsque je compile, aucune erreur n'est signalée, mais quand j'exécute, ça debug affichant ce message :
https://www.cjoint.com/?mrnNDyvHuv
C'est ma journée C++ !!
Je joins les fichiers suivants :
vecteur.h:
vecteur.cpp:
main.cpp:
Je remercie tous ceux qui m'apportent de l'aide :)
J'ai écrit un programme censé de définir une classe vecteur permettant d'implémenter les opérations suivantes sur les tableaux de taille dynamique :
somme des éléments d'un vecteur, le produit scalaire de deux vecteurs, produit d'un vecteur par un réel et somme de deux vecteurs.
Lorsque je compile, aucune erreur n'est signalée, mais quand j'exécute, ça debug affichant ce message :
https://www.cjoint.com/?mrnNDyvHuv
C'est ma journée C++ !!
Je joins les fichiers suivants :
vecteur.h:
#include<iostream> class vecteur { private : int * tab; int taille; int max; public : void init_vecteur(int = 10); int somme(); void ajout(int); int prod_sca(vecteur); vecteur produit(int); vecteur som_vect(vecteur); void affich(); };
vecteur.cpp:
#include"vecteur.h" #include"string.h" using namespace std; void vecteur::init_vecteur(int n) { max = n; taille = 0; tab = new int[max]; } void vecteur::ajout(int x) { if (taille < max) tab[taille++]=x; } void vecteur::affich() { for(int i=0; i<taille; i++) cout<<tab[i]; } int vecteur::somme() { int s=0; for(int i=0; i<taille; i++) s+=tab[i]; return s; } int vecteur::prod_sca(vecteur v) { int ps=0; int i; if(taille==v.taille) ps+=tab[i]*v.tab[i]; return ps; } vecteur vecteur::produit(int x) { vecteur v; v.init_vecteur(taille); for(int i=0; i<taille; i++) v.ajout(x*tab[i]); return v; } vecteur vecteur::som_vect(vecteur v) { vecteur res; if(taille==v.taille) { res.init_vecteur(taille); for(int i=0; i<taille; i++) res.ajout(tab[i]+v.tab[i]); } return res; };
main.cpp:
#include"vecteur.h" #include"string.h" using namespace std; void main() { vecteur v1, v2; v1.init_vecteur(5); v2.init_vecteur(5); for(int i=0; i<5; i++) v1.ajout(9); v1.affich(); cout<<"somme des valeurs : "<<v1.somme()<<endl; v2 = v1.produit(-2); cout<<"produit = "<<endl; v2.affich(); cout<<"produit scalaire : "<<v2.prod_sca(v1)<<endl; cout<<"la somme des vecteurs : "; vecteur s = v1.som_vect(v2); }
Je remercie tous ceux qui m'apportent de l'aide :)
2 réponses
essai ça :
Note qu'en C++ tu peux surcharger les opérateurs :
int operator*(vecteur a,vecteur b); //produit scalaire
vecteur operator*(int a, vecteur b);//multiplication d'un vecteur par un entier.
etc.
ce qui permet de faire directement par la suite :cout<<"produit scalaire : "<<v2*v1 et v2=-2*v1 etc.
bonne chance
int vecteur::prod_sca(vecteur v) { int ps=0; int i=0; if(taille==v.taille) ps+=tab[i]*v.tab[i]; return ps; }d'ailleur, cette fonction ne fait pas grand chose.
Note qu'en C++ tu peux surcharger les opérateurs :
int operator*(vecteur a,vecteur b); //produit scalaire
vecteur operator*(int a, vecteur b);//multiplication d'un vecteur par un entier.
etc.
ce qui permet de faire directement par la suite :cout<<"produit scalaire : "<<v2*v1 et v2=-2*v1 etc.
bonne chance