Форум программистов, компьютерный форум 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
6 / 6 / 0
Регистрация: 07.05.2009
Сообщений: 94

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

22.06.2009, 09:58. Просмотров 434. Ответов 9
Метки (Все метки)

У меня есть два кода. Нужно код второй матрицы вставить в первый в указаное место (строка 127). Несколько дней уже его мучаю... У меня не получается, помогите, кто-нибудь. :'(

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
#include <vcl.h>
#include <iostream>
#include <string>
#include <sstream> // в некоторых версиях STL называется stringstream
#include <map>
#include <conio.h>
#include <math.h>
using namespace std;
 
//--------------------------------------------------------------
 
const int nn=100;
typedef double arr[nn][nn];
typedef double vect[nn];
 
int _tmain(int argc, _TCHAR* argv[])
{
    // HTTP-заголовок
    cout << "Content-type: text/html" << endl << endl;
 
    // Содержимое 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-параметрами переданными из формы
    printf("<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;
 
 
    // ... по идее тут надо вставить код для решения СЛАУ (метод Зейделя)...
 
    // **********************************************
 
 
    // Завершение HTML
    cout << "</BODY>" << endl;
    cout << "</HTML>" << endl;
 
        getch();
    return 0;
}
 
    bool exact(const double *px, const double *pp, const int *n)    {
        int i;
        bool f=true;
 
        for (i=0; i<*n; i++)
            if ( fabs( *(px+i) - *(pp+i) ) > exp){
                f=false;
                break;
            }
        return f;
    }
А вот второй код "Матрица Зейделя", который нужно вставить в первый так, чтобы нормально компилился

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
#include <vcl.h>
#include <math.h>
#include <stdio.h>
#include <iostream.h>
#include <conio.h>
 
//---------------------------------------------------------------------------
 
const int nn=100;
typedef double arr[nn][nn];
typedef double vect[nn];
 
void input(int*, double *);
bool exact(const double *px, const double *pp, const int *n);
 
arr A;
double e;
int main()
{
 
    int n,i,j;
    double sum;
    vect x,p,B;
 
    input(&n,B);             // Ввести n,A,B.
    for (i=0; i<n; i++){     // Начало
        x[i]=1;
        p[i]=1;
    }
 
    do {
        for (i=0; i<n; i++){
            sum = 0;
            for (j=0; j<n; 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, &n)) ;
 
 
    for (j=0; j<n; j++)
        printf("X%d = %.3f\n",j+1,x[j]);
 
    puts("Verification:");
     for (i=0; i<n; i++){
            sum = 0;
            for (j=0; j<n; j++){
                 sum+=x[j]*A[i][j];
                 if ((j==0) && (A[i][j]*x[j]<0)) cout <<"-";
                 printf("%.2f*%.2f",fabs(A[i][j]),fabs(x[j]));
                 if ((j!=n-1)&&(A[i][j+1]*x[j]>=0)) cout <<" + ";
                 else if ((j!=n-1)&&(A[i][j+1]*x[j]<0)) cout <<" - ";
                 else {cout << " = ";
                       printf("%.3f ;\n", sum);
                 }
           getch(); }
     }
 
}
 
void input(int *m, double *PtrB)
{
    int i,j;
 
    cout << "Enter e.\n";
    cin >> e;
    cout << "\nEnter n.\n";
    cin >> *m;
    cout << "\nEnter matrix A.\n";
    for (i=0; i<*m; i++)
        for (j=0; j<*m; j++)
            cin >> A[i][j];
    cout << "\nEnter matrix B.\n";
    for (i=0; i<*m; i++)
        cin >> *(PtrB+i);
    
}
 
bool exact(const double *px, const double *pp, const int *n)
{
    int i;
    bool f=true;
 
    for (i=0; i<*n; i++)
        if ( fabs( *(px+i) - *(pp+i) ) > e){
            f=false;
            break;
        }
    return f;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru