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

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

14.03.2010, 17:37. Показов 3791. Ответов 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
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru