| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
 100
 101
 102
 103
 104
 105
 106
 107
 108
 109
 110
 111
 112
 113
 114
 115
 116
 117
 118
 119
 120
 121
 122
 123
 124
 125
 126
 127
 128
 129
 130
 131
 132
 133
 134
 135
 136
 137
 138
 139
 140
 141
 142
 143
 144
 145
 
 | /*
 * objets.hpp
 *
 *  Created on: 9 juin 2015
 *      Author: matser
 */
 
#ifndef OBJETS_HPP_
#define OBJETS_HPP_
#include <vector>
 
class nbVec{
	private:
		std::vector<int> nb;
	public:
		void saisie();
		void affiche()const;
		char getChifCar(int i);
		int getChifNb(int i);
		int getLong();
		void normalise();
		nbVec operator +=(nbVec operande);
};
 
 
 
#endif /* OBJETS_HPP_ */
/*
 * objets.cpp
 *
 *  Created on: 9 juin 2015
 *      Author: matser
 */
#include <vector>
#include <string>
#include <iostream>
using namespace std;
#include "objets.hpp"
 
 
void nbVec::saisie(){
	string nbString;
	int i;
	nbString.clear();
	nb.clear();
	cin>>nbString;
	for(i=nbString.size();i>0;i--)//nb[0] est le chiffre des unités
		nb.push_back(nbString[i-1]-48);
}
 
void nbVec::affiche()const{
	int i;
	string nbString;
	nbString.clear();
	vector<int>vecTemp;
	for(i=nb.size();i>0;i--)
		nbString.push_back(nb[i-1]+48);
	cout<<nbString;
}
 
nbVec nbVec::operator +=(nbVec operande){
	int taille,schif,diff,i,retenue(0),rang;
	//nb.clear();
	this->normalise();
	operande.normalise();
	diff=nb.size()-operande.nb.size();
	if(diff>0)
		for(i=0;i<diff;i++)
			operande.nb.push_back(0);
	else if(diff!=0)
		for(i=0;i<diff;i++)
			nb.push_back(0);
	taille=nb.size();
	for(rang=0;rang<=taille;i++){
		schif=nb[rang]+operande.nb[rang]+retenue;
		if(schif<10){
			nb.push_back(schif);
			retenue=0;
		}
		else{
			nb.push_back(schif-10);
			retenue=1;
		}
	}
	if(retenue==1)
		nb.push_back(1);
	return *this;
}
 
void nbVec::normalise(){
	while(nb[nb.size()-1]==0)
		nb.pop_back();
}
/*
 * operations.cpp
 *
 *  Created on: 9 juin 2015
 *      Author: matser
 */
 
#include "objets.hpp"
 
nbVec operator+(nbVec a,nbVec b){
	nbVec copie(a);
	copie+=b;
	return copie;
}
 
 
/*
 * experiencesLM.cpp
 *
 *  Created on: 9 juin 2015
 *      Author: matser
 */
 
#include <iostream>
using namespace std;
 
 
#include "objets.hpp"
 
nbVec operator+(nbVec a,nbVec b);
 
int main(){
	nbVec exp,exp1,exp2;
	cout<<"entrez le therme"<<endl;
	exp1.saisie();
	cout<<"et le deuxième?"<<endl;
	exp2.saisie();
	cout<<"la somme est:"<<endl;
	exp=exp1+exp2;
	exp.affiche();
	cout<<endl;
	return 0;
}
 
 
entrez le therme
123
et le deuxième?
5
la somme est:
terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc | 
Partager