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

Работа над ошибками - C++

Восстановить пароль Регистрация
 
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
01.10.2012, 16:06     Работа над ошибками #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <math.h>
using namespace std;
 
 
int main()
{
    double a,b,c;
    bool x;
    cout << "Hello world!" << endl;
    cin >> a >> b >> c ;
    if ( abs(a) == abs(b) && abs(b) == abs(c) && abs(a) == abs (c) )
    x == 1;
    else x == 0;
    cout << x;
    return 0;
}
Выдаёт
C++
1
2
3
4
5
\main.cpp||In function 'int main()':|
\main.cpp|12|error: 'abs' was not declared in this scope|
\main.cpp|13|warning: statement has no effect|
\main.cpp|14|warning: statement has no effect|
||=== Build finished: 1 errors, 2 warnings ===|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2012, 16:06     Работа над ошибками
Посмотрите здесь:

C++ работа над матрицами
C++ Работа над множествами,STL
C++ Работа над массивом с 10 элементами
Работа над векторами! C++
задача С++ масивы работа над ошибками C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 16:14     Работа над ошибками #2
C++
1
2
x = 1;
else x = 0;
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
01.10.2012, 16:16     Работа над ошибками #3
Для вещественных чисел надо использовать fabs.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 16:25     Работа над ошибками #4
Насчёт 'abs' не знаю. Два компилятора ошибки не выдают.

Добавлено через 6 минут
Цитата Сообщение от Somebody Посмотреть сообщение
Для вещественных чисел надо использовать fabs.
abs() для double совпадает с fabs().
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
01.10.2012, 16:27  [ТС]     Работа над ошибками #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Насчёт 'abs' не знаю. Два компилятора ошибки не выдают.

Добавлено через 6 минут
abs() для double совпадает с fabs().
Но мой компилятор сразу же отреагировал на изменение. И всё заработало
Если можете, подскажите ещё с булевским типом.
Можно ли по другому получить ответ от условия?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 16:39     Работа над ошибками #6
Цитата Сообщение от sergey_viper Посмотреть сообщение
Но мой компилятор сразу же отреагировал на изменение.
Что изменили и какой компилятор?

Добавлено через 3 минуты
C++
1
if ( abs(a) == abs(b) && abs(b) == abs(c))
Этого, по моему, достаточно.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
01.10.2012, 16:46     Работа над ошибками #7
Цитата Сообщение от alsav22 Посмотреть сообщение
abs() для double совпадает с fabs().
Действительно, не знал. Но всё равно это не сишная функция, и в таком случае надо math.h менять на cmath.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 16:55     Работа над ошибками #8
Цитата Сообщение от Somebody Посмотреть сообщение
Но всё равно это не сишная функция, и в таком случае надо math.h менять на cmath.
Может быть, но у меня в Студии показывает, что abs() объявлена в math.h. Может от компилятора зависит, какой заголовок надо прописать? sergey_viper, какой компилятор используете?
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
01.10.2012, 17:17  [ТС]     Работа над ошибками #9
Цитата Сообщение от alsav22 Посмотреть сообщение
Что изменили и какой компилятор?

Добавлено через 3 минуты
C++
1
if ( abs(a) == abs(b) && abs(b) == abs(c))
Этого, по моему, достаточно.
Кодеблокс и GCC compiler from MinGW.
С++
Я изначально ошибся, мне надо не И а ИЛИ.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 17:24     Работа над ошибками #10
Так что изменили, после чего заработало? abs() на fabs() ?
sergey_viper
9 / 3 / 1
Регистрация: 15.04.2012
Сообщений: 177
01.10.2012, 17:44  [ТС]     Работа над ошибками #11
Цитата Сообщение от alsav22 Посмотреть сообщение
Так что изменили, после чего заработало? abs() на fabs() ?
Именно. Не знаю с чем это связано, так как сам нуб
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
01.10.2012, 17:58     Работа над ошибками #12
Вот gcc ругается, когда без cmath:
http://liveworkspace.org/code/6f54d6...fe62c2bbdeab19
Цитата Сообщение от alsav22 Посмотреть сообщение
Может быть, но у меня в Студии показывает, что abs() объявлена в math.h. Может от компилятора зависит, какой заголовок надо прописать?
В Студии много чего может быть...
А вообще, если я правильно понял отсюда:
http://www.open-std.org/jtc1/sc22/wg...docs/n1570.pdf (7.22.6)
http://www.open-std.org/jtc1/sc22/wg...2012/n3337.pdf (26.8)
везде и всегда был fabs в math.h/cmath.
В C *abs есть в stdlib:
C
1
2
3
int abs(int j);
long int labs(long int j);
long long int llabs(long long int j);
В C++ в cstdlib добавляются abs для long и long long, а в cmath - для float, double и long double.
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 18:19     Работа над ошибками #13
Цитата Сообщение от Somebody Посмотреть сообщение
В Студии много чего может быть...
Согласен, но mingv тоже ошибки не выдаёт.
Миниатюры
Работа над ошибками  
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
01.10.2012, 19:04     Работа над ошибками #14
Цитата Сообщение от alsav22 Посмотреть сообщение
Согласен, но mingv тоже ошибки не выдаёт.
Странно...
Миниатюры
Работа над ошибками  
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2012, 19:39     Работа над ошибками #15
Компиляторы, наверное, разные. Сборака от niXman. Я отдельно подключал. Папка с дистрибутивом вот так выглядит: x86_64-mingw32-gcc-4.7.0-release-c,c++,fortran-sjlj. А это окно такое же?
Миниатюры
Работа над ошибками  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2012, 19:41     Работа над ошибками
Еще ссылки по теме:

Работа над ошибками,пару элементарных заданий C++
Работа над переменной в программе и подпрограмме C++
Создание и использование классов.Работа над ошибками C++

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

Или воспользуйтесь поиском по форуму:
DrSMERTb
 Аватар для DrSMERTb
59 / 35 / 4
Регистрация: 12.11.2010
Сообщений: 808
01.10.2012, 19:41     Работа над ошибками #16
sergey_viper,
C++
1
#include <cmath>
и использый abs(), и по логике вещей будет тебе счастье)
Да и тут ещё, лучше вот так:
C++
1
if ( (abs(a) == abs(b)) && (abs(b) == abs(c)) && (abs(a) == abs (c)) )
А если не сработает abs() , то можно sqrt(row(a,2));
Yandex
Объявления
01.10.2012, 19:41     Работа над ошибками
Ответ Создать тему
Опции темы

Текущее время: 15:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru