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

Поправьте код... - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Определить, какая из фигур имеет большую площадь http://www.cyberforum.ru/cpp-beginners/thread90260.html
1) в стене существует квадратное отверстие N на N см. Имеется кирпич с измерениями a,b,c. определить пройдёт ли он в отверстие или нет. если подавать его можно параллельно стенкам отверстия. 2) определить, какая из фигур (круг или квадрат) имеет большую площадь. сторона квадрата A, радиус круга R. вывести на экран название и значение площади наибольшей фигуры.
C++ Замена символа пробела на заданную строку здрасти, со строками у меня как то плохо все, как заменить все символы пробелов на строку " !##! "? int main() { char probel = ' '; char Buf; FILE *file; file = fopen("in.txt", "w"); while((Buf = fgetc(file)) != EOF) { if (Buf == probel) http://www.cyberforum.ru/cpp-beginners/thread90258.html
Карточная игра из книги Лафоре C++
помогите плиз с парой вопросов. заранее спасибо.(2 вопроса в комментариях) // cardaray.cpp // класс игральных карт #include <iostream> #include <cstdlib> #include <ctime> using namespace std; enum Suit { clubs, diamonds, hearts, spades }; // от 2 до 10 обычные числа
C++ Текстовый файл
Помогите пожалуйста, как посчитать пробелы в строке? Вот пример открытия файла: #include <stdio.h> #include <stdlib.h> #include <conio.h> int main() { FILE *f; char file; char p;
C++ Функция и эхо контроль http://www.cyberforum.ru/cpp-beginners/thread90221.html
Даны положительные действительные числа А, Х, Е(epsilon). В последовательности У1,У2,... ,образованной по закону У0=А; Уi=1/2(Уi-1 +Х/Уi-1) , i=1,2,3,4........? (i, i-1 --индексы У) найти первый член Уn, для которого выполнено неравенство |Уn*Уn-Уn-1*Уn-1|<Е (n, n-1 -- индекс У) Подскажите как осуществить ввод исходных чисел с клавиатуры с эхо-контролем и проверкой условия и чтобы это в...
C++ Поиск. Бинарный поиск Ребятушки, а это опять я :) Задали индивидуальное задание " Бинарный поиск " Препод сказал, сделать простейшую программку с методом бинарного поиска) Я опять :( искала в инете, а там одна ересть, ни понятные фрагменты... Может кто не будь, пример полной программы показать с коментарием строчек, что бы было понятно по русски, что где как обозначает :rtfm: помогите пожалуйста а :umnik: подробнее

Показать сообщение отдельно
Johni
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 21
27.01.2010, 21:07     Поправьте код...
Помогите поправить код...не пойму в чем ошибка....программы разложения в ряд ln(x+1)
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;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru