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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.60
Opiym
8 / 8 / 0
Регистрация: 02.11.2009
Сообщений: 89
#1

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

14.03.2010, 17:37. Просмотров 1921. Ответов 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; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.03.2010, 17:37     Перегрузка функций
Посмотрите здесь:

Перегрузка функций - C++
Прошу помогите, очень нужно, до 24.02, если не сдам, то отчислят!(((( Программка на перегрузку функций... Определить максимальное из чисел,...

Перегрузка функций - C++
Попались на глаза две функции.Сразу напишу их в коде double RND() { return (random(RAND_MAX)/(double)RAND_MAX); }; ...

Перегрузка функций - C++
Здравствуйте!!! я не однократно просил помочь на этом форуме...именно с перегрузкой стека!!! Потому что все мои попытки самостоятельно...

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

Перегрузка функций - C++
Помогите написать программу: Перегрузка функций. Написать перегруженные функции и основную программу, которая их вызывает. а) для...

Перегрузка функций - C++
Добрый вечер) очень нужна помощь нужно решить задачу, все решила, кроме одного пункта. создать класс окружность (okr) ....

Перегрузка функций - C++
Определить две функции с одним именем для решения задачи. Определить функцию, которая находит минимальное значение из двух чисел (числа...

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

Добавлено через 1 час 23 минуты
+1000 и Aye Aye
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2010, 14:16     Перегрузка функций
Еще ссылки по теме:

перегрузка функций - C++
Помогите: как изменится поле private, когда мы делаем перегрузку функции? Функция заполняет массив в зависимости от того, какого типа...

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

Перегрузка функций - C++
Задание: Написать перегруженные функции и основную программу, которая их вызывает. а) для массива целых чисел находит количество...

Перегрузка функций - C++
Здравствуйте уважаемые програмисты:) У меня вот такое задание: В классе необходимо перегрузить нижеследующие операции, при этом две...

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


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

Или воспользуйтесь поиском по форуму:
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
17.03.2010, 14:16     Перегрузка функций #22
хватит уже страдать!
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 стр. Х))) думал еще не решен вопрос
Yandex
Объявления
17.03.2010, 14:16     Перегрузка функций
Ответ Создать тему
Опции темы

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