С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
~SERG
3 / 3 / 1
Регистрация: 06.08.2012
Сообщений: 26
#1

Для нечетных чисел начиная с 9743 неправильно возводит в степень - C++

13.01.2013, 18:08. Просмотров 366. Ответов 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
// Для нечетных чисел начиная с 9743 неправильно возводит в степень
 // ответ на 1 меньше  почему?
#include<iostream>  
using std::cout;       
using std::endl;
using std::fixed; 
#include<cmath>
using std::pow;
#include<iomanip>
using std::setprecision;
 
 
    int main(){
    double x = 9743.0; 
 
    cout <<"\n\n 9743^4= "<< fixed << setprecision(0) <<  pow(x, 4.0) << endl; //неправильно
            
    cout <<"\n\n 9741^4= " << (9741.0 * 9741.0 *9741.0 * 9741.0) << endl;// считает  правильно
 
    cout <<"\n\n 9743^4= " << (9743.0 * 9743.0 *9743.0 * 9743.0) << endl;// неправильно 
    cout <<"\n\n 9797^4= " << (9797.0 * 9797 *9797 * 9797) << endl;// неправильно
    return 0;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 18:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для нечетных чисел начиная с 9743 неправильно возводит в степень (C++):

неправильно возводит в степень матрицу с++ - C++
неправильно возводит в степень матрицу не знаю может алгоритм неверный) #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include...

Программа не правильно возводит в степень - C++
Есть задача, перевернуть число. Программа работает, но вместо последней цифры выдаёт 2 совершенно других числа, например: 654 выдаёт 4559 ...

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

Написать программу, которая возводит число в соответствующую степень(без использования стандартных функций) - C++
Кто знает как решить задачу на С++. Нужно через цикл while её решить. Написать программу, которая возводит число в соответствующую...

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

Неправильно считается произведение, начиная с n=5 - C++
Составить программу вычисления и выдачи на печать суммы и произведения N элементов бесконечного числового ряда. Здесь и далее следует...

5
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
13.01.2013, 18:26 #2
может из за округления? как я понял вы задали выводить без дробной части. если получается, например, 9,99 будет выведено 9. отладчиком смотрели сколько на самом деле там получается?
0
Искринний
2 / 2 / 0
Регистрация: 02.02.2012
Сообщений: 36
13.01.2013, 19:58 #3
я так понимаю числа целые зачем вы их как вещественные прописуете

И что вам нужно вычислить??
0
~SERG
3 / 3 / 1
Регистрация: 06.08.2012
Сообщений: 26
14.01.2013, 00:16  [ТС] #4
Я пытался найти решение великой теоремы Ферма x^n + y^n = z^n ( ^- стетень) Все числа - целые.
Если использовать тип int произойдет переполнение разрядной сетки:
INT_MAX = 2 147 483 647 <-- это мах для типа int
например: 9797^4 = 9 212 392 481 101 681,

поэтому использовал double. Никакой дробной части у чисел нету, Чтобы компилятор использовал разрядную
сетку типа double к целому числу добавил ЯКОБЫ дробную часть 9797.0
0
vxg
Модератор
3188 / 1991 / 228
Регистрация: 13.01.2012
Сообщений: 7,712
14.01.2013, 11:34 #5
Цитата Сообщение от ~SERG Посмотреть сообщение
Никакой дробной части у чисел нету
проверил без округления - ответ такой же как у вас. действительно почему-то замыливает единицу...

Добавлено через 1 минуту
наверное от того что значащих цифр в ответе 16, а это - предел для double. вот оно в вблизи этой границы и начинает резать.
0
Байт
Нарушитель
Эксперт C
16679 / 10941 / 1679
Регистрация: 24.12.2010
Сообщений: 21,329
14.01.2013, 12:09 #6
~SERG, используйте длинную целую арифметику. Никакие встроенные типы вам не помогут. Они не заточены на великие теоремы.
0
14.01.2013, 12:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2013, 12:09
Привет! Вот еще темы с ответами:

Возведение в степень для больших чисел - C++
Всем привет ,когда возвожу число в большую степень например 9^31 ,то в переменную не помещается . Хочу сделать pow ,через boost cpp_int...

Неправильно работает cout для чисел типа double и float - C++
Здравствуйте. Скажите, почему эта программа выводит на экран число 2, а не 2.5 ? #include &lt;iostream.h&gt; int main() { double...

Для чисел от -50 до 50 найти количество четных отрицательных и количество положительных нечетных чисел - C++
Ребят,всем привет! Помогите пожалуйста решить данную задачу.Ее нужно написать на я зыке C /C++,каждую из них с постусловием и...

Макрос для подсчета четных и нечетных чисел - C++
Помогите с решением задачи: &quot;Создайте макрос для подсчёта количества чётных и нечётных чисел в целочисленном одномерном...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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