1 2 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