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

Перевод кода из Турбо паскаля в С++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вызов функции. http://www.cyberforum.ru/cpp-beginners/thread98750.html
Здрасти, у меня есть функция вычесления суммы цифр числа int sum_digit(int x) { int sum=0; while (x!=0){ sum=sum+(x%10); x=x/10; } return sum; }
C++ Найти элемент с заданым условием Последовательность ( на рисунке) образована по правилу аi = 1 / i. Дано вещественное число ε: 0 < ε < 0,1. Найти такое аi, чтобы |аi - ai-1 |< ε. ai - это а итое,ai-1 - это а (итое-1) на языке С Люди, плз, помогите..:wall::help: http://www.cyberforum.ru/cpp-beginners/thread98728.html
Распечатать четверки чисел C++
Люди, помогите, очень нужна помощь...:help: на языке С Дано натуральное число N>19. Распечатать четвёрки простых чисел, не превосходящих N, принадлежащих одному десятку. Например, для числа 112 надо напечатать четвёрки:
C++ ХЭШ таблицы на С++
Всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): "Реализовать и протестировать конкретный класс динамической структуры данных, содержащий строки. Класс должен содержать интерфейс АТД для добавления, удаления и поиска элементов, а так же содержать: 1. перегруженный конструктор 2. диструктор 3.перегружаемые операции 4. обьявление и реализация дружественных...
C++ Сортировка http://www.cyberforum.ru/cpp-beginners/thread98720.html
Есть вот такая сортировочка (индексы l и r - границы сортировки): template <typename array, typename index> void sort_insertion_up(array * a, index l, index r) { index i = 0; for(i = r; i > l; i--) if(a > a) std::swap(a, a); for(i = l + 2; i <= r; i++) {
C++ ХЭШ ТАБЛИЦЫ НА С++ всем привет, кто-нить знает что-нибудь по вот такой задаче (цитирую условие): "Реализовать и протестировать конкретный класс динамической структуры данных, содержащий строки. Класс должен содержать интерфейс АТД для добавления, удаления и поиска элементов, а так же содержать: 1. перегруженный конструктор 2. диструктор 3.перегружаемые операции 4. обьявление и реализация дружественных... подробнее

Показать сообщение отдельно
kuroiryuu
 Аватар для kuroiryuu
311 / 295 / 23
Регистрация: 05.11.2009
Сообщений: 698
Завершенные тесты: 2
10.03.2010, 11:03     Перевод кода из Турбо паскаля в С++
перевод с Turbo Pascal в С++ (без графики)
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <locale.h>
#include <math.h>
 
double aaa, bbb, kkk;
 
const double g10c1=0.9739065285/6.2012983932; 
const double g10c2=0.8650633667/6.2012983932; 
const double g10c3=0.6794095683/6.2012983932; 
const double g10c4=0.4333953941/6.2012983932; 
const double g10c5=0.1488743390/6.2012983932; 
const double g10x1=0.0666713443/6.2012983932; 
const double g10x2=0.1494513492/6.2012983932; 
const double g10x3=0.2190863625/6.2012983932; 
const double g10x4=0.2692667193/6.2012983932; 
const double g10x5=0.2955242247/6.2012983932; 
 
double F(double x)//интегрируемая функция
{
    return kkk*(exp(-aaa * x) - exp(-bbb * x)); 
}
 
double gauss_calc(double a, double b)//сам десятиточечный метод Гаусса
{
    double n,m,s,s1,s2,s3,s4,s5; 
 
    m =(b + a) /2; 
    n =(b - a) /2; 
    s1 = g10c1 * (F(m + n * g10x1) + F(m - n * g10x1)); 
    s2 = g10c2 * (F(m + n * g10x2) + F(m - n * g10x2)); 
    s3 = g10c3 * (F(m + n * g10x3) + F(m - n * g10x3)); 
    s4 = g10c4 * (F(m + n * g10x4) + F(m - n * g10x4)); 
    s5 = g10c5 * (F(m + n * g10x5) + F(m - n * g10x5)); 
    s = s1 + s2 + s3 + s4 + s5; 
    return s * (b - a); 
} 
//рекурсивная ф-ция подсчета с заданной точностью
// gc - ранее посчитаный интеграл на интервале (a,b) 
double gauss(double a, double b, double eps, double gc)
{
    double t, ga, gb; 
    t = (a + b) /2; //разбиваем интервал на две половинки
    ga = gauss_calc(a, t); //в каждой половинке считаем интеграл
    gb = gauss_calc(t, b); 
    if (abs(ga + gb - gc) > eps) //проверяем точность вычислений
    {
        ga = gauss(a, t, eps/2, ga); //рекурсия для первой половинки
        gb = gauss(t, b, eps/2, gb); //рекурсия для второй половинки
    } //при этом точность повышаем, чтобы 
    //при сложении ошибка не накапливалась
    return ga + gb; //интеграл = сумме интегралов половинок
} 
 
void inputnum(char* prm, double &num, double lb, double ub) //процедура ввода данных
{
    bool q = false;
    
    do
    {
        printf("Введите %s ",prm); 
        scanf("&lf", &num); 
        q = (lb >= num) || (num > ub); 
        if (q) 
            printf("Число должно быть от %5.0lf до %5.0lf", lb, ub); 
    }
    while (!q); 
}
 
int main_menu()//Главное меню
{
    int i; 
 
    printf("==========================================================\n"); 
    printf("Что будем делать? \n"); 
    printf("----------------------------------------------------------\n"); 
    printf("0 - выход\n"); 
    printf("1 - решать тестовый пример a=1,5 b=6 k=10 eps = 0.0001\n"); 
    printf("2 - решать пример с произвольными a, b, k, eps\n"); 
    printf("----------------------------------------------------------\n"); 
    printf("Выбор >>> "); 
    scanf("%d",&i); 
    printf("==========================================================\n"); 
    return i; 
} 
 
void equateit(double a, double b, double eps) //процедура подсчета значения интеграла и вывода графика на экран
{
    double integral;
    int i,j; 
 
    integral = gauss(a, b, eps, gauss_calc(a, b)); 
    printf("Интеграл = %5.7lf\n", integral); 
    getchar();
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    int sel; 
    double eps; 
    printf("==========================================================\n"); 
    do
    {
        sel = main_menu(); 
        
        switch (sel)
        {
            case 1: 
                aaa = 1.5; 
                bbb = 6; 
                kkk = 10; 
                eps = 1e-4; 
                equateit(aaa,bbb,eps); 
                break;
            case 2:
                inputnum("a",aaa,0,1000); 
                inputnum("b",bbb,-1000,1000); 
                inputnum("k",kkk,-1000,1000); 
                inputnum("точность",eps,0.000000001,1); 
                equateit(aaa,bbb,eps); 
                break;
        }
    }
    while (sel==0); 
}
 
Текущее время: 11:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru