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

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

Войти
Регистрация
Восстановить пароль
 
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
#1

Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? - C++

11.11.2012, 00:34. Просмотров 1028. Ответов 12
Метки нет (Все метки)

Почему функцию sqrt нельзя применять к int переменным, а только к double и float?

Извините за опечатку в названии темы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.11.2012, 00:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему функцию sqrt нельзя применять к int переменным, а только к double и flot? (C++):

Почему sqrt требует тип double? - C++
Здравствуйте. Заметил, что в VS 2008 при вызове некоторых математических функций, в частности sqrt, требуется явно приводить тип к double....

Почему нельзя объявить в описание класса статический double? - C++
Ближе к делу :) class SuperClass { public: SuperClass() {} static const int A = 0; static const double B = 0; //ERROR*...

Написать функцию с переменным числом параметров, находящую минимальное из чисел типа int - C++
Помогите и объясните: Написать функцию fmin с переменным числом параметров, которая находит минимальное из чисел типа int. Должно быть не...

Конверсия указателя из double в int, пропускает передаваемые переменные в функцию - C++
Здрасти, такая проблема код : #include <iostream> #include <sstream> #include <cstring> using namespace std; void...

Почему нельзя переделать dll в exe, изменив входную функцию? - C++
Да почему? Прикладываю проект, он очень прост. Вот на всякий случай код *.cpp #include "stdafx.h" #define WIN32_LEAN_AND_MEAN ...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
NoMasters
Псевдослучайный
1753 / 1096 / 72
Регистрация: 13.09.2011
Сообщений: 3,127
11.11.2012, 00:35 #2
А почему вы спрашиваете?
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 00:36  [ТС] #3
NoMasters, интересно
NoMasters
Псевдослучайный
1753 / 1096 / 72
Регистрация: 13.09.2011
Сообщений: 3,127
11.11.2012, 00:40 #4
А какой смысл делать отдельный вариант для целого? Никаких преимуществ лишняя реализация не даст, всё равно внутри придется работать с вещественными типами.
m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 00:48 #5
функция sqrt,встроенная функция,и оно всегда возвращает double,если тя нужен инт, преобразует его в инт,
функция sqrt это квадратный корень числа,оно больше встречается как дабл чем инт.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include "stdafx.h"
#include "math.h"
#include "iostream.h"
 
 
int main(int argc, char* argv[])
{
    int a=sqrt(10);
    double k=sqrt(10);
    cout<<a<<endl;
    cout<<k<<endl;
    //\ili
    int h=k;
    cout<<h<<endl;
    return 0;
}
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 00:53  [ТС] #6
Цитата Сообщение от NoMasters Посмотреть сообщение
всё равно внутри придется работать с вещественными типами.
int занимает памяти в 2 раза меньше чем double.
к тому же квадрат всех натуральных чисел всегда целое число,и sqrt естественно будет возвращать тоже целое, а не вещественное.
NoMasters
Псевдослучайный
1753 / 1096 / 72
Регистрация: 13.09.2011
Сообщений: 3,127
11.11.2012, 00:55 #7
Цитата Сообщение от StanislavUA Посмотреть сообщение
к тому квадрат всех натуральных чисел всегда целое число
Что ни разу не значит, что каждое целое является квадратом целого.
Цитата Сообщение от StanislavUA Посмотреть сообщение
sqrt естественно будет возвращать тоже целое
И какое же целое он должен вернуть для, например, двух?
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 01:02  [ТС] #8
m0nAde, для использования sqrt math.h подключать не нужно. к тому же из-за того что для sqrt нужен double или float, вариант с sqrt(10) не прокатит, нужно писать sqrt(10.0).

Добавлено через 4 минуты
Цитата Сообщение от NoMasters Посмотреть сообщение
И какое же целое он должен вернуть для, например, двух?
имелось ввиду,что sqrt возвращает целое от квадрата целого(то есть 49-7, 4-2 и т.д.), а 2 не является квадратом какого-то целого.
NoMasters
Псевдослучайный
1753 / 1096 / 72
Регистрация: 13.09.2011
Сообщений: 3,127
11.11.2012, 01:06 #9
StanislavUA, кому он нужен будет такой?
m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 01:11 #10
у меня vs6 так что нужно подключать,и еще с sqrt(10) у меня не было никаких проблем скоко я помню, ну не знаю, может я вас не понял,
ну я там уже вставлял код,копируй и компилируй,посмотрим как не прокатит
StanislavUA
44 / 44 / 3
Регистрация: 27.04.2011
Сообщений: 163
11.11.2012, 01:14  [ТС] #11
Цитата Сообщение от NoMasters Посмотреть сообщение
кому он нужен будет такой?
я не говорю, что бы он работал только с int, просто поддержка этого типа во многих случаях была бы полезна(по крайней мере мне).

Добавлено через 2 минуты
Цитата Сообщение от m0nAde Посмотреть сообщение
ну я там уже вставлял код,копируй и компилируй
спасибо,но я знаю как работает функция sqrt.
m0nAde
4 / 4 / 1
Регистрация: 03.09.2011
Сообщений: 26
11.11.2012, 01:16 #12
Рад за вас,удачи в поисках ответов!!!
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.11.2012, 01:29 #13
А в чём проблема? Определяете её себе и живёте счастливо.
C++
1
2
3
4
5
6
#include <math.h>
 
int sqrt(int x)
{
    return sqrt(static_cast<double>(x));
}
А не определена, потому что извлечение корня это частичная функция на множестве целых чисел. Слишком много вариантов действий для тех чисел, для которых она не определена. И не надо про "это ж очевидно, что надо округлить к ближайшему целому". Ни разу не очевидно. Логичнее было бы падать так же, как падает деление на ноль.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2012, 01:29
Привет! Вот еще темы с ответами:

Почему мы пишем double x (double y)? а не через запятую double x,y - C++
почему мы пишем double x (double y)? а не через запятую double x,y

Sqrt(double) - C++
Не могу понять, что это значит: double dist, sqrt(double); Понятно, что это объявление переменных, но зачем дабл в скобках?

Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных: float, int, double - C++
Используя перегрузки, написать функцию для выполнения действий, для следующих типов данных float, int, double, long: приведение типов.

Цикл: Для числа N вычислить значение следующего выражения: sqrt((1) + sqrt((2) + ... + sqrt(2 * N))) - C++
Как это решить? sqrt((1)+sqrt((2)+..+sqrt(2n)))


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
11.11.2012, 01:29
Ответ Создать тему
Опции темы

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