Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
RiMpel2
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 22
1

Ошибка .#ID000

17.01.2013, 00:04. Просмотров 262. Ответов 7
Метки нет (Все метки)

Ввожу значения 1,1,11,1. через какое то время вместо чисел появляются в таблице лишь 1.#ID000
Вот код.
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
// Laba4_4.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
 
#include <fstream>
#include <locale.h>
 
 
using namespace std;
 
 
 
double fact (double fa){
    
    int n=1;
    int na=1;
    for (n=1; n<=fa; n=n+1)
    {
    na=na*n;
    }
    return na;
}
double xnach,xkonec,epsilon,delta,newdel,xkn,x,i;
double func(double x, double epsilon) 
                {
 
     double lastresult, result,fa;
     int ik=0;
     int dd=1;
 
    lastresult = 0;
    result=0;
 
    do {
        result = lastresult;
        
        fa=ik;
        lastresult = ((dd * pow(x, ik)) / fact(fa)); 
       ik=ik+2;
        dd=dd*(-1);
       lastresult = lastresult + result;
    } while ((abs(lastresult - result)) >= epsilon);
 
    return lastresult;
                }
int _tmain(int argc, _TCHAR* argv[])
{
    
    
 
 
 
    ss:
    cout << "Epsilon";
    cin >> epsilon;
    cout << " x1";
    cin >>xnach;
    cout << " x2 ";
        cin >>xkonec;
        cout << "delta";
        cin >>delta;
    xkn=xkonec-xnach;
    
    if (epsilon<0) {cout<< "error/n, try again";
    goto ss;
    }
    if ((xkn*delta)<0) {cout<< "error/n, try again";
    goto ss;
    }
 
    
    printf("|      x         |      mycos  (x) |       cos(x)  |      delta     |\n");
    printf(" --------------------------------------------------------------------\n");
    i=xnach;
    for( i; i<=xkonec; i=i+delta)
    { x=i;
        newdel=sqrt(abs((func(x,epsilon)*func(x,epsilon))-((cos(x))*(cos(x)))));
    printf("| %14.12f | %14.12f | %14.12f | %14.12f |\n",x,func(x,epsilon),cos(x),newdel);
    
    
    }
 
 
    
    
 
 
 
 
 
 
 
    
    return 0;
    }
Почему так?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2013, 00:04
Ответы с готовыми решениями:

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к...

Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи!
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error).
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после...

Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех полей таблицы...

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты.
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim myMail Set myMail =...

7
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,756
Записей в блоге: 1
17.01.2013, 00:40 2
тексты с goto не читаю. Пусть он тут и не в самом страшном виде.
0
RiMpel2
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 22
17.01.2013, 00:57  [ТС] 3
goto тут вообще лишь для возврата после ошибки введенных данных, т.е. на все остальное он не влияет.

Добавлено через 58 секунд
Если убрать это, то:
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
// Laba4_4.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
#include <stdlib.h>
#include <string.h>
 
#include <fstream>
#include <locale.h>
 
 
using namespace std;
 
 
 
double fact (double fa){
    
    int n=1;
    int na=1;
    for (n=1; n<=fa; n=n+1)
    {
    na=na*n;
    }
    return na;
}
double xnach,xkonec,epsilon,delta,newdel,xkn,x,i;
double func(double x, double epsilon) 
                {
 
     double lastresult, result,fa;
     int ik=0;
     int dd=1;
 
    lastresult = 0;
    result=0;
 
    do {
        result = lastresult;
        
        fa=ik;
        lastresult = ((dd * pow(x, ik)) / fact(fa)); 
       ik=ik+2;
        dd=dd*(-1);
       lastresult = lastresult + result;
    } while ((abs(lastresult - result)) >= epsilon);
 
    return lastresult;
                }
int _tmain(int argc, _TCHAR* argv[])
{
    
    
 
 
 
    
    cout << "Epsilon";
    cin >> epsilon;
    cout << " x1";
    cin >>xnach;
    cout << " x2 ";
        cin >>xkonec;
        cout << "delta";
        cin >>delta;
    xkn=xkonec-xnach;
    
 
 
    
    printf("|      x         |      mycos  (x) |       cos(x)  |      delta     |\n");
    printf(" --------------------------------------------------------------------\n");
    i=xnach;
    for( i; i<=xkonec; i=i+delta)
    { x=i;
        newdel=sqrt(abs((func(x,epsilon)*func(x,epsilon))-((cos(x))*(cos(x)))));
    printf("| %14.12f | %14.12f | %14.12f | %14.12f |\n",x,func(x,epsilon),cos(x),newdel);
    
    
    }
 
 
 
    
    return 0;
    }
Добавлено через 1 минуту
Если вводить скажем Х начальное = 6, а Эпсилон = 1, то все значения уходят в 1.#ID000. При х от 1 до 5 и Эпс=1 значения считаются верно.

Добавлено через 6 минут
Проблема решена заменой int na=1; на double na=1;
)))
0
-=ЮрА=-
Заблокирован
Автор FAQ
17.01.2013, 01:00 4
RiMpel2, почитай
Вычисление функций с использованием их разложения в степенной ряд
Вычисление арккотангенса через арктангенс, разложенный в степенные ряды
Твоя ошибка свидедтельствует либо о делении на ноль либо о зашкаливании значения и его ухода на бесконечность. Я не хочу разирать код по костям, так как с тех знаний которыми я обладаю код поста 1 просто антиморален. Просто пройди по ссылкам, поймёшь почему я так говорю (не обижайся за код, это маленький ужастик просто)

Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от RiMpel2 Посмотреть сообщение
а Эпсилон = 1
- эпсилон это значение погрешности, его значение должно быть в пределах 0,0001 и менее, один это погрешность катастрофически большая.

0
Kuzia domovenok
2421 / 2151 / 525
Регистрация: 25.03.2012
Сообщений: 7,756
Записей в блоге: 1
17.01.2013, 01:10 5
функция func считает нечто невразумительное(x==6 eps==1). Что она должна считать
0
RiMpel2
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 22
17.01.2013, 01:14  [ТС] 6
Благодарю. С утра почитаю.

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
это маленький ужастик просто
Со временем все будет

Добавлено через 3 минуты
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
функция func считает нечто невразумительное(x==6 eps==1). Что она должна считать
Функция func считает косинус х через ряд тейлора, причем до того момента, пока разность соседних слагаемых в ряду не станет меньше эпсилона. или что-то типа того. Впрочем написал, что проблему решил заменой инта на дабл у переменной na) всем спасибо.
0
-=ЮрА=-
17.01.2013, 01:19
  #7

Не по теме:

Цитата Сообщение от RiMpel2 Посмотреть сообщение
Функция func считает косинус х через ряд тейлора, причем до того момента, пока разность соседних слагаемых в ряду не станет меньше эпсилона. или что-то типа того. Впрочем написал, что проблему решил заменой инта на дабл у переменной na) всем спасибо.
- зайди в мой FAQ на него есть линк во второй ссылке да скопипасть это разложение - уже готове есть (+ по памяти есть и блок-схема там)

Цитата Сообщение от RiMpel2 Посмотреть сообщение
Со временем все будет
- я ж тебе и говорю, чтобы было не современем а побыстрей прочти ссылки. Считать факториал на каждой итерации это просто убийственно для скорости, чтобы ускорить надо искать рекуррентный сомножитель будет и быстро и правильно да и кода куда меньше. Ладно я не буду навязывать свою точку зрения...

0
RiMpel2
0 / 0 / 0
Регистрация: 04.10.2010
Сообщений: 22
17.01.2013, 11:20  [ТС] 8
Просто препод проверяет код на копипасту со всеми студентами, сдававшими лабы от нескольких лет назад до сегодняшнего дня. Так что мне выгоднее такой ужас ему сдать, ибо уже пролетал с лабой, когда списывал решение из инета.
0
17.01.2013, 11:20
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2013, 11:20

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать)
1C 8.2 Документооборот КОРП 1.2 Текст ошибки...

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка &quot;Ошибка доступа...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера'
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' ...


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

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

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