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

Две матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Пошаговое объяснение программы. http://www.cyberforum.ru/cpp-beginners/thread41421.html
Задаются точные арифметические операции, в которых некоторые цифры либо стерты, либо заменены буквами. В данной операции одна и та же буква заменяет одну и ту же цифру и разные буквы представляют поэтому разные цифры. Нужно восстановить исходную операцию. Уравнение: ABCDE*9 = FGHIJ Код написан, но я его не понимаю до конца. Может кто нибудь по шагово объяснить его? пожаааааааалуйста =) ...
C++ делитель файла на 2 Пословный делитель файла на 2. Из достаточно длинного файла выбирать четные и нечетные слова и сохранять их в двух других файлах. есть что нить подобное??? Исходники, или алгоритмы???Желательно С++. Добавлено через 17 часов 11 минут 40 секунд #include <stdio.h> main() { FILE* inpf = fopen("d:\\borlandc\\bin\\text.txt", "r"); http://www.cyberforum.ru/cpp-beginners/thread41415.html
C++ Работа с переменными размером 64 бита
Очень нужно манипулировать битами в переменной длиной не менее 64 бит (целое). Т.е. например необходимо получить 23 бит в 64 битном числе. Так вот возник вопрос, как определить такие переменные. Я пробовал и long long и __int64 на что компилятор Borland С++ 5.0 неимоверно ругается и не позволяет это сделать. Может подскажет кто? плз.
Не работает графический режим C++
Всем привет) сделал программу на Турбо С++ с использованием графического режима. Запускается exe-шка только в папке где содержится Турбо С++. Если переместить в другое место выдает ошибку, что не может запустить графический режим. Подскажите пожалуйста что нужно чтобы запустить программу. Спасибо!
C++ Блок-схема http://www.cyberforum.ru/cpp-beginners/thread41393.html
Есть код на С, можно по нему составить блок-схему???
C++ бинарные деревья в c++ Ребят, нужна помощь. Вообщем надо построить бинарное дерево (дерево поиска), а потом из него удалить ветвь, начинающюся с ключа M... есть ф-я построения дерева и ф-я вывода его на экран, помогите написать ф-ю удаления ветки, нач-ся с ключа M, и вывести на экран получившееся дерево... #include <iostream.h> #include <iomanip.h> #include <stdlib.h> #include <conio.h> struct Node { int... подробнее

Показать сообщение отдельно
uto
 Аватар для uto
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94
22.06.2009, 23:39  [ТС]     Две матрицы
Ой ппц, так сказал же первый код не трогайте, это CGI, вставьте в 127 строку второй код, я просто с переменными там чето не могу разобраться, компилятор вечно на чтото жалуется

Добавлено через 5 часов 4 минуты 3 секунды
Так, ну я собсно помудрил еще посидел, и вот до чего в итоге дошел...

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
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#include <sstream> // в некоторых версиях STL называется stringstream
#include <map>
 
const int nn=100;
typedef double arr[nn][nn];
typedef double vect[nn];
 
arr A;
 
int main()  {
    // HTTP-заголовок
    cout << "Content-type: text/html\n\n";
    
    // Содержимое HTML-документа
    cout << "<HTML>" << endl;
    cout << "<BODY>" << endl;
    
    //Все переменные окружения (для проверки работоспособности) - extern char **__environ;
    cout << "<h1>CGI Environment</h1>" << endl << "<UL>" << endl;
    char **pe = environ;
    while(*pe != NULL)
    {
        cout << "<LI>" << *pe++ << "<br>" << endl;
    }
    cout << "</UL>" << endl << endl;
    
    // Выделяем строку с GET-параметрами переданными из формы
    cout << "<h1>GET parameters:</h1>\n";
    string sq;
    char* pq = getenv("QUERY_STRING");
    if (pq!=NULL)
        sq = pq;
    cout << "sq=[" << sq.c_str() << "]";
    cout << endl;
    
    // формирование хеша (масива со строковым индексом) параметров GET
    map <string, string> gp;    // результат данной операции - параметры GET
    string name, value;     // имя и зщначение параметра
    bool modename = true;   // режим накопления имени vs режим накопления значения
    sq+='&'; // добавляем ещё один символ '&' в конец
    // этот символ был разделителем пар имя=значение, 
    // а теперь его можно рассматривать как признак конца пары
    for (size_t pos=0; pos<sq.length(); pos++)
    {
        switch (sq[pos])
        {
        case '=' :  // конец имени данной пары
            modename=false;
            break;
        case '&' :  // конец значения данной пары и всей пары
            if (!name.empty())  // если имя определено
            {
                gp[name]=value; // сохраняем пару
            }
            modename=true;
            name.clear();       // важно сбросить накопители имени и значения!
            value.clear();
            break;
        default:    // обычный символ
            if (modename)       // идёт...
            {
                name+=sq[pos];  // либо в имя
            }
            else
            {
                value+=sq[pos]; // либо в значение
            }
        }
    }
    
    // Создан хеш типа строка -> строка
    // формируем из него хеш строка -> число
    map <string, double> gpf; // результат данной операции - параметры GET,со знач-ми float
    for (map <string,string>::const_iterator it=gp.begin(); it!=gp.end(); it++)
    {   // перебор всех пар
        gpf[it->first] = atof(it->second.c_str()); // и преобразование значений
    }
    
    // Вывод в браузер
    cout << "<h1>Pairs of GET-parameters decoded (name=value)</h1>" << endl;
    cout << "<UL>" << endl;
    for (map <string,double>::const_iterator it=gpf.begin(); it!=gpf.end(); it++)
    {
        cout << "<LI>" << it->first << "=" << it->second << "<br>" << endl;
    }
    cout << "</UL>" << endl << endl;
    
    // Приведение в "привычное состояние" для решения СЛАУ
    double a[9], b[3], exp; // параметры уравнения
    int i,j,k=0;
    for (i=1; i<=3; i++)
    {
        for (j=1; j<=3; j++)
        {
            stringstream namea;
            namea << "a" << i << j;
            a[k++]=gpf[namea.str()];
        }
 
        stringstream nameb;
        nameb << "b" << i;
        b[i-1] = gpf[nameb.str()];
    }
    exp=gpf["exp"];
    
    // Контрольный вывод на экран значений перед решением уравнений
    cout << "<h1>Matrix, vector and exp values ready to process:</h1>" << endl;
    for (i=0; i<3; i++) for(j=0; j<3; j++)
    {
        cout << "a[" << i << "," << j << "] = " << a[i*3+j] << "<BR>" << endl;
    }
    for (i=0; i<3; i++) 
    {
        cout << "b[" << i << "] = " << b[i] << "<BR>" << endl;
    }
    cout << "exp = " << exp << "<BR>" << endl << endl;
    
    
    // ... по идее тут надо вставить код для решения СЛАУ (метод Зейделя)...
    vect x, p, B;
    double sum;
for (i=0; i<3; i++){     // Начало
        x[i]=1;
        p[i]=1;
    }
 
    do {
        for (i=0; i<3; i++){
            sum = 0;
            for (j=0; j<3; j++)
                if (i!=j) sum+=x[j]*A[i][j];
 
            p[i]=x[i];
            x[i]=(B[i] - sum)/A[i][i];
 
        }
    } 
 
for (j=0; j<3; j++)
printf("X%d = %.3f\n",j+1,x[j]);
    // **********************************************
    
    
    // Завершение HTML
    cout << "</BODY>" << endl;
    cout << "</HTML>" << endl;
}
P.s. Хоть это и не компилируемый вариант, но уже почти всё...
Компилятор ругается, говорит что в 141 строке нужна функция while, но я не знаю, что мне писать (хотя мне и нужно где-то вписать точность по эпсиланту).
Что делать??? Я в ступоре

Добавлено через 3 часа 51 минуту 43 секунды
Аааааа, я сделал, помогите откомпилировать программу!!! Плиииз, там одно предупреждение, а из-за него программа не работает =(

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
#include <vcl.h>
#include <iostream.h>
#include <string.h>
#include <sstream> // в некоторых версиях STL называется stringstream
#include <map>
#include <math.h>
#include <conio.h>
 
const int nn=100;
typedef double arr[nn][nn];
typedef double vect[nn];
 
bool exact(const double *px, const double *pp);
 
arr A;
double eps;
 
int main()  {
    // HTTP-заголовок
    cout << "Content-type: text/html\n\n";
    
    // Содержимое HTML-документа
    cout << "<HTML>" << endl;
    cout << "<BODY>" << endl;
    
    //Все переменные окружения (для проверки работоспособности) - extern char **__environ;
    cout << "<h1>CGI Environment</h1>" << endl << "<UL>" << endl;
    char **pe = environ;
    while(*pe != NULL)
    {
        cout << "<LI>" << *pe++ << "<br>" << endl;
    }
    cout << "</UL>" << endl << endl;
    
    // Выделяем строку с GET-параметрами переданными из формы
    cout << "<h1>GET parameters:</h1>\n";
    string sq;
    char* pq = getenv("QUERY_STRING");
    if (pq!=NULL)
        sq = pq;
    cout << "sq=[" << sq.c_str() << "]";
    cout << endl;
    
    // формирование хеша (масива со строковым индексом) параметров GET
    map <string, string> gp;    // результат данной операции - параметры GET
    string name, value;     // имя и зщначение параметра
    bool modename = true;   // режим накопления имени vs режим накопления значения
    sq+='&'; // добавляем ещё один символ '&' в конец
    // этот символ был разделителем пар имя=значение, 
    // а теперь его можно рассматривать как признак конца пары
    for (size_t pos=0; pos<sq.length(); pos++)
    {
        switch (sq[pos])
        {
        case '=' :  // конец имени данной пары
            modename=false;
            break;
        case '&' :  // конец значения данной пары и всей пары
            if (!name.empty())  // если имя определено
            {
                gp[name]=value; // сохраняем пару
            }
            modename=true;
            name.clear();       // важно сбросить накопители имени и значения!
            value.clear();
            break;
        default:    // обычный символ
            if (modename)       // идёт...
            {
                name+=sq[pos];  // либо в имя
            }
            else
            {
                value+=sq[pos]; // либо в значение
            }
        }
    }
    
    // Создан хеш типа строка -> строка
    // формируем из него хеш строка -> число
    map <string, double> gpf; // результат данной операции - параметры GET,со знач-ми float
    for (map <string,string>::const_iterator it=gp.begin(); it!=gp.end(); it++)
    {   // перебор всех пар
        gpf[it->first] = atof(it->second.c_str()); // и преобразование значений
    }
    
    // Вывод в браузер
    cout << "<h1>Pairs of GET-parameters decoded (name=value)</h1>" << endl;
    cout << "<UL>" << endl;
    for (map <string,double>::const_iterator it=gpf.begin(); it!=gpf.end(); it++)
    {
        cout << "<LI>" << it->first << "=" << it->second << "<br>" << endl;
    }
    cout << "</UL>" << endl << endl;
    
    // Приведение в "привычное состояние" для решения СЛАУ
    double a[9], b[3]; // параметры уравнения
    int i,j,k=0;
    for (i=1; i<=3; i++)
    {
        for (j=1; j<=3; j++)
        {
            stringstream namea;
            namea << "a" << i << j;
            a[k++]=gpf[namea.str()];
        }
 
        stringstream nameb;
        nameb << "b" << i;
        b[i-1] = gpf[nameb.str()];
    }
    eps=gpf["eps"];
    
    // Контрольный вывод на экран значений перед решением уравнений
    cout << "<h1>Matrix, vector and eps values ready to process:</h1>" << endl;
    for (i=0; i<3; i++) for(j=0; j<3; j++)
    {
        cout << "a[" << i << "," << j << "] = " << a[i*3+j] << "<BR>" << endl;
    }
    for (i=0; i<3; i++) 
    {
        cout << "b[" << i << "] = " << b[i] << "<BR>" << endl;
    }
    cout << "eps = " << eps << "<BR>" << endl << endl;
    
    
    // ... по идее тут надо вставить код для решения СЛАУ (метод Зейделя)...
    vect x, p, B;
    double sum;
for (i=0; i<3; i++){     // Начало
        x[i]=1;
        p[i]=1;
    }
 
    do {
        for (i=0; i<3; i++){
            sum = 0;
            
            for (j=0; j<3; j++)
                if (i!=j) sum+=x[j]*A[i][j];
            p[i]=x[i];
            x[i]=(B[i] - sum)/A[i][i];
 
        }
    }  while (!exact(x,p)) ;
 
for (j=0; j<3; j++)
printf("X%d = %.3f\n",j+1,x[j]);
    // **********************************************
     getch();
    
    // Завершение HTML
    cout << "</BODY>" << endl;
    cout << "</HTML>" << endl;
}
 
bool exact(const double *px, const double *pp)
{
    int i;
    bool done=true;
 
    for (i=0; i<3; i++)
        if ( fabs( *(px+i) - *(pp+i) ) > eps){
            done=false;
            break;
        }
    return done;
}
142ая строка...
Пишет мол A[i][i] не может быть равна нулю.... Я и так е и сяк, ну не хочет она корректно работать, помогите, плиииз. То она у меня выдает еденицы, то тупо подвисает
 
Текущее время: 11:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru