Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <cmath>
- #include <sstream>
- using namespace std;
- class BinaryVector{
- private:
- int size_array;
- vector<bool> tablica;
- public:
- BinaryVector(int size){
- this->size_array = size;
- for(int i = 0; i < size; i++){
- tablica.push_back(false);
- }
- }
- BinaryVector(int size, int value){
- this->size_array = size;
- for (int i=size-1;i>=0; i--){
- (value&(1<<i)?tablica.push_back(true):tablica.push_back(false));
- }
- }
- int getSize(){
- return size_array;
- }
- void setTrue(int position){
- tablica[position] = true;
- }
- bool getAt(int position){
- return tablica[position];
- }
- void printHex(){
- stringstream ss;
- ss<< std::hex << toInt(); // int decimal_value
- std::string res ( ss.str() );
- std::cout << res;
- }
- int toInt(){
- int number = 0;
- for(int x = 0; x < size_array; x++)
- if(tablica[x] == true)number += (pow( 2, (size_array - x - 1)));
- return number;
- }
- void resize(int size){
- int roznica = this->size_array - size;
- if(size < this->size_array){
- tablica.erase(tablica.begin(), tablica.begin()+roznica);
- }else{
- vector<bool>::iterator it;
- it = tablica.begin();
- for(int i = 0; i < roznica; i++){
- tablica.insert(it, false);
- }
- }
- this->size_array = size;
- }
- /////PRZECIAZENIA
- friend ostream & operator<< (ostream &wyjscie, const BinaryVector &s);
- BinaryVector operator&(BinaryVector &drugi){
- int nowy_size;
- int roznica;
- if(this->size_array < drugi.size_array){
- nowy_size = this->size_array;
- roznica = drugi.size_array - this->size_array;
- }else{
- nowy_size = drugi.size_array;
- roznica = this->size_array - drugi.size_array;
- }
- BinaryVector nowa_liczba(nowy_size);
- for(int i = 0; i < nowy_size; i++){
- if(this->size_array < drugi.size_array) {
- nowa_liczba.tablica[i] = this->getAt(i) && drugi.getAt(i + roznica);
- }else {
- nowa_liczba.tablica[i] = this->getAt(i+roznica) && drugi.getAt(i);
- }
- }
- return nowa_liczba;
- }
- BinaryVector operator|(BinaryVector &drugi){
- int nowy_size;
- int roznica;
- if(this->size_array < drugi.size_array){
- nowy_size = this->size_array;
- roznica = drugi.size_array - this->size_array;
- }else{
- nowy_size = drugi.size_array;
- roznica = this->size_array - drugi.size_array;
- }
- BinaryVector nowa_liczba(nowy_size);
- for(int i = 0; i < nowy_size; i++){
- if(this->size_array < drugi.size_array) {
- nowa_liczba.tablica[i] = this->getAt(i) || drugi.getAt(i + roznica);
- }else {
- nowa_liczba.tablica[i] = this->getAt(i+roznica) || drugi.getAt(i);
- }
- }
- return nowa_liczba;
- }
- BinaryVector & operator^(BinaryVector &drugi){
- int nowy_size;
- int roznica;
- if(this->size_array < drugi.size_array){
- nowy_size = this->size_array;
- roznica = drugi.size_array - this->size_array;
- }else{
- nowy_size = drugi.size_array;
- roznica = this->size_array - drugi.size_array;
- }
- BinaryVector *nowa_liczba = new BinaryVector(nowy_size);
- for(int i = 0; i < nowy_size; i++){
- if(this->size_array < drugi.size_array) {
- nowa_liczba->tablica[i] = this->getAt(i) ^ drugi.getAt(i + roznica);
- }else {
- nowa_liczba->tablica[i] = this->getAt(i+roznica) ^ drugi.getAt(i);
- }
- }
- return *nowa_liczba;
- }
- BinaryVector & operator<<(int liczba){
- BinaryVector* nowa_liczba = new BinaryVector(this->size_array+liczba);
- nowa_liczba->tablica = this->tablica;
- for(int i = 0; i < liczba; i++){
- nowa_liczba->tablica.push_back(false);
- //nowa_liczba->tablica.erase(nowa_liczba->tablica.begin(), nowa_liczba->tablica.begin()+liczba);
- }
- return *nowa_liczba;
- }
- BinaryVector & operator>>(int liczba){
- BinaryVector* nowa_liczba = new BinaryVector(this->size_array);
- nowa_liczba->tablica = this->tablica;
- vector<bool>::iterator it;
- it = nowa_liczba->tablica.begin();
- for(int i = 0; i < liczba; i++){
- //nowa_liczba->tablica.insert(it, false);
- nowa_liczba->tablica.pop_back();
- }
- nowa_liczba->size_array = size_array - liczba;
- return *nowa_liczba;
- }
- };
- ostream & operator<<( std::ostream & out, const BinaryVector & t)
- {
- for( int i = 0; i < t.size_array ; i++)
- out << t.tablica[i];
- return out;
- }
- int main() {
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment