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

Извлечение корня n-степени - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 86, средняя оценка - 4.73
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
24.09.2011, 18:59     Извлечение корня n-степени #1
Написал программу для вычисления корня n-cтепени

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()
{setlocale(LC_ALL,"Rus");
float a,b;
cout<<"Введите число --> ";
cin>>a;
cout<<"Введите  степень извлечения --> ";
cin>>b;
b=pow(a,1/b);
cout<<"Результат = "<<b;
cin.get();
cin.get();
return 0;
}
Но из отрицательных чисел эта программа не извлекает корня. Как это исправить ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.09.2011, 18:59     Извлечение корня n-степени #2
Цитата Сообщение от parkito Посмотреть сообщение
Но из отрицательных чисел эта программа не извлекает коня.
Так корень из них нельзя извлечь, разве нет?
А коня тем более =)
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.09.2011, 19:03     Извлечение корня n-степени #3
parkito, возьми а помодулю, а потом проверку, если а < 0 то результат домножай на -1 иначе так и оставляем результат
Цитата Сообщение от diagon Посмотреть сообщение
Так корень из них нельзя извлечь, разве нет?
нет)
1ogos
1 / 1 / 0
Регистрация: 23.11.2008
Сообщений: 25
24.09.2011, 19:05     Извлечение корня n-степени #4
Цитата Сообщение от Jupiter Посмотреть сообщение
parkito, возьми а помодулю, а потом проверку, если а < 0 то результат домножай на -1 иначе так и оставляем результат
Цитата Сообщение от diagon Посмотреть сообщение
Так корень из них нельзя извлечь, разве нет?
А коня тем более =)
нет)
Можно, только это будут уже комплексные числа. Правда автор программы наврядли их имел в виду)
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
24.09.2011, 19:06  [ТС]     Извлечение корня n-степени #5
Цитата Сообщение от diagon Посмотреть сообщение
Так корень из них нельзя извлечь, разве нет?
А коня тем более =)

Как это нельзя?
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
24.09.2011, 19:07     Извлечение корня n-степени #6
Цитата Сообщение от Jupiter Посмотреть сообщение
parkito, возьми а помодулю, а потом проверку, если а < 0 то результат домножай на -1 иначе так и оставляем результат

нет)
А, ну да, есть же нечетные степени.
Тогда да, так можно.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
24.09.2011, 19:07     Извлечение корня n-степени #7
Цитата Сообщение от diagon Посмотреть сообщение
Так корень из них нельзя извлечь, разве нет?
Смотря какой корень. Арифметический чётной степени - нельзя. Иначе - можно.

Добавлено через 24 секунды

Не по теме:

Эхх, опоздун я, как обычно))

parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
24.09.2011, 19:45  [ТС]     Извлечение корня n-степени #8
Почитав ваши рекомендации набыдлокодил:
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
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
 
int main()
{setlocale(LC_ALL,"Rus");
float a,b;
int c,t=0;
cout<<"Введите число --> ";
cin>>a;
cout<<"Введите  степень извлечения --> ";
cin>>b;
c=b;
if(a<0&&c%2!=0)
{a*=-1;t++;}
if(a<0&&c%2==0)
    {cout<<"Ошибка ";
cin.get();
cin.get();
exit(0);}
b=pow(a,1/b);
if (t!=0)
    b*=-1;
cout<<"Результат = "<<b;
cin.get();
cin.get();
return 0;
}
Спасибо !
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
24.09.2011, 21:53     Извлечение корня n-степени #9
C++
1
2
3
float a,b;
int c,t=0;
c=b;
Лихо) А из -2 извлечется корень 0.5 ? - походу на проверке слетит.
parkito
 Аватар для parkito
11 / 11 / 2
Регистрация: 22.03.2010
Сообщений: 685
24.09.2011, 22:12  [ТС]     Извлечение корня n-степени #10
Цитата Сообщение от KuKu Посмотреть сообщение
C++
1
2
3
float a,b;
int c,t=0;
c=b;
Лихо) А из -2 извлечется корень 0.5 ? - походу на проверке слетит.
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
#include<iostream>
#include<math.h>
#include<stdlib.h>
using namespace std;
 
int main()
{setlocale(LC_ALL,"Rus");
float a,b;
int c,t=0;
cout<<"Введите число --> ";
cin>>a;
cout<<"Введите  степень извлечения --> ";
cin>>b;
c=b;
if(a<0&&c%2!=0)
{a*=-1;t++;}
if(a<0&&c%2==0||b-c>0)
        {cout<<"Ошибка ";
cin.get();
cin.get();
exit(0);}
b=pow(a,1/b);
if (t!=0)
        b*=-1;
cout<<"Результат = "<<b;
cin.get();
cin.get();
return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.09.2011, 22:29     Извлечение корня n-степени
Еще ссылки по теме:

Извлечение корня н-ной степени из числа C++
Вычисление корня n-ой степени C++
Рекурсивное вычисление корня k-й степени C++

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

Или воспользуйтесь поиском по форуму:
KuKu
 Аватар для KuKu
1538 / 1016 / 69
Регистрация: 17.04.2009
Сообщений: 2,945
24.09.2011, 22:29     Извлечение корня n-степени #11
ну опять ошибка) а вродь 4 должно быть
Yandex
Объявления
24.09.2011, 22:29     Извлечение корня n-степени
Ответ Создать тему
Опции темы

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