Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2012, 22:33   #1
alljustforfun
 
Регистрация: 16.04.2012
Сообщений: 6
По умолчанию Проект(перегрузка операций)(язык С++)(компилятор DevC++)

Вообщем есть задача:Дано булевский вектор(координати 0 или 1) нужно перегрузить операции побитового отрицания, побитового и,или исключающего или (~,&,|,^) так чтобы они выполнялись с координатами как с битами. Все сделать как проект(роскидать на файлы). Так вот: я задал в класе массив который отвечает за координаты. Если в розмерности число всё работает. Помогите сделать так чтобы розмерность можна было ввести с клавиатуры.
Вот мой код(3 файла):
vector.h:
Код:
#ifndef STUD_H 
#define STUD_H
#include <stdio.h>
#include <iostream>

class vector
{
      
public:
int mas[3];

void input();
void output();

vector operator &(vector g);
vector operator ~();
vector operator |(vector q);
vector operator ^(vector w);
};
#endif


vector.cpp:
Код:

#include "vector.h"
#include <iostream.h>
void vector::input()
{
for(int i=0; i<3;i++)
{


 cin>>mas[i];
 cout<<endl;
 }


}
void vector::output()
{
     for(int i =0; i<3;i++)
{
 cout<<mas[i]<<endl;
}
}


vector vector:: operator &(vector g)
{
       vector rez;
       for(int i =0; i<3;i++)
       {
               if(mas[i]==1&&g.mas[i]==1)rez.mas[i] = 1;
               else rez.mas[i] = 0;
       }
return rez;
}
vector vector::operator ~()
{
vector rez1;
for(int j=0; j<3; j++)
{
 if(mas[j]==1)rez1.mas[j]=0;
 else rez1.mas[j]=1;       
}
return rez1;       
}
vector vector::operator |(vector q)
{
  vector rez3;
  for(int l=0; l<3; l++)
  {
   if(mas[l]==0&&q.mas[l]==0)rez3.mas[l]=0;
   else rez3.mas[l]=1;
   
   }     
       return rez3;
}
vector vector::operator ^(vector w)
{
   vector rez4;
   for(int x=0;x<3;x++)
   {
           if(mas[x]=w.mas[x])rez4.mas[x]=0;
           else rez4.mas[x]=1;
   }
   return rez4;              
}

main:
Код:

#include <cstdlib>
#include <iostream>
#include "vector.h"
#include <windows.h>
#include <stdio.h>
using namespace std;

 

int main()
{
    vector a,b,c;
    cout<<"vvedit' a"<<endl; 
    a.input(); 
    cout<<"vvedit' b";
    b.input();     
    c = a&b;
    cout<<"kon'ukci9"<<endl;
    c.output();
    cout<<endl<<"zapere4enn9"<<endl;  
    c = ~a;
    cout<<endl;
    c.output(); 
     c = a;
    cout<<endl<<"prusvoenn9"<<endl;
    c.output();  
    c=a|b;
    cout<<endl<<"operaci9 abo"<<endl;
    c.output();
    c=a^b;
    cout<<endl<<"vuklu4ne abo"<<endl;
    c.output();
    system("PAUSE");
    
}
Кому не сложно буду оч благодарен.
alljustforfun вне форума Ответить с цитированием
Старый 29.04.2012, 23:50   #2
alljustforfun
 
Регистрация: 16.04.2012
Сообщений: 6
По умолчанию

желательно добавит чтото в существующий код но и ваш личный приветсвуетса
alljustforfun вне форума Ответить с цитированием
Старый 30.04.2012, 13:28   #3
ERAGORN
Пользователь
 
Аватар для ERAGORN
 
Регистрация: 02.01.2012
Сообщений: 46
По умолчанию

Код:
// vector.h

#ifndef VECTOR_H
#define VECTOR_H

class vector{
public:
    vector( const int = 3 );
    vector( const vector& );
    const vector& operator=( const vector& );
    ~vector();

    int getSize( void ) const;
    void input( void );
    void output( void );

    int operator[]( const int ) const;
    int &operator[]( const int );

    vector& operator~( void );
private:
    int *mas;
    int size;
};

vector operator& ( const vector&, const vector& );
vector operator|( const vector&, const vector& );
vector operator^( const vector&' const vector& );

#endif // VECTOR_H

// vector.cpp

#include<iostream>

vector::vector( const int sz = 3 ){ mas = new int[size = sz]; }
vector::vector( const vector& obj ){
    mas = new int[size = obj.size];
    for ( int i = 0; i < size; ++size ) mas[i] = obj.mas[i];
}
const vector &vector::operator=( const vector& obj ){
    if ( *this != &obj ){
        if ( size != obj.size ){
            delete[] mas;
            mas = new int[size = obj.size];
        }
        for ( int i = 0; i < size; ++size ) mas[i] = obj.mas[i];
    }
    return *this;
}
vector::~vector(){ delete[] mas; }

inline int vector::getSize( void ) const { return size; }
void vector::input( void ){
    for ( int i = 0; i < getSize(); ++i ) std::cin >> this[i];
}
void vector::output( void ){
    for ( int i = 0; i < getSize(); ++i ) std::cout << this[i];
}

int vector::operator[]( const int index ) const { return mas[index]; }
int &vector::operator[]( const int index ){ return mas[index]; }

vector &vector::operator~( void ){
    for (int i = 0; i < getSize(); ++i )
        if ( this[i] == 0 ) this[i] = 1;
        else this[i] = 0;
    return *this;
}

vector operator& ( const vector& op1, const vector& op2){
    int size = (op1.getSize() < op2.getSize()) ? op1.getSize() : op2.getSoze()
    vector result(size);
    for ( int i = 0; i < size; ++i )
        if (op1[i] != 0 && op2[i] != 0 ) result[i] = 1;
        else result[i] = 0;
    return result;
}
vector operator|( const vector& op1, const vector& op2 ){
    int size = (op1.getSize() < op2.getSize()) ? op1.getSize() : op2.getSoze()
    vector result(size);
    for ( int i = 0; i < size; ++i )
        if (op1[i] != 0 || op2[i] != 0 ) result[i] = 1;
        else result[i] = 0;
    return result;
}
vector operator^( const vector& op1, const vector& op2 ){
    int size = (op1.getSize() < op2.getSize()) ? op1.getSize() : op2.getSoze()
    vector result(size);
    for ( int i = 0; i < size; ++i )
        if ( (op1[i] != 0 && op2[i] == 0) || (op1[i] == 0 && op2[i] != 0) ) result[i] = 1;
        else result[i] = 0;
    return result;
}

// main.cpp

#include<iostream>
using std::cout;
using std::endl;

int main( void )
{
     int size;
     std::cout << "Enter size: ";
     cin >> size;

     vector a(size), b(size), c(size);
 
     cout<<"vvedit' a"<<endl; 
     a.input();

     cout<<"vvedit' b";
     b.input();

     c = a&b;
     cout<<"kon'ukci9"<<endl;
     c.output();

     cout<<endl<<"zapere4enn9"<<endl;
     c = ~a;
     cout<<endl;
     c.output();

     c = a;
     cout<<endl<<"prusvoenn9"<<endl;
     c.output();

     c=a|b;
     cout<<endl<<"operaci9 abo"<<endl;
     c.output();

     c=a^b;
     cout<<endl<<"vuklu4ne abo"<<endl;
     c.output();

     system("PAUSE");

     return 0
 }
ERAGORN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перегрузка операций (), [],-> Стремящийся Общие вопросы C/C++ 2 17.03.2012 13:12
Перегрузка операций manoichi Общие вопросы C/C++ 0 09.01.2012 19:30
перегрузка операций С++ mego4el Помощь студентам 1 31.10.2011 11:38
перегрузка операций nastya081108 Помощь студентам 0 18.05.2010 21:16