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

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

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

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

13.01.2013, 18:08. Просмотров 334. Ответов 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;
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2013, 18:08     Для нечетных чисел начиная с 9743 неправильно возводит в степень
Посмотрите здесь:

алгоритм для определения любых 2 последовательных нечетных чисел, сумма которых равна N в кубе C++
C++ Возведение в степень по модулю для чисел близких к max long long
Неправильно работает cout для чисел типа double и float C++
неправильно возводит в степень матрицу с++ C++
Написать программу для вычисления суммы факториалов всех нечетных чисел от 1 до 9. C++
C++ Напишите рекурсивную функцию, которая возводит число в степень путем многократного умножения числа на самое себя
Неправильно считается произведение, начиная с n=5 C++
C++ Программа для нахождения суммы квадратов всех нечетных чисел
Из множества целых чисел получить множество чисел, являющихся квадратами нечетных чисел C++
Написать программу, которая возводит число в соответствующую степень C++
Макрос для подсчета четных и нечетных чисел C++
Программа не правильно возводит в степень C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
 Аватар для vxg
2860 / 1793 / 183
Регистрация: 13.01.2012
Сообщений: 6,776
13.01.2013, 18:26     Для нечетных чисел начиная с 9743 неправильно возводит в степень #2
может из за округления? как я понял вы задали выводить без дробной части. если получается, например, 9,99 будет выведено 9. отладчиком смотрели сколько на самом деле там получается?
Искринний
 Аватар для Искринний
2 / 2 / 0
Регистрация: 02.02.2012
Сообщений: 36
13.01.2013, 19:58     Для нечетных чисел начиная с 9743 неправильно возводит в степень #3
я так понимаю числа целые зачем вы их как вещественные прописуете

И что вам нужно вычислить??
~SERG
3 / 3 / 1
Регистрация: 06.08.2012
Сообщений: 26
14.01.2013, 00:16  [ТС]     Для нечетных чисел начиная с 9743 неправильно возводит в степень #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
vxg
Модератор
 Аватар для vxg
2860 / 1793 / 183
Регистрация: 13.01.2012
Сообщений: 6,776
14.01.2013, 11:34     Для нечетных чисел начиная с 9743 неправильно возводит в степень #5
Цитата Сообщение от ~SERG Посмотреть сообщение
Никакой дробной части у чисел нету
проверил без округления - ответ такой же как у вас. действительно почему-то замыливает единицу...

Добавлено через 1 минуту
наверное от того что значащих цифр в ответе 16, а это - предел для double. вот оно в вблизи этой границы и начинает резать.
Байт
Эксперт C
 Аватар для Байт
15081 / 9483 / 1391
Регистрация: 24.12.2010
Сообщений: 17,566
14.01.2013, 12:09     Для нечетных чисел начиная с 9743 неправильно возводит в степень #6
~SERG, используйте длинную целую арифметику. Никакие встроенные типы вам не помогут. Они не заточены на великие теоремы.
Yandex
Объявления
14.01.2013, 12:09     Для нечетных чисел начиная с 9743 неправильно возводит в степень
Ответ Создать тему
Опции темы

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