Форум программистов, компьютерный форум CyberForum.ru

Выполнение действий с двоичными векторами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Temoffey
 Аватар для Temoffey
20 / 40 / 0
Регистрация: 21.11.2010
Сообщений: 96
26.06.2011, 17:06     Выполнение действий с двоичными векторами #1
Начало есть; нужно выполнить сложение векторов и сдвиг
C++
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
//Создайте класс bVect для выполнения действий с двоичными векторами.
//Длина вектора должна быть задана в конструкторе.
 
#include "stdafx.h"
#include <iostream> 
#include <stdio.h> 
#include <conio.h> 
 
using namespace std; 
 
class bVect //объявляем класс,двоичный вектор bVect - имя 
{//закрытая часть класса, к местным штукам могут обращаться только функции-элементы класса 
//или дружественные 
int len; //длинна вектора 
int *vect; //указатель на начало 
 
public: //открытая часть класса, т.е. к объектам описанным тут могут обращаться любые функции 
    bVect()//конструктор - функция которая запускается при создании объекта 
{ 
    cout<< "input lenght"<<endl; 
    cin>>len; vect=new int [len];//вводим длинну вектора, и выделяем //память под неё, vect ссылается на начало вектора 
} 
 
~bVect() //деструктор - функция вызываемая при удалении объекта 
{ 
    delete []vect;//удаляем вектор(освобождаем память) 
} 
 
void input() //функция ввода значений вектора 
{ 
    for(int i=0;i<len;i++) 
    { 
        cin>>vect[i]; 
        if((vect[i]<0)||(vect[i]>3)) 
        { 
            cout<<"error"<<endl; 
            exit(1); 
        } 
    } 
} 
 
void output () //функция вывода значений вектора 
{ 
    for(int i=0;i<len;i++) 
    { 
        cout<<vect[i]<<endl; 
    } 
 
} 
};//конец описания класса 
 
void main (void) 
{ 
    bVect ob;//создание объекта, ну переменная только моего типа данных включает в себя длинну и 
    //сам вектор, прям как структура 
 
        ob.input();//вызов функции ввода 
        ob.output();//вызов функции вывода 
        getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.06.2011, 17:06     Выполнение действий с двоичными векторами
Посмотрите здесь:

Написать программу, которая демонстрирует выполнение операций с 12-разрядными двоичными числами C++
C++ Реализовать выполнение заданных действий над одномерным массивом.
Выполнение действий через некоторое время C++
C++ Чтение двумерного массива и выполнение над ним действий
C++ Одновременное выполнение действий без использования потоков/процессов
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
26.06.2011, 17:48     Выполнение действий с двоичными векторами #2
C++
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
#include <iostream> 
 
class bVect {
    int len; 
    int* vect; 
public:  
    explicit bVect(int size = 0)
    { 
        len = size;
        vect=new int [len];
    } 
    
    ~bVect() 
    { 
        delete []vect;
    } 
 
    void input() 
    { 
        for(int i = 0; i < len; i++) 
        { 
            std::cin >> vect[i]; 
            if(vect[i] < 0 || vect[i] > 3) 
            { 
         std::cout << "error" << std::endl; 
                exit(1); 
            } 
         } 
     }
 
        friend std::ostream & operator << (std::ostream & out, const bVect & o)
        {
            for(int i = 0; i < o.len; i++) 
            { 
                out << o.vect[i] << ' '; 
            } 
            return out;
        }
 
        bVect operator + (const bVect & other) const
        {
            bVect ob(len + other.len);
            for(int i = 0; i < len; i++)
                ob.vect[i] = vect[i];
            for(int i = 0; i < other.len; i++)
                ob.vect[i + len] = vect[i];
            return ob;
        }
 
        bVect& operator <<= (int k)
        {
            for(int i = 0; i < k; i++)
            {
                int k = vect[0];
                for(int j = 1; j < len; j++)
                    vect[j-1] = vect[j];
                vect[len - 1] = k;
            }
            return *this;
        }
 
        bVect& operator >>= (int k)
        {
            for(int i = 0; i < k; i++)
            {
                int k = vect[len - 1];
                for(int j = len - 2; j >= 0; j--)
                    vect[j + 1] = vect[j];
                vect[0] = k;
            }
            return *this;
        }
};
 
int main()//void main (void) 
{
    int len;
    std::cout <<  "input lenght: "; 
    std::cin >> len; 
    bVect ob(len);
    ob.input();
    std::cout << ob << '\n';
    ob <<= 2; 
    std::cout << ob << '\n';
    ob >>= 2; 
    std::cout << ob << '\n';
    std::getchar();
}
Temoffey
 Аватар для Temoffey
20 / 40 / 0
Регистрация: 21.11.2010
Сообщений: 96
27.06.2011, 10:57  [ТС]     Выполнение действий с двоичными векторами #3
Помоему, тут только сдвиг. А как же с сложением?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 13:50     Выполнение действий с двоичными векторами #4
Цитата Сообщение от Temoffey Посмотреть сообщение
Помоему, тут только сдвиг. А как же с сложением?
слепой? см.
Цитата Сообщение от Maxwe11 Посмотреть сообщение
bVect operator + (const bVect & other) const
Добавлено через 4 минуты
в main-не не делал пример сложения
maxan98
0 / 0 / 0
Регистрация: 23.12.2015
Сообщений: 9
31.05.2016, 21:45     Выполнение действий с двоичными векторами #5
Не тестировал потому что не работает :/
Yandex
Объявления
31.05.2016, 21:45     Выполнение действий с двоичными векторами
Ответ Создать тему
Опции темы

Текущее время: 12:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru