Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/30: Рейтинг темы: голосов - 30, средняя оценка - 4.73
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77

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

20.12.2012, 10:21. Показов 6477. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.12.2012, 10:21
Ответы с готовыми решениями:

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

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

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

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

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

Не по теме:

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


А по теме - давайте перейдем на систему "вопрос-ответ". Вы задаете вопрос по непонятной строчке и ждете на него ответ.
// перед этим желательно помучить автора кода, у которого вы этот код и взяли
0
 Аватар для SummerRain
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
22.12.2012, 00:47
так пойдёт?
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  [ТС]
Спасибо огромное!

Добавлено через 8 часов 28 минут
А как можно сделать использую другую перегрузку операторов?
0
 Аватар для SummerRain
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
22.12.2012, 22:26
сделать что?
другая перегрузка == перегрузка других операторов?
0
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
24.12.2012, 23:23  [ТС]
Другим способом перегрузку сделать.
0
 Аватар для SummerRain
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
24.12.2012, 23:59
не совсем понял. Сделать перегрузку другого оператора или по-другому перегрузить этот оператор?
0
1 / 1 / 2
Регистрация: 30.11.2011
Сообщений: 77
26.12.2012, 16:22  [ТС]
По другому перегрузить этот оператор
0
 Аватар для SummerRain
328 / 327 / 92
Регистрация: 16.12.2012
Сообщений: 544
26.12.2012, 18:08
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2012, 18:08
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru