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

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

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

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

13.01.2013, 18:08. Просмотров 343. Ответов 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 неправильно возводит в степень
Посмотрите здесь:

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

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

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

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

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

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

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

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

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

Программа для нахождения суммы квадратов всех нечетных чисел - C++
Знаю,что неправильно считает,3 раза подряд выдало 165,хотя вручную совсем другое число выходило. #include &quot;stdafx.h&quot; #include...

Написать программу для вычисления суммы факториалов всех нечетных чисел от 1 до 9. - C++
Помогите, пожалуйста, решить задачу в С++. Написать программу для вычисления суммы факториалов всех нечетных чисел от 1 до 9.

Возведение в степень по модулю для чисел близких к max long long - C++
Даны числа A,B,C&lt;=2^63-1 Надо посчитать A^B mod С. прошу не выкладывать стандартный алгоритм для Int, так как неверный ответ в итоге...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vxg
Модератор
3116 / 1918 / 208
Регистрация: 13.01.2012
Сообщений: 7,332
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
Модератор
3116 / 1918 / 208
Регистрация: 13.01.2012
Сообщений: 7,332
14.01.2013, 11:34     Для нечетных чисел начиная с 9743 неправильно возводит в степень #5
Цитата Сообщение от ~SERG Посмотреть сообщение
Никакой дробной части у чисел нету
проверил без округления - ответ такой же как у вас. действительно почему-то замыливает единицу...

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

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