[C++] DEBUG

Résolu/Fermé
Utilisateur anonyme - 17 déc. 2007 à 13:52
 Utilisateur anonyme - 17 déc. 2007 à 14:34
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:
#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

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
17 déc. 2007 à 14:25
essai ça :
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
0
Utilisateur anonyme
17 déc. 2007 à 14:34
Merci, le programme tourne :D
Je suis à un stade préliminaire en C++ pour me familiariser avec la surcharge des opérateurs.
On peut faire le produit scalaire de deux objets ?
Ca va être facile pour l'utilisateur, maos côté programmeur, je m'en doute :)
Merci encore une fois !
0