1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
1

Описать класс одномерный массив (вектор) целых чисел. Перегрузить следующую операцию: > уменьшить элементы вектора на заданное значение

20.12.2012, 10:21. Показов 5542. Ответов 10
Метки нет (Все метки)

Описать класс одномерный массив (вектор) целых чисел. Перегрузить следующую операцию: > уменьшить элементы вектора на заданное значение.

Добавлено через 18 минут
Вот программа. Правильно ли она работает? Напишиите пожалуйста коментарии.
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
#pragma argsused
#include <iostream>
 
class Vector
{
      private:
              int *vec;
              int size;
      public:
             Vector();
             Vector(int mas[], int n);
             ~Vector();
             
             friend std::ostream & operator<<(std::ostream & os, const Vector & b);
             Vector & operator>(int n);
};
 #include "Vector.h"
 
 Vector::Vector()
 {
      size = 1;
      vec = new int[1];
      vec[0]=0;
 }
         
 Vector::Vector(int mas[],const int n)
 {
      size = n;
      vec = new int[n];
      for(int i=0; i<n; i++)
      vec[i]=mas[i];
 }
            
 Vector::~Vector()
 {
          delete [] vec;
 }
 
 std::ostream & operator<<(std::ostream & os, const Vector & b)
 {
              for(int i=0; i<b.size; i++)
              os << "vector[" << i << "]:" << b.vec[i] << std::endl;
     return os;
 }
        
Vector & Vector::operator>(int n)
 {
        for(int i=0; i<size; i++)
        vec[i]-=n;
        
        return *this;
 }
#include <iostream>
#include "Vector.h"
 
using std::cout;
using std::cin;
using std::endl;
 
int main()
{
    int mas[5] = {1,2,3,4,5};
    
    Vector i(mas,5);
    
    cout << i;
    cout << endl;
    
    cout << (i>5);
    cout << endl;
    
    i>-5;
    
    cout << i;
    cout << endl;
 
    system("pause");
    
    return 0;
 
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2012, 10:21
Ответы с готовыми решениями:

Реализовать класс Одномерный массив (вектор) вещественных чисел; перегрузить указанные операции
одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить следующие операции: -...

Описать класс Vector как вектор из пяти пар двузначных целых чисел
Описать класс Vector как вектор из 5 пар двузначных целых чисел. Определить оператор &gt; и оператор...

Как описать одномерный массив целых и действительных чисел одновременно?
как описать одномерный массив целых и действительных чисел вместе???

Одномерный массив заполнить случайными числами от -1 до 10. Элементы массива значение которых меньше 5, уменьшить на 1
Одномерный массив из 6 элементов заполнить случайным образом числами от -1 до 10. Все элементы...

10
26 / 24 / 8
Регистрация: 27.10.2012
Сообщений: 74
20.12.2012, 12:06 2
зачем два раза #include <iostream> и #include "Vector.h"?
0
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
22.12.2012, 00:06  [ТС] 3
Можно и без них. Может кто комментарии написать?

Добавлено через 15 часов 36 минут
Никто не может написать комментарии?
0
574 / 557 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
22.12.2012, 00:18 4

Не по теме:

investr, честно говоря, лениво) Да и откуда я могу знать, насколько вы не знаете язык? Может вам не понятно 2 строчки, а может все.


А по теме - давайте перейдем на систему "вопрос-ответ". Вы задаете вопрос по непонятной строчке и ждете на него ответ.
// перед этим желательно помучить автора кода, у которого вы этот код и взяли
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
22.12.2012, 00:47 5
так пойдёт?
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
//#pragma argsused                  // директивая которая уберает предупреджения типа какой-то параметр не испульзуется в такой-то функции
                              // вроде есть только у борланда (это комплиятор такой)
#include <iostream>       // надеюсь это не надо объяснять
 
class Vector        // объявляем класс Vector
{
      private:
              int *vec;
              int size;
      public:
             Vector();
             Vector(int mas[], int n);
             ~Vector();
             
             // тут пошло самое интересное перегрузка операторов :)
             // пока не перегрузишь самостоятельно несколько раз не поймешь до конца что к чему
             friend std::ostream & operator<<(std::ostream & os, const Vector & b);
             Vector & operator>(int n);
};
 //#include "Vector" // закоментируй это. это были три файла Vector.h, Vector.cpp и main.cpp
                     // поэтому несколько "инклудов"
  
 Vector::Vector()  // конструтор по умолчанию, т.е. если мы просто создадим вектор без аргументов
 {                 // то у нас создается массив с одним элементом = 0
      size = 1;
      vec = new int[1];
      vec[0]=0;
 }
         
 Vector::Vector(int mas[],const int n) // конструктор с аргументами
 {
      size = n;
      vec = new int[n]; // выделяем память под массив на n элементов
      for(int i=0; i<n; i++)
      vec[i]=mas[i];    // и присваеваем каждому его элементу соотвествующий элемент переданного в конструктор массива 
 }
            
 Vector::~Vector()      // в деструкторе возвращаем память обратно в кучу
 {
          delete [] vec;      
 }
 
 std::ostream & operator<<(std::ostream & os, const Vector & b)  // перегрузка оператора << 
 {  // передаём по ссылке объект os класса ostream и объект b класса Vector
              for(int i=0; i<b.size; i++)
              os << "vector[" << i << "]:" << b.vec[i] << std::endl;  // делаем красивый вывод значения для этого объекта
     return os;
 }
        
Vector & Vector::operator>(int n)  // перегрузка оператора >
 {
        for(int i=0; i<size; i++) // пробегаем по всему массиву 
        vec[i]-=n;                // и уменьшаем каждый член этого массива на n
        
        return *this;
 }
//#include <iostream>
//#include "Vector.h"
 
using std::cout;  // используем чтобы вместе std::cout можно было бы писать короче
using std::cin;   // cout cin endl
using std::endl;
 
int main()
{
    int mas[5] = {1,2,3,4,5};  // создаём массив
    
    Vector i(mas,5);  // забиваем массив mas в вектор i
    
    cout << i;        // выводим этот вектор через перегруженный оператор <<
    cout << endl;
    
    cout << (i>5);    // выводим вектор с уменьшенными значениями
    cout << endl;
    
    i>-5;           // "уменьшаем" на -5
    
    cout << i;     // снова выводим
    cout << endl;
 
    system("pause");
    
    return 0;
 
}
1
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
22.12.2012, 18:02  [ТС] 6
Спасибо огромное!

Добавлено через 8 часов 28 минут
А как можно сделать использую другую перегрузку операторов?
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
22.12.2012, 22:26 7
сделать что?
другая перегрузка == перегрузка других операторов?
0
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
24.12.2012, 23:23  [ТС] 8
Другим способом перегрузку сделать.
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 23:59 9
не совсем понял. Сделать перегрузку другого оператора или по-другому перегрузить этот оператор?
0
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
26.12.2012, 16:22  [ТС] 10
По другому перегрузить этот оператор
0
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
26.12.2012, 18:08 11
C++
1
2
3
4
5
6
7
Vector & Vector::operator>(int n)  // перегрузка оператора >
 {
        for(int i=0; i<size; i++)
        vec[i]+=n;                // заменили vec[i]-=n на vec[i]+=n;
        
        return *this;
 }
теперь он увеличивает элементы вектора на заданное значение.
Задавайте вопрос конкретнее, как именно по-другому перегрузить оператор?
Если написать vec[i]*=n (vec[i]/=n), то он будет умножать (делить) на заданное значение.
если написать vec[i] += n * 10, то оператор будет увеличивать на n*10 все элементы вектора.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.12.2012, 18:08
Помогаю со студенческими работами здесь

Дан массив целых чисел все элементы оканчивающиеся цифрой 4,уменьшить на 2
Дан массив целых чисел все элементы оканчивающиеся цифрой 4,уменьшить на 2

Дан массив целых чисел. Все элементы, оканчивающиеся цифрой 4, уменьшить вдвое
Дан массив целых чисел. Все элементы, оканчивающиеся цифрой 4, уменьшить вдвое.

Дан массив целых чисел. Все элементы, оканчивающиеся цифрой 4, уменьшить вдвое.
Дан массив целых чисел. Все элементы, оканчивающиеся цифрой 4, уменьшить вдвое.

Описать класс, реализующий простой динамический массив из целых чисел
Всем привет. Ребят помогите с задачей разобраться, вот текст задачи: Описать класс, реализующий...

Дан массив целых чисел из 10 элементов.Все элементы кратные 10 заменить 0;Все нечетные элементы удвоить, а четные уменьшить на 2;
Дан массив целых чисел из 50 элементов. Все элементы кратные 10 заменить 0; Все нечетные...

Дано двумерный массив целых чисел. Все парные элементы заданного массива уменьшить вдвое.
На паскале надо написать эти программы, а то у меня что то не получается 1. Дано двумерный массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru