Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89

Перегрузка функций

14.03.2010, 17:37. Показов 3921. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте ! Попробовал выполнить задание, но есть проблемы...Кто может проверит а ошибки...
Задание:
АДТ - одномерный массив (вектор) вещественных чисел. Дополнительно перегрузить след. операции:
"+" - сложение векторов (a[i]+b[i] для всех i);
"[]" - доступ по индексу;
"+" - добавить число к вектору (double+vector)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Задание вроде как выполнил, но проблема в том, что не знаю как проверить работоспособность, нужен небольшой тест.
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
#include <iostream> 
using namespace std; 
 
class matrix {   // класс
private: 
  float m[3]; // одномерный массив
 
public: 
  matrix();                  
  matrix(float initial);      
  matrix(const matrix& mat); 
  ~matrix() {}                 
 
  // перегрузка операций  
    // доступ по индексу  
  float   operator [] (const int index_x); 
    // вычитание числа  
  matrix  operator + (const float value); 
    // вычитание матрицы 
  matrix  operator + (const matrix& mat);    
}; 
 
matrix::matrix() { 
  // создаем матрицу 
  for(int i=0; i<3; i++) 
         m[i]=0.f;  
  m[0]=m[1]=m[2]=1.f; 
} 
 
matrix::matrix(float initial) { 
  for(int i=0; i<3; i++) 
         m[i]=0.f; 
  m[0]=m[1]=m[2]=initial; 
} 
 
matrix::matrix(const matrix& mat) { 
  // копируем матрицу 
  for(int i=0; i<3; i++) 
         m[i]=mat.m[i]; 
} 
 //доступ по индексу
float matrix::operator [](const int index_x) { 
  return m[index_x]; 
}  
 
matrix matrix::operator + (const matrix& mat) { 
  matrix tmp; 
  for(int i=0; i<3; i++) 
       tmp.m[i]=m[i]+mat.m[i]; 
  return tmp; 
} 
 
matrix matrix::operator + (const float value) { 
  matrix tmp; 
  for(int i=0; i<3; i++) 
        tmp.m[i]=m[i]+value; 
  return tmp; 
} 
 
// вспомогательная функция для вывода матрицы   
void printMatrix(matrix& mat) { 
 cout << mat[0] << " " << mat[1] << " " << mat[2] << endl; 
  //cout << "------------------------" << endl; 
} 
 
int main() { 
[B]  // небольшой тест написанного [/B] 
  
  return 0; 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.03.2010, 17:37
Ответы с готовыми решениями:

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Перегрузка функций. Реализация функций
Разработать функцию f(x) , которая возвращает младшую цифру натурального числа x . Вычислить с ее помощью значение выражения z= f(a) +...

Перегрузка функций с++
Задача состоит в том, чтобы написать перегуженную функцию и то, что будет её вывзывать в перегуженной функкции надо реализовать сложение...

21
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
14.03.2010, 23:45  [ТС]
Студворк — интернет-сервис помощи студентам
СПАСИБО БОЛЬШОЕ ! Всё Супер ! тебе +1000

Добавлено через 1 час 23 минуты
+1000 и Aye Aye
0
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
17.03.2010, 14:16
хватит уже страдать!
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
#include <iostream>
#include <conio.h>
using namespace std;
 
class vect{
private:
        int sz;//размер вектора
        int *data; //массив
public:
       explicit vect(int i)
       {
                data=new int[i];
                sz=i;
       }
       ~vect()
       {
              delete [] data;
       }
       vect &operator+(vect &V)//ссылку возвращаем!!
       {
             if (sz!=V.sz) return *this; //вообщето, если вектора не совпадают по размеру это ошибка, и должно заканчиваться печально.
             for (int i=0;i <sz;i++)
             {
                 data[i]+=V.data[i];
             } 
             return *this;
       }
       int &operator[](int index) //тута надо ссылку возвращать! а не сам элемент!!!!
       {
           return data[index];
       } 
       vect& operator + (int num)
       {
             for (int i=0;i<sz;i++)
             {
                 data[i]+=num;
             }
             return *this;
       }
       int size()
       {
           return sz;
       }
};
int main()
{
    srand(time(0)); //настройка генератора случайных чисел
    
    vect v1(10);//первый вектор из 10-и элементов
    vect v2(10);//второй вектор из 10-и элементов
    
    //заполняем первый вектор случайными числами
    for (int i=0;i<v1.size();i++)
    {
        v1[i]=rand()%10;
    }
    //заполняем второй вектор случайными числами
    for (int i=0;i<v2.size();i++)
    {
        v2[i]=rand()%10;
    }
    
    //распечатываем первый вектор
    cout << "v1=[";
    // вот эта конструкция:   ((i+1<v1.size())?(','):(']'))  нужна чтобы запятая не выводилась после последнего числа в векторе
    for (int i=0;i<v1.size();i++) cout << v1[i] <<((i+1<v1.size())?(','):(']'));
    cout << endl;
    //распечатываем второй вектор
    cout << "v2=[";
    for (int i=0;i<v2.size();i++) cout << v2[i] <<((i+1<v2.size())?(','):(']'));
    cout << endl;
    //поэлементно прибавляем в первому вектору второй
    v1=v1+v2;
    //теперь надо показать что получилось
    cout << "v1=v1+v2\n";
    cout << "new v1=[";
    for (int i=0;i<v1.size();i++) cout << v1[i] <<((i+1<v1.size())?(','):(']'));
    cout << endl;
    //ну дальше разберешься я надеюсь ))))
    //надо еше остальные операторы продемонстрировать в работе
    getch(); //задержка экрана (на саммов деле ожидание на ввод сивола)
    return 0;
}
ой sorry!!! не посмотрел тему дальше 1 стр. Х))) думал еще не решен вопрос
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.03.2010, 14:16

Перегрузка функций
Доброго времени суток . Очень нужна ваша помощь . Нужно написать программу , которая обеспечивает перемножение 2 чисел , перемножение...

Перегрузка функций
Всем привет! Дано задание : написать программу для работы с двумерными массивами, которая будет содержать перегруженные функции для...

Перегрузка функций
Добрый день! Скажите, пожалуйста, как функция перегружается в классе? Мне нужно подробное объяснение (в каком месте программного кода,...

Перегрузка функций в C++
Создать класс Integer для работы с целыми числами. Определить перегруженную функцию, возвращающую sin аргумента. Функция не является членом...

Перегрузка функций
Стало интересно из-за возможна перегрузка функций в программе на языке С++, с чем это связано, как реализовано внутри программы? Кто...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru