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

Программа интерполяции измерений методом Ньютона - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Программа не может открыть файл по полному пути http://www.cyberforum.ru/cpp-beginners/thread1158357.html
Есть проект в VS 2012, который работает с библиотекой OpenCV. В коде пишу полный путь к файлу. Все работает и файл открывается программой. Отключаю библиотеку(просто меняю название папки, в которой она находится) и добавляю нужные dll в папку с экзешником. Программа запускается, но файл она не открывает. Что не так?
C++ Сортировка двунаправленного списка Помогите отсортировать составленный список по определенному полю, я пробовал методом пузырька, но не получается, просьба подсказать: void uploadFileRating(Film **first, Film **close){ Film *external = *first; //Внейшний на одно приращение Film *tmp; Film *interior; //Внутренний, который будет пробегать по всему списку while (external->next) { interior... http://www.cyberforum.ru/cpp-beginners/thread1158312.html
Создать третий массив из элементов двух данных C++
Подскажите, пожалуйста, как сформировать массив С между А и В #include "stdafx.h" #include <stdlib.h> #include <stdio.h> void cm(int A, int a) { int i; for (i=0; i<a; i++) A=i+rand(); }
Найти максимальное число, которое расположено ниже главной и ниже обратной диагонали C++
Дана квадратная матрица целых чисел размером N<=12. Заполнить матрицу случайными числами от 0 до 100. Найти максимальное число, которое расположено ниже главной и ниже обратной диагонали. Матрицу вывести красиво по строкам на экран. Результаты вычислений также вывести на экран.
C++ Перегрузка operator>>, классы Point, CIrcle, List http://www.cyberforum.ru/cpp-beginners/thread1158284.html
Добрый вечер! имеется класс Point (x, y), Сircle (r) и класс List c встроенным в него классов Node. требуется кроме прочего перегрузить оператор чтения из файла. перегружен был следующим ниже образом. но нужно сделать так чтобы x и y считались в Point, r в Circle, соответственно. а в List это все долно собираться в объект класса circle и соответственно добавляться в список. ума не приложу как...
C++ Сортировка массива У меня есть цель наклепать сортировку с помощью (1)прямого выбора и и сортировку (2)Шелла. Делаю все пошагово, сначала алгоритм действий (1) чтобы было все ясно чего куда: для i от 1 до n-1 выполнять -> присвоить k наименьший из a,..,a -> поменять местами a и a, после перейти к шагу 1. Вот код задания массива: #include <iostream.h> #include <conio.h> #include <stdlib.h> int main () { ... подробнее

Показать сообщение отдельно
strash
0 / 0 / 0
Регистрация: 11.04.2014
Сообщений: 6

Программа интерполяции измерений методом Ньютона - C++

26.04.2014, 21:22. Просмотров 269. Ответов 0
Метки (Все метки)

доброго времени суток.. помогите пожалуйста написал курсач , а он слишком велик оказался помогите подкорректировать и убрать что не нужно или там заменить.) код прилагается)

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
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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
#include<iostream>
#include<fstream>
#include<conio.h>
#include<stdlib.h>
using namespace std;
long double zniach(int i,int j);
long double fstr(char*);
void vvod(void);
void matrix(void);
long double X[500];
long double Y[500];
long double C[500];
int nekd;
int N;
long double mass[500][500];
int main()
{
vvod();
if (nekd==1) return 0;
 
matrix();
if (nekd==1) return 0;
 
system("grafics.exe");
return 0;
}
 
void vvod(void)
{
char varvv=0;
while((varvv!='1')&&(varvv!='2'))
    {
    cout << "Kak vvesti dannye?\n1. S klaviatury\n2. Iz faila?\n";
    cin >> varvv;
    if ((varvv!='1')&&(varvv!='2')) cout <<"Vy doljny vvesty 1 ili 2!\n";
    }
char stroka[50];
if (varvv=='1')
    {
    cout <<"Vvedite chislo tochek.\n";
    cin >>stroka;
    N=(int)fstr(stroka);
    if (nekd==1) return;
    for(int i=0;i<N;i++)
        {
        cout<<"Vvedite X["<<i<<"]="; 
        cin>>stroka;
        X[i]=fstr(stroka);
        if (nekd==1) return;
        cout<<endl;
        cout<<"Vvedite Y["<<i<<"]="; 
        cin>>stroka;
        cout<<endl;
        Y[i]=fstr(stroka);
        if (nekd==1) return;
        }
    }
if (varvv=='2')
    {
    char filename[255];
    while (1) //Ввод имени и проверка файла
        {
        cout << "Vvedite imja faila. Fail ne doljen soderjat' bolee 255 simvolov, probelov i tol'ko latinskie bukvy.\n";
        for (int i=0;i<255;i++) filename[i]=0;
        cin >> filename;
        ifstream fin(filename); //проверка файла
        char q=0;
        fin >> q;
        fin.close();
        if (q==0)
            {
            cout << "\nFail  \"" << filename << "\"  Pustoj ili ne sushestvuet. Dlia prodoljenija najmite enter.\n";
            getch();
            }
        else 
            {
            break;
            }
        }
    ifstream fin(filename);
    fin>>stroka;
    N=(int)fstr(stroka);
    if (nekd==1) return;
    for(int i=0;i<N;i++)
        {
        fin>>stroka;
        X[i]=fstr(stroka);
        if (nekd==1) return;
        fin>>stroka;
        Y[i]=fstr(stroka);
        if (nekd==1) return;
        }
    fin.close();
    }
ofstream fout("data.txt");
for(int i=0;i<N;i++)
    fout<<X[i]<<"  "<<Y[i]<<endl;
fout.close();
}
 
void matrix(void)
{
for(int i=0;i<N;i++)
    mass[i][0]=1; 
for(int i=1;i<N;i++)
for(int j=1;j<i+1;j++)   
    mass[i][j]=zniach(i,j);
 
for(int i=0;i<N;i++)     
    {
    cout<<endl;
    for(int j=0;j<N;j++)
    cout <<mass[i][j]<<"  ";
    }
cout <<endl;
ofstream fout("out.txt");
fout<<N<<endl;
for(int i=0;i<N;i++)
    {
    if (mass[i][i]==0)
        {
        nekd=1;
        cout<<"Programma ne smojet poschitat' funkciju. Vozmojno vvedionnye dannye nekorrektny.\n";
        getch();
        return;
        }
    C[i]=Y[i]/mass[i][i];
    cout<<"\n"<<"C["<<i<<"]="<<C[i]<<endl;
    for(int j=i+1;j<N;j++)
        {
        mass[j][i]*=C[i];
        Y[j]-=mass[j][i];
        }
    fout<<C[i]<<endl;
    }
fout.close();
getch();
}
long double zniach(int i,int j)
   {    
    long double ZN=1;
    for(int q=0;q<j;q++)
    ZN*=X[i]-X[q];
    return ZN;
    }
 
long double fstr(char stroka[50])
{
nekd=0;
if (strlen(stroka)>20)
    {
    nekd=1;
    cout<<"Dannye nekorrektny.\n";
    getch();
    return 0;
    }
for (unsigned int i=0;i<strlen(stroka);i++)
    {
    if (((stroka[i]>='0')&&(stroka[i]<='9'))||(stroka[i]=='.')||(stroka[i]=='-')||(stroka[i]=='+'))
        {
        if ((stroka[i]=='-')||(stroka[i]=='+'))
            if (i!=0)
                {
                cout << "Dannye nekorrektny.\n";
                nekd=1;
                getch();
                return 0;
                }
        if (stroka[i]=='.')
            for (unsigned int q=0; q<i; q++)
                if (stroka[q]=='.')
                    {
                    cout << "Dannye nekorrektny.\n"; 
                    nekd=1;
                    getch();
                    return 0;
                    }
        }
    else 
        {
        nekd=1;
        cout<<"Dannye nekorrektny.\n";
        getch();
        return 0;
        }
    }
return atof(stroka); //преобразуем строку в число
}

2 часть программы
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
#include<iostream.h>
#include<fstream.h>
#include<conio.h>
#include<graphics.h>
#include<math.h>
 
int gdriver = DETECT;
 
long double f(long double);
void vvod(void);
void massh(void);
void grafics(void);
 
long double C[500];
long double minim_x,maxim_x;
long double maxim_y, minim_y;
long double shagx, shagy;
long double X[500], Y[500];
int N=0;
 
int main()
{
clrscr();
initgraph(&gdriver, 0 , "");
 
vvod();
 
massh();
 
grafics();
 
getch();
return 0;
}
 
//Полином
long double f(long double x)
{
long double s=C[0];
for (int i=1;i<N;i++)
    {
    long double P=1;
    for (int q=0;q<i;q++)
        P*=x-X[q];
    s+=C[i]*P;
    }
return s;
}
 
void vvod(void)
{
//Ввод коеффициентов из файла
ifstream vvod("out.txt");
vvod >> N;
for (int i=0;i<N;i++)
    {
    vvod >> C[i];
    }
vvod.close();
 
//Ввод исходных данных из файла
 
ifstream data("data.txt");
for (i=0;i<N;i++)
    {
    data >> X[i] >> Y[i];
    }
data.close();
}
 
void massh(void)
{
//Поиск maxim_x и minim_x
minim_x=X[0];
maxim_x=X[0];
for (int i=0;i<N;i++)
    {
    if (X[i]<minim_x) minim_x=X[i];
    if (X[i]>maxim_x) maxim_x=X[i];
    }
 
//Вычисление шага x, шага y, maxy, miny
shagx=(maxim_x-minim_x)/620;
if (shagx==0) {cout << "Dannye nekorrektny"; getch();}
maxim_y=f(maxim_x);
minim_y=f(minim_x);
for(long double k=minim_x; k<=maxim_x; k+=shagx)
    {
    if(maxim_y<=f(k)) maxim_y=f(k);
    if(minim_y>=f(k)) minim_y=f(k);
    }
shagy=(maxim_y-minim_y)/460;
}
 
void grafics(void)
{
bar(0,0,getmaxim_x(),getmaxy());
//Рисование точек
for(int q=0;q<N;q++)
    {
    setcolor(2);
    circle(5+(int)((X[q]-minim_x)/shagx), 5+460-(int)((Y[q]-minim_y)/shagy),1);
    setfillstyle(1, 2);
    floodfill(5+(int)((X[q]-minim_x)/shagx), 5+460-(int)((Y[q]-minim_y)/shagy), 2);
    }
setcolor(4);
//Рисование функции
for (long double d=minim_x; d<=maxim_x; d+=shagx)
    line(5+(int)((d-minim_x)/shagx),5+460-(int)( (f(d)-minim_y)/shagy ),5+(int)((d-shagx-minim_x)/shagx),5+460-(int)( (f(d-shagx)-minim_y)/shagy ));
}
спасибо зарание добрые люди)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru