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

Необходимо изменить программу в C++ - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Как посчитать количество элементов в массиве и распечатать его? http://www.cyberforum.ru/cpp-beginners/thread231771.html
Как посчитать кол-во элементов в массиве и распечатать его? В символьных строках, вроде как strlen, а с цифрами как? Вроде как надо использовать sizeof, но как он работает я не понимаю.
C++ Аргументы по умолчанию (что не так ?) #include "stdafx.h" #include "sys.h" #include <iostream> using namespace std; int box ( int lenght = 1, int width = 1, int height = 1); int main () { sys(); cout << "Значение по умолчанию: " << box(); http://www.cyberforum.ru/cpp-beginners/thread231770.html
Запись строки C++
Надо записать строку в конец файла , Незнаю как ее написать.. void zap(char *str) { ofstream r(ios::app); Как мне осуществить ввод в конец файл строку?? }
C++ Ключевое слово register
локальная переменная которая задается : register int a; так же будет локальной и сохраняется в регистр если есть свободное место. но зачем нам это надо? почему нельзя воспользоваться auto?
C++/CLI WinForms String[,] Base1 = new string[1, 1] http://www.cyberforum.ru/cpp-beginners/thread231747.html
Есть код , переработаный с С#, кажется верно, только есть один вопрос: В событии обработки клика используется симвоьный массив, как его переписать в С++? public static String Base1 = new string; // ??? private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { String^ S; S = Convert::ToString(listBox1->Items); String^ S1; System::IO::FileStream^...
C++ Цикл с параметром (for) Задание - Вводятся числа a и b. Найти количество таких чисел в диапазоне , которые являются точными квадратами. #include <iostream> #include <conio.h> #include <cmath> using namespace std; int main () { setlocale(LC_ALL,"Russian"); int a,b; cout << "Первое число a"; подробнее

Показать сообщение отдельно
sl1m_dogg
0 / 0 / 0
Регистрация: 20.01.2011
Сообщений: 18
20.01.2011, 19:09     Необходимо изменить программу в C++
Здравствуйте. Собственно есть программа, которая минимизирует модель методом сопряженных направлений Пауэлла.
Код:
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
#include <iostream.h> //Метод сопряженных направлений
#include <math.h>
#include <conio.h>
 
double f(double  x1,double x2) {
    return 4*(x1-5)*(x1-5)+(x2-6)*(x2-6);}
int main(){
    double E=0.1, min, var[200], t;
    int i, j, n=2, k=0;
    int s=0, I[100];
 
    double d[3][3]={{0,1}, {1,0}, {0,1}};    cout <<d[0][0]<<" "<<d[0][1]<<" "<<
                            d[1][0]<<" "<<d[1][1]<<" "<<
                            d[2][0]<<" "<<d[2][1]<<endl;
    double X[20][20], Y[20][40], Xz[1][2];
    I[s]=0;
    cout <<"X0:"<<endl;           //задаем начальную точку Хо
    for(i=0;i<1;i++)
      for(int j=0;j<2;j++)
    cin >>X[i][j];           cout <<"X("<<X[0][0]<<";"<<X[0][1]<<")\n";
      for(i=0;i<1;i++)             //Y0 = Xo
      for(j=0;j<2;j++)
    Y[i][j]=X[i][j];         cout <<"Y("<<Y[0][0]<<";"<<Y[0][1]<<")\n";
//.2.........................
TWO:  cout <<" __2__"<<endl;
      min=f(Y[I[s]][0],Y[I[s]][1]);
      i=0;
      for(t=-50;t<50;t++,i++)    //вывод различных значений ф-ции
    {
      var[i]=f( Y[I[s]][0]+t*d[I[s]][0], Y[I[s]][1]+t*d[I[s]][1]);
      cout <<"var ["<<i<<"] = "<<var[i]<<endl;
    }
      for(i=0;i<100;i++)      //вывод наименьшего значения ф-ции
      if(var[i] < min)
        min = var[i];
        cout <<"min var[] = "<<min<<endl;
      for(int index=0;index<100;index++)  //вывод t
        { 
          if( min==var[index] )
          t=index-50;
        }
      cout <<"T = "<<t<<endl;
      Y[I[s]+1][0] = Y[I[s]][0] + t*d[I[s]][0];
      Y[I[s]+1][1] = Y[I[s]][1] + t*d[I[s]][1];  
                                           cout <<"Y["<<I[s]+1<<"] = ("<<Y[I[s]+1][0]<<";";
                                           cout <<Y[I[s]+1][1]<<")"<<endl;
//.3.................
THREE:  cout <<" __3__"<<endl;  
        if(I[s] < n-1)
        {
            cout <<"I[s] < n-1"<<endl;    
            I[s]=I[s]+1;
            cout <<"I[s] = "<<I[s]<<endl;
            goto TWO;    
        }   //*/
        if(I[s] == n-1)
        {   
            cout <<"I[s] == n-1"<<endl;
            if( (Y[n][0]==Y[0][0]) && (Y[n][1]==Y[0][1]) ){
               Xz[0][0]=Y[n][0];        cout <<"Xz("<<Xz[0][0]<<";";
               Xz[0][1]=Y[n][1];        cout <<Xz[0][1]<<")"<<endl;
            }
            else {
            cout <<"Yn != Y0 "<<endl;
            I[s]=I[s]+1;
             cout <<"I[s] = "<<I[s]<<endl;
            goto TWO; }  
        }
        if(I[s] == n)
        {
            cout <<"I[s]  == n"<<endl;    
            if( (Y[n+1][0]==Y[1][0]) && (Y[n+1][1]==Y[1][1]) ){
               Xz[0][0]=Y[n+1][0];        cout <<"Xz("<<Xz[0][0]<<";";
               Xz[0][1]=Y[n+1][1];        cout <<Xz[0][1]<<")"<<endl;
            }
            if( (Y[n+1][0]!=Y[1][0]) || (Y[n+1][1]!=Y[1][1]) ){
            goto Fourth; 
            }
        }
//.4.........................        
Fourth:  cout <<" __4__"<<endl;  
         X[k+1][0]=Y[n+1][0];    cout <<"X["<<(k+1)<<"] = ("<<X[k+1][0];
         X[k+1][1]=Y[n+1][1];    cout <<";"<<X[k+1][1]<<")"<<endl; 
//...........a...............
         if( pow( ( pow((X[k+1][0]-X[k][0]),2)+pow((X[k+1][1]-X[k][1]),2) ),1/2.0)<E ){
         cout <<"X(k+1) - X(k) = "<<pow( ( pow((X[k+1][0]-X[k+1][0]),2)+
                                    pow((X[k+1][1]-X[k+1][1]),2) ),1/2.0);
             Xz[0][0]=X[k+1][0];
             Xz[0][1]=X[k+1][1];    
         }
//..................b.....................
         if( pow( ( pow((X[k+1][0]-X[k][0]),2)+pow((X[k+1][1]-X[k][1]),2) ),1/2.0)>E ){
         d[0][0]=d[n][0]=Y[n+1][0]-Y[1][0];    cout <<"d0 = ("<<d[0][0];
             d[0][1]=d[n][1]=Y[n+1][1]-Y[1][1];    cout <<";"<<d[0][1]<<")"<<endl;
             
             d[I[s]][0]=d[I[s]+1][0];
             d[I[s]][1]=d[I[s]+1][1];
             if( (d[1][0]*d[2][1]-d[1][1]*d[2][0]) != 0){
                cout <<"rang(D1,...,Dn) = n"<<endl;
                Y[0][0]=X[k+1][0];  cout <<"Y0 = ("<<Y[0][0]<<";";
                Y[0][1]=X[k+1][1];  cout <<Y[0][1]<<")\n";
                k=k+1;
                I[s]=0;
                goto TWO;                                    }  
             if( (d[1][0]*d[2][1]-d[1][1]*d[2][0]) == n){
                cout <<"rang(D1,...,Dn) < n"<<endl;
                Y[0][0]=X[k+1][0];
                Y[0][1]=X[k+1][1];
                k=k+1; I[s]=0;
goto TWO;                                      
             } 
         }   
 cout <<"\nXz("<<Xz[0][0]<<";"<<Xz[0][1]<<")"<<endl;    
     getch();}
Она минимизирует функцию 4((x1-5)^2)+(x2-6)^2. В моем случае нужно минимизировать функцию (9*х1*x1)+(35*х2*x2)+(32*х1*х2)–(88*х1)–(176*х2)+242, пытался заменить функцию в строке
C++
1
return 4*(x1-5)*(x1-5)+(x2-6)*(x2-6);}
но выдает или неверный результат, или кучу ошибок.
Помогите кто сможет.
P.S.: результат должен быть x1=2.207 x2=1.507
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 06:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru