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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
investr
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
#1

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

20.12.2012, 10:21. Просмотров 1609. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.12.2012, 10:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Описать класс одномерный массив (вектор) целых чисел. Перегрузить следующую операцию: > уменьшить элементы вектора на заданное значение (C++):

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

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

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

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

Дан одномерный массив состоящий из n целых чисел, надо сортировать элементы по уменьшению - C++
Дан одномерный массив состоящий из n целых чисел, надо сортировать элементы по уменьшению (если возможно, то с обяснениями)

Ввести квадратную матрицу целых чисел*. Элементы матрицы, которые не попадают в интервал [a,b] записать в отдельный вектор (массив) - C++
Парни, помогите пожалуйста сложить программку вот с таким условием: Ввести квадратную матрицу целых чисел*. Элементы матрицы, которые...

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

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

Не по теме:

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


А по теме - давайте перейдем на систему "вопрос-ответ". Вы задаете вопрос по непонятной строчке и ждете на него ответ.
// перед этим желательно помучить автора кода, у которого вы этот код и взяли
0
SummerRain
326 / 325 / 17
Регистрация: 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
investr
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
22.12.2012, 18:02  [ТС] #6
Спасибо огромное!

Добавлено через 8 часов 28 минут
А как можно сделать использую другую перегрузку операторов?
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
22.12.2012, 22:26 #7
сделать что?
другая перегрузка == перегрузка других операторов?
0
investr
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
24.12.2012, 23:23  [ТС] #8
Другим способом перегрузку сделать.
0
SummerRain
326 / 325 / 17
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 23:59 #9
не совсем понял. Сделать перегрузку другого оператора или по-другому перегрузить этот оператор?
0
investr
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
26.12.2012, 16:22  [ТС] #10
По другому перегрузить этот оператор
0
SummerRain
326 / 325 / 17
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2012, 18:08
Привет! Вот еще темы с ответами:

Описать класс Vector как вектор из пяти пар двузначных целых чисел - C#
Описать класс Vector как вектор из 5 пар двузначных целых чисел. Определить оператор &gt; и оператор += для комбинаций векторов(где...

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.12.2012, 18:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru