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

Расходящиеся ряды или как правильно задать проверку - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ структура данных http://www.cyberforum.ru/cpp-beginners/thread63519.html
помогите с решением (в структуре данных ):имеем в текстовом файле список студентов: фамилия ,имя шифр группы, название экзамена и оценки .сформировать лучших студентов ,у которых средние оценки даны в интервале . Список спорядковать по группе и фамилии: фамилия ,имя ,шифр группы, средний бал. Вывести две таблицы: данные и полученный результат.
C++ Размещение элементов массива по спирали Как разместить элементы массива (nxn) по спирали (начиная с нижнего левого угла против часовой стрелки)? Помогите пожалуйста!!(( http://www.cyberforum.ru/cpp-beginners/thread63488.html
C++ Функция strchr (Язык Си) -не выполняет=(
Не могу понять почему не работает, обьясните, пожалуйста, как исправить!! вот такое работает (это пример из компилятора): char *ptr, s='r'; ptr = strchr(s2, s); if (ptr) printf("The character %s is at position: %d\n", s, ptr-s2+1); else
ГРАФЫ C++
в Университете задали .Составить программу.(Графф) 1)Последовательность и количество вершин графа ,задает пользователь. 2)Если текущая вершина,без остатка делится на вышестоящую то располагается она слева , в противном случае справа . Обход вершин начинается сверху. Самая первая вершина делится на 1. Я по графам не силен , Помогите пожалуйста .
C++ запись в файл и чтение из файла http://www.cyberforum.ru/cpp-beginners/thread63440.html
Здравствуйте!!! Как правильно сделать в с++ запись в файл и чтение из файла?? Объясните пожалуйста с примерами??
C++ После компиляции выдает ошибку После компиляции выдает такое сообщение: ------ Build started: Project: dz2, Configuration: Debug Win32 ------ Compiling... Skipping... (no relevant changes detected) c.cpp Build log was saved at "file://d:\laba\dz2\dz2\Debug\BuildLog.htm" dz2 - 0 error(s), 0 warning(s) ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== подробнее

Показать сообщение отдельно
brute
0 / 0 / 0
Регистрация: 13.11.2009
Сообщений: 13
30.11.2009, 10:56  [ТС]     Расходящиеся ряды или как правильно задать проверку
Всем спасибо за поддержку и советы!

В итоге отладив программу пошагово, я понял наконец, где я теряю минус и преобразовал программу к такому виду(работает вполне сносно!):

code
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
#include "iostream"
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <math.h> 
 
//using CharToOemA func to convert ANSI to OEM
char bufRus[256];
char* Rus(const char* text)
    {
        CharToOemA(LPCSTR(text), bufRus);
        return bufRus;
    }
 
char* Rus(const char* text);
 
int _tmain(int argc, _TCHAR* argv[])
{
    double dXbegin, dXend, dXstep, N, E;//, N1=1, i=1.0;
    printf(Rus("Программа вычисления функции ln(x+1), заданной рядами Тейлора\n"));
    printf(Rus("и вывода в столбец значений ф-ии на интервале [x1;x2]\n"));
    printf(Rus("с шагом dx и заданной точностью E.\n"));
    printf(Rus("x лежит в диапазоне (-1;1]\n"));
    printf(Rus("Введите начало интервала, конец интервала, число шагов(N), точность вычислений.\n"));
    printf("x1, x2, N, E = ?\n");
    scanf("%lf%lf%lf%lf", &dXbegin, &dXend, &N, &E);
    
    if (    dXbegin < -1e300    // Проверка на диапазон значений вводимых чисел
        ||  dXbegin > 1e300
        ||  dXend < -1e300
        ||  dXend > 1e300
        ||  N < 1
        ||  N > 1e300
        ||  E < 0
        ||  E > 1e300)
    {
        printf(Rus("Вне диапазона\n"));
        getch();
        return 0;
    }
    if ( dXbegin > dXend )
    {
        printf(Rus("Начало интервала больше чем его конец, корректирую...\n"));
        //обойдемся без дополнительного ввода новой переменной
        dXbegin = dXbegin + dXend;  // {a = a0 + b0, b = b0}
        dXend   = dXbegin - dXend;  // {a = a0 + b0, b = a0}
        dXbegin = dXbegin - dXend;  // {a = b0, b = a0}
 
    }
    dXstep=fabs(dXend-dXbegin)/N;
    for (double x=dXbegin, i, y; x <= dXend; x+=dXstep)
    {
        if ( x <= -1 || x > 1)
        {
            printf(Rus("Значение функции в точке x=(%lf) не существует(задано условием)\n"), x);
            continue;
        }
 
        for (double i=1, minus=-1, y=0, N=1; E < fabs(N/i); i++)
        {
                if (i == 1)         //т.к. знакочередующаяся последовательность, пришлось пропустить
                    {           //программу через последовательное выполнение
                        N*=x;       //чтобы понять причину некорректного результата ...
                        y+=(N/i);   //итог: проверка условия в случае i == 1
                        continue;   //далее знак меняется нормально
                    }
                else
                    {
                    //minus*=-1.0;      //после первой итерации становится +, потом -...
                    N*=minus*x;     //следующий член ряда
                    y+=(N/i);       //сумма
                    if (E > fabs(N/i))
                        {
                            printf("i=%lf\n", i);
                            printf(Rus("В точке x=[%.10lf]\ty=[%.10lf]\n"), x, y);
                        }
                    if (i > 10000000)
                        {
                            printf(Rus("Количество итераций превысило 10,000,000 - прерываем цикл\n"));
                            printf(Rus("В точке x=[%.10lf]\ty=[%.10lf]\n"), x, y);
                            break;
                        }
                    }
        }
    }
    printf("E=[%e]\nN=[%lf]\ndXbegin=[%lf]\ndXend=[%lf]\n", E, N, dXbegin, dXend);
    getch();
    return 0;
}

P.S. функция немного другая правда: ln(x+1)
Но сути это не меняет, она такая же знакопеременная(не нужен только минус за скобкой как в первом примере)
 
Текущее время: 02:30. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru