1) Implementer le cpncepte de vecteur bidimensionel.
Dans ce sens on dira que le vecteur bidimensionel est un systeme ordonné de 2 nombres reels.
Sur les vecteurs, on va definir les operations:
- operations d’atribution de valeurs dans les elements du vecteur;
- somme de deux vecteurs;
- difference de deux vecteurs;
- produit d’un vecteurs et un scalaire;
- negativité d’un vecteur;
- produit scalaire de deux vecteurs;
- affichage des components du vecteur sous la forme d’une paire d’elements.
Ecrire un programme pour lire 2 paires de nombres qui representent les components dexs vecteurs a et b, ensuite calculer et afficher:
- somme: a+b;
- difference: a-b;
- somme: 3*a+4*b;
- difference: a*2 -b*4;
- somme: -a-b;
- produit scalaire de deux vecteurs.
Fonctions amis et surcharger les opérateurs mathématiques en C++ - Applications résolues
#include <iostream> #include <fstream> #include <math.h> using namespace std; class vb { float e1,e2; //elements du vecteur public: //constructeur d’initialisation avec ds parametres vb(float, float); //reecrire le constructeur implicite d’initialisation vb(){} //somme de deux vecteurs: r=vb1+vb2 vb operator+(vb); //negativation d’un vecteur: r=-vb vb operator-(); //difference des vecteurs: r=vb1-vb2 vb operator-(vb); //produit entre un vecteur et un nombre: r=vb*a vb operator*(int); //produit entre un vecteur et un autre nombre: r=a*vb friend vb operator*(int, vb); //produit scalaire de 2 vecteurs r=(vb1,vb2) double operator*(vb); //lire un vecteur void lire(char*); //affichage d’un vecteur void affichage(char*); }; inline vb::vb(float a, float b) { e1=a; e2=b; } vb vb::operator + (vb v) //somme de deux vecteurs { vb r; r.e1=e1+v.e1; r.e2=e2+v.e2; return r; } vb vb::operator - () //negativation d’un vecteur { vb r; r.e1=-e1; r.e2=-e2; return r; } vb vb::operator - (vb v) //difference des deux vecteurs { return (*this)+(-v); } vb vb::operator * (int a) //produit d’entre un vecteur et un nombre { vb r; r.e1=a*e1; r.e2=a*e2; return r; } vb operator * (int a, vb v) //produit entre un nombre et un vecteur { return v*a; /*l’opperateur * est surcharhé pour le produit entre un vecteur et un nombre par la precedente fonction */ } double vb::operator * (vb v) //produit scalaire de deux vecteurs { return e1*v.e1+e2*v.e2; } void vb::lire(char *s) { cout<<"\nDonnez les elements du vecteur"<<s<<":\n"; cout<<"\tpremier element: "; cin>>e1; cout<<"\tdeuxieme element: "; cin>>e2; } void vb::affichage(char* sir) { cout<<"\nVecteur "<<sir<<": ("<<e1<<","<<e2<<")"<<endl; } void main() { vb a; a.lire("a"); a.affichage("a"); cout<<"Les elements du vecteur <b> seront introduits par l’initialisation."; vb b(2.5,1); b.affichage("b"); vb c; c=a+b; c.affichage("a+b"); c=a-b; c.affichage("a-b"); c=3*a+4*b; c.affichage("3*a+4*b"); c=a*2-b*4; c.affichage("a*2-b*4"); c=-a-b; c.affichage("-a-b"); cout<<"\nProduit cartesien: "<<a*b<<endl; int g; cin >>g; }
2) Ecrire un programme pour lire du clavier deux matrices et calculer la somme,
la difference et leur transposée.
#include <iostream> #include <fstream> #include <math.h> using namespace std; class matrice { int n; //nombres de lignes et colonnes, d’une matrice carée int m[10][10]; public: matrice(); void creer(int x, char* s); matrice operator +(matrice a); //addition de deux matrices matrice operator -(matrice a); //difference de deux matrices matrice operator ~(); //transposee des matrices void affichage(char* s); }; inline matrice::matrice() { n=0; } void matrice::creer(int x, char* s) { cout<<"Introduire les dates pour la matrice "<<s<<":\n"; n=x; for(int i=0;i<n;i++) for(int j=0;j<n;j++) { cout<<s<<"["<<i+1<<","<<j+1<<"]="; cin>>m[i][j]; } } matrice matrice::operator + (matrice a) { matrice temp; for(int i=0;i<n;i++) for(int j=0;j<n;j++) temp.m[i][j]=m[i][j]+a.m[i][j]; temp.n=n; return temp; } matrice matrice::operator - (matrice a) { matrice temp; for(int i=0;i<n;i++) for(int j=0;j<n;j++) temp.m[i][j]=m[i][j]-a.m[i][j]; temp.n=n; return temp; } matrice matrice::operator ~ () { matrice temp; for(int i=0;i<n;i++) for(int j=0;j<n;j++) temp.m[i][j]=m[j][i]; temp.n=n; return temp; } void matrice::affichage(char *s) { cout<<"\nMatrice "<<s<<" est:"<<endl; int i,j; for(i=0;i<n;i++) { cout<<'\t'; for(j=0;j<n;j++) cout<<m[i][j]<<" "; cout<<'\n'; } } void main() { matrice a,b,t,s,d; int x; cout<<"Introduire la dimension de deux matrices: "; cin>>x; a.creer(x,"A"); b.creer(x,"B"); cout<<endl; a.affichage("A"); b.affichage("B"); s=a+b; s.affichage("A+B"); d=a-b; d.affichage("A-B"); t=~a; t.affichage("~A"); int g; cin >>g; }