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

Симплекс метод - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Заполнение матрицы смежности http://www.cyberforum.ru/cpp-beginners/thread133894.html
Задача в следующем: выдать в файл матрицу смежности, где на главной диагонали должны стоять нули, а остальные элементы которой заполняются случайными числами. Написал такой вот код и где-то допустил ошибку (в программировании не силен), люди добрые подскажите что нужно исправить в тексте программы #include<iostream> #include<fstream> #include <cstdlib> using namespace std; int main() { ...
C++ Создать треугольник и вычислить его площадь Здраствуйте, изучаю язык С++ по книге Джесса Либерти, в т.ч. пытаюсь воспроизводить все приведённые в книге примеры, один из них посвящён ООП. Вобщем вопрос следующий: в файле заголовков (myrect.hpp) описаны два класса - точка и прямоугольник, затем перед функцией main() главного файла, идёт конструктор и собственно сама функиця main() в которой создаётся треугольник и вычисляется его площадь,... http://www.cyberforum.ru/cpp-beginners/thread133755.html
C++ Подсчитать наибольшее количество идущих подряд пробелов
дана строка. подсчитать наибольшее количество идущих подряд пробелов
C++ Вычислить сумму бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной
Вычислить сумму бесконечного сходящегося ряда. Суммирование прекратить при появлении в сумме слагаемых, имеющих абсолютную величину, меньшую заданной погрешности d. Значение d задается пользователем. S=1-1/корень из 4+1/корень из 9-1/корень из 16+... Заранее, большущее спасибо.
C++ Работа с файлами и строками http://www.cyberforum.ru/cpp-beginners/thread133516.html
Дан файл, содержащий несколько строк текста. Создать другой файл, в который записать те же строки, выровненные по правому краю по максимальной длине строки, которая задаётся пользователем.
C++ Посчитать число имени Чтобы определить число имени нужно воспользоваться особой таблицей, в которой каждая буква имеет свое числовое обозначение: 1 2 3 4 5 6 7 8 9 А Б В Г Д Е Ё Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ъ Ы Ь Э Ю Я Например, ваше имя Олег Иванов: подробнее

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

Симплекс метод - C++

22.05.2010, 23:50. Просмотров 5831. Ответов 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
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
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include <string.h>
using namespace std;
 
fstream in( "lptask.txt", ios_base::in );
 
double tbl[4][8]={
{3, 11, 0, 0, 0, 0, 0, 0},
{-3, 8, 1, 0, 0, 30, 0, 2},
{2, 7, 0, 1, 0, 62, 0, 3},
{1, 6, 0, 0, 1, 98, 0, 4}
};
int m=8,n=4, col, row;
 
 
void input_tbl() { // Г§Г*ïîëГ*ГҐГ*ГЁГҐ ñèìïëåêñ-ГІГ*áëèöû Г·ГІГҐГ*ГЁГҐГ¬ ââîäГ*
int i=0, j=0;
while(true) {
string x;
in >> x;
if( x == "/" ) {
if( j==0 ) break;
if( i==0 ) m = j + 1;
else {
int j1; in >> j1;
tbl[i][m+1] = j1;
}
tbl[i][m] = 0;
j = 0;
++i;
continue;
}
tbl[i][j] = atof(x.c_str());
++j;
}
n = i;
tbl[0][m-1] = 0;
tbl[0][m+1] = 0;
}
 
void output_tbl() { // âûâîäèò ГІГ*áëèöó ñèìïëåêñ-ìåòîäГ* Гў óäîáГ*îì äëÿ Г·ГІГҐГ*ГЁГї âèäå
for( int i=0; i<n; ++i ) {
for( int j=0; j<=m+1; ++j ) {
cout << setw(9) << tbl[i][j];
}
cout << "\n";
}
}
 
void choose_col_row() { // îïðåäåëÿåò âåäóùèé ñòîëáåö è âåäóùóþ ñòðîêó
 
col = 0;
bool flag = (tbl[0][col] < 0);
for( int j=0; j<m; ++j ) {
double ci = tbl[0][j];
if( ci<0 && ci<tbl[0][col] ) {
flag = true;
col = j;
}
}
if( !flag ) {
col = -1;
row = -1;
return;
}
 
for( int i=1; i<n; ++i ) {
if( tbl[i][m] != 0 ) continue;
double den = tbl[i][col];
if( den == 0 )
tbl[i][m] = 1.e100;
else
tbl[i][m] = tbl[i][m-1]/den;
}
row = 1;
for( int i=1; i<n; ++i ) {
if( tbl[i][m] < tbl[row][m] ) row = i;
}
if( tbl[row][m] >= 1.e98 ) row = -1;
}
 
void transform() {
double den = tbl[row][col];
for( int j=0; j<m; ++j ) {
tbl[row][j] /= den;
}
for( int i=0; i<n; ++i ) {
if( i == row ) continue;
double k = tbl[i][col];
for( int j=0; j<m; ++j ) {
tbl[i][j] -= k*tbl[row][j];
}
}
tbl[row][m+1] = col;
 
for( int i=1; i<=n; ++i ) {
tbl[i][m] = 0;
}
tbl[row][m] = 1e100;
}
 
bool solve() { // ðåøГ*ГҐГІ Г§Г*Г¤Г*Г·Гі - âûïîëГ*ГїГҐГІ Г*ГіГ¦Г*Г® êîëè÷åñòâî ГЁГІГҐГ°Г*öèé
while(1) {
cout << "\n";
 
choose_col_row();
 
output_tbl();
cout << "col = " << col << "\n";
cout << "row = " << row << "\n";
 
if( col == -1 ) {
cout << "\nnajdeno optimalnoe reshenie\n";
return true;
}
if( row == -1 ) {
cout << "\nluchevoe reshenie\n";
return false;
}
 
transform();
}
}
 
int main(void) { // ГЈГ«Г*ГўГ*Г*Гї òî÷êГ* âõîäГ*
 
input_tbl();
 
bool flag = solve();
 
if( flag ) {
for( int i=1; i<n; ++i ) {
cout << tbl[i][m+1] << " = " << tbl[i][m-1] << "\n";
}
}
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru