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

Ошибка при перегрузке операторов

01.12.2011, 00:45. Показов 1417. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
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
#include <stdio.h>
#include <conio.h>
 
class fraction
{
public:
    int numerator;
    int denominator;
    fraction();
    fraction(int i){
        numerator=i;
        denominator=1;
    }
    fraction(int i, int j){
        numerator=i;
        denominator=j;
    }
    void out(){
        if(denominator==1)
            printf("%i",numerator);
        else
            printf("%i/%i",numerator,denominator);
    }
    fraction operator+(fraction i){
        fraction res;
        res.denominator=denominator*i.denominator;
        res.numerator=numerator*i.denominator+i.numerator*denominator;
        return res;
    }
};
 
 
 
 
void main()
{
    int i=2,j=3;
    fraction z(i,j),x(j,i),y;
    y=z+x;
 
 
    y.out();
    
 
 
    getch();
}
Добавлено через 1 минуту
логи:
1>------ Построение начато: проект: laba5, Конфигурация: Debug Win32 ------
1>Построение начато 01.12.2011 2:23:00.
1>InitializeBuildStatus:
1> Обращение к "Debug\laba5.unsuccessfulbuild".
1>ClCompile:
1> main.cpp
1>c:\users\frozenfox\documents\visual studio 2010\projects\laba5\laba5\main.cpp(46): warning C4996: 'getch': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _getch. See online help for details.
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\conio.h(128): см. объявление "getch"
1>ManifestResourceCompile:
1> Для всех выходных данных обновления не требуется.
1>main.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall fraction::fraction(void)" (??0fraction@@QAE@XZ) в функции _main
1>C:\Users\FrozenFox\Documents\Visual Studio 2010\Projects\laba5\Debug\laba5.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:00.50
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========




и есчо вопросик: почему на гетч выдаются варнинги?
потому, что считается ненадежной функцией как сканф или принтф?

Добавлено через 18 минут
использую visual studio 2010
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.12.2011, 00:45
Ответы с готовыми решениями:

Ошибка при перегрузке операторов.
Здравствуйте! Возникла необходимость создать свой класс-обертку для работы с большими числами. Бибилиотека mpir=порт GMP. Пример рабочий:...

Ошибка при перегрузке операторов в классе
Я создал класс myNVector для работы с векторами произвольного размера: в заголовочном файле: class myNVector { public: ...

Ошибка в перегрузке операторов?
не могу понять в чем ошибка class cMatrix { private: int rows; int columns; public:

6
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
01.12.2011, 00:55
Цитата Сообщение от FrozenFox Посмотреть сообщение
C++
1
fraction();
а где реализация конструктора по-умолчанию?

Добавлено через 3 минуты
Цитата Сообщение от FrozenFox Посмотреть сообщение
и есчо вопросик: почему на гетч выдаются варнинги?
потому, что считается ненадежной функцией как сканф или принтф?
Ну английским языком же написано, что данное POSIX имя является устаревшим. Надо использовать ISO C++ вариант.
1
 Аватар для Rexer
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
01.12.2011, 01:01
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
#include<stdio.h>
 
class fraction
{
public:
        int numerator;
        int denominator;
        fraction(){
                numerator=0;
                denominator=0;
};
        fraction(int i){
                numerator=i;
                denominator=1;
        }
        fraction(int i, int j){
                numerator=i;
                denominator=j;
        }
        void out(){
                if(denominator==1)
                        printf("%i",numerator);
                else
                        printf("%i/%i",numerator,denominator);
        }
        fraction operator+(fraction i){
                fraction res;
                res.denominator=denominator*i.denominator;
                res.numerator=numerator*i.denominator+i.numerator*denominator;
                return res;
        }
};
 
 
 
 
int main()
{
        int i=2,j=3;
        fraction z(2,3);
        fraction x(2,3);
        fraction y;
        y=z+x;
 
 
        y.out();
getchar();
}
Ну вот так работает
Конструктор по умолчанию определите и  все заработает
вместо getch() лучше пользуйтесь getchar(); что по сути одно и то же
1
0 / 0 / 0
Регистрация: 08.11.2011
Сообщений: 7
01.12.2011, 01:09  [ТС]
спасибо большое =)
теперь, завтра на лабе, я сдам самую лучшую программу вычисления обратной матрицы методом гаусса ^_^
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
01.12.2011, 01:17
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fraction() {
        numerator=0;
        denominator=0;
};
 
fraction(int i) {
        numerator=i;
        denominator=1;
}
 
fraction(int i, int j) {
        numerator=i;
        denominator=j;
}
Все это добро можно заменить одним конструктором:
C++
1
2
3
4
fraction(int i = 0, int j = 1) {
        numerator = i;
        denominator = j;
}
И еще неплохо бы обрабатывать момент, когда пользователь пытается создать объект с denominator равным 0.
Rexer, а у Вас, кстати, создается как раз с нулем
2
0 / 0 / 0
Регистрация: 08.11.2011
Сообщений: 7
01.12.2011, 01:37  [ТС]
fasked, спасибо, что предупредили, наша преподавательница могла попробовать это использовать, чтобы поиздеваться =)


ну, это исправляется на лету =)

Добавлено через 59 секунд
если пытается знаменатель занулить, насильно ставим еденицу)

Добавлено через 1 минуту
если пытается знаменатель занулить, насильно ставим еденицу)

а раз нет нулей, то в перегрузку умножения и деления проверку на зануливание деноминатора можно не ставить)

Добавлено через 7 минут
оО теперь осталось научиться выделять динамическую память под объекты класса хД

Добавлено через 6 минут
а еще придумал упрощение дроби вставить в конструктор дабы исключить случай переполнения типа инт)
охохо... дорого же будет использовать этот класс..... при создании нового объекта цикл... а если использовать массив дробей (fraction)?...
жаба душит
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
01.12.2011, 01:51
Цитата Сообщение от FrozenFox Посмотреть сообщение
а еще придумал упрощение дроби вставить в конструктор дабы исключить случай переполнения типа инт
В конструкторе переполнения быть не может. Принимается int и присваивается значение другому int.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.12.2011, 01:51
Помогаю со студенческими работами здесь

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

Ошибка в перегрузке операторов для класса - итератора
Добрый вечер. Есть заготовка программы для работы с матрицей, построенной из узлов с четырьмя связями (вверх, вниз, влево, вправо)....

При перегрузке операторов не записывает значение
Собственно вот мой код: class.h class Otrezku { public: Otrezku(); Otrezku(float , float , float , float ); ...

Ошибки при перегрузке операторов класса
Задали в универе для класа триугольника с полями 3х сторон реализовать перегрузку операторов &lt;&lt;, !=, ==, &lt;, &gt;, &lt;=, &gt;=. ...

Можно ли при перегрузке операторов задавать дополнительные параметры?
Здравствуйте. Мне в функции перегрузки оператора нужно передать дополнительный параметр, можно ли это сделать? void operator...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru