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

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

Войти
Регистрация
Восстановить пароль
 
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
#1

Число не входит по размеру в тип данных - C++

09.10.2012, 10:05. Просмотров 361. Ответов 5
Метки нет (Все метки)

При вводе вводим следующее: выбираем первый пункт, затем x=2, E = 30. Когда факториал доходит до числа 35, то выводится #INFOO; Как можно исправить проблему?
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
 
double MachineZero();
int function();
 
int main()
{
    int count, n, q, sum, number;
    unsigned int factor;
    float x;
    double y, z, w;
    double b;
    float E; //это наша точность
    w = 0; // для подсчёта суммы ряда
 
    printf("Choose number 1 or 2\n");
    printf("1).E-zaday sam; X - zaday sam\n");
    printf("2).E-max; X - zaday sam\n");
    scanf("%d", &number);
 
    switch(number) {
 
    case 1: // 1-й случай
    printf("Enter x:\n");
    scanf("%f", &x);
    printf("Enter E:\n");
    scanf("%f", &E);
 
    for(n=1;;n++) {
    y = pow(x, 2*n+1);
    z = pow(-1.0, n);
    printf("y: %.0f\nz: %.0f\n", y, z);
 
    q = 2*n+1;
    factor=1;
    for(count=1;count<=q;count++) factor= factor*count;
    printf("Faktorial chisla %d raven %d\n", q, factor);
 
    b = z/factor*y;
    printf("%f\n\n", b);
 
    w = b+w;
 
    if(E<fabs(b)) {
    printf("Sum ryada do tochnosty %f ravna: %f\n", E, w);
    break;
    }
 
    }
 
    break;
    
    case 2: // 2-й случай
 
    printf("Enter x:\n");
    scanf("%f", &x);
    E = MachineZero();
    printf("Our E: %e\n", E);
 
    for(n=1;;n++) {
    y = pow(x, 2*n+1);
    z = pow(-1.0, n);
    printf("y: %.0f\nz: %.0f\n", y, z);
 
    q = 2*n+1;
    factor=1;
    for(count=1;count<=q;count++) factor= factor*count;
    printf("Faktorial chisla %d raven %d\n", q, factor);
 
    b = z/factor*y;
    printf("%f\n\n", b);
 
    w = b+w;
 
    if(E<fabs(b)) {
    printf("Sum ryada do tochnosty %e ravna: %f\n", E, w);
    break;
    }
 
    }
    break;
 
    default: // по default
        printf("wrong number\n");
 
    } //end of switch
    
 
 
    system("pause");
    return 0;
}
 
 
double MachineZero(){
    float v,u=1;
    do{
        v=u;
        u/=2;
    }while (u);
    return v;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.10.2012, 10:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Число не входит по размеру в тип данных (C++):

Символьный тип данных, выяснить входит ли в последовательность s1, s2, …, sn буква j - C++
Даны символы s1, s2, … . Известно, что символ отличен от восклицательного знака и что среди s1, s2, … есть по крайней мере один...

Создать тип данных Многоразрядное число - C++
Создать тип данных Многоразрядное число. Разработать следующие функции: • Equal() – сравнение двух многоразрядных чисел (возвращает...

Создать абстрактный тип данных (структура) — вектор, который имеет указатель на int и число элементов - C++
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на int и число элементов. Определить функции: инициализации,...

Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов - C++
Создать абстрактный тип данных (структура) - вектор, который имеет указатель на short и число элементов. Определить функции: инициализации,...

4.53. Дано трехзначное число. Определить: а) входит ли в него цифра 6, б) входит ли в него цифра n - C++
4.53. Дано трехзначное число. Определить: а) входит ли в него цифра 6, б) входит ли в него цифра n

Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число элементов и переменную состояния - C++
Помогите пожалуйста, нужно написать код на с++ Создать абстрактный тип данных - класс вектор, который имеет указатель на long, число...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
09.10.2012, 10:26 #2
Применить длинную арифметику
0
aleksand
21 / 9 / 2
Регистрация: 18.06.2011
Сообщений: 185
09.10.2012, 10:29  [ТС] #3
Цитата Сообщение от Байт Посмотреть сообщение
Применить длинную арифметику
Это как? Распишите подробнее пожалуйста
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
09.10.2012, 10:36 #4
Цитата Сообщение от aleksand Посмотреть сообщение
Это как? Распишите подробнее пожалуйста
Поищите в гугле и на форуме
0
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
09.10.2012, 12:53 #5
Ну есть ещё long long для тех кому мало int. Если и его не хватате - вам придёться написать свой класс (реализовать через массив например) поддерживающий операции + - и остальные какие вам там понадобятся. Последний вариант конечно в разы медленнее, но других вариантов нет.
0
Байт
Эксперт C
16063 / 10332 / 1540
Регистрация: 24.12.2010
Сообщений: 19,478
09.10.2012, 13:11 #6
Цитата Сообщение от Gepar Посмотреть сообщение
Ну есть ещё long long для тех кому мало int.
Ну, lond long меньше double, а ТС использует именно double. И судя по всему, требуются очень большие факториалы
Если и его не хватает - вам придется написать свой класс (реализовать через массив например) поддерживающий операции + - и остальные какие вам там понадобятся.
Да, это и есть длинная арифметика. Но свой класс выдумывать не обязательно. в гугле и на форуме таких реализаций вагон и маленькая тележка. ИМХО, логичнее всего делать через вектора
Последний вариант конечно в разы медленнее, но других вариантов нет.
Тут уж ничего не поделаешь! Какова задача - такие и расходы!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2012, 13:11
Привет! Вот еще темы с ответами:

Enum и типы данных. Как задать тип значений явно, и какой тип будет при переполнении? - C++
Пытаюсь сделать функцию с передачей нескольких параметров,используя битовые операции. В качестве параметров думаю использовать не...

Перечисляемый тип данных.Символьный тип. - C++
1.type месяц = ( янв, фев, мар, апр, май, июн, июл, авг, сен, окт, ноя, дек ); год = (високосный, невисокосный); var d:28..31;...

Определить, входит ли в последовательность i-ое число Фибоначчи - C++
Дана упорядоченная последовательность натуральных чисел b произвольной длины. Найти, входит ли в эту последовательность I(итое)число...

Выяснить входит ли цифра 3 в заданое число - C++
Дано натуральное число n. Выяснить, входит ли цифра 3 в запись числа n2. Нужен код + максимально подробное объяснение, завтра сдавать ...


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

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

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