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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
catinbox13
0 / 0 / 0
Регистрация: 22.12.2008
Сообщений: 4
#1

программа по двойственному симплекс методу - C++

29.12.2008, 03:20. Просмотров 1208. Ответов 0
Метки нет (Все метки)

здравствуйте! очень нужна помощ! написала программу, но выдает неверный ответ, знаю в каком месте неправильно, но как должно быть никак не додумаюсь, помогите пожалуйста! вот код:
задача-найти оптимальную табдицу с помощью двойственного симплекс-метода, ошибка в функции min_J
Выбор включаемой переменной производится следующим образом. Вычисляются отношения коэффициентов z-строки к отрицательным коэффициентам исключаемой строки. В задаче min выбирается минимальное отношение. При наличии альтернатив выбор делается произвольно. Если в отношениях все знаменатели положительные или нулевые, задача не имеет допустимых решений.
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
#include "stdafx.h"
#include <iostream>
#include <stdlib.h>
#include <windows.h> 
 
using namespace std;
 
const int str=3;
const int stb=5;
float mas[str][stb];
float R_mas[str][stb];
bool flag=false;
int minI, minJ=1;
 
//Функции
int min_J(float temp[str][stb], int minI)
{
int num;
    if  ((temp[str-1][minJ]/temp[str-1][1]) <= (temp[str][minJ]/temp[str][1]) )
        num=1;
    else
        num=0;
    return num;
}//??
 
int min_I(float temp[str][stb])
{
    int min[2]={};
    for(int i=0; i<str; i++)
    if (temp[i][stb-1]<min[0])
    {
        min[0]=int(temp[0][i]);
        min[1]=i;
    }
    return min[1];
}
 
 
void main()
{
//Чтение из файла
    FILE *myFile;
    myFile=fopen("3.txt", "rt"); 
    char temp[4];
    for (int i=0; i<str; i++)
        for (int j=0; j<stb; j++)
        {
            fgets(temp, 4, myFile);
            mas[i][j]=float(atoi(temp));
        }
 
//отрицательные 1,2 и 5 столбцы
for (int i=0; i<str; i++)
    for (int j=0; j<stb; j++)
        if ((j != 2) && (j != 3) )
            mas[i][j]*=-1;
 
//Вывод 
    for (int i=0; i<str; i++)
    {
        cout<<endl;
        for (int j=0; j<stb; j++)
            cout<<mas[i][j]<<"\t";
    }
 
    cout<<endl<<endl;
    int min[2]={};
    for (int j=1; j<stb; j++)
        
        
 
    while(!flag)
            
//Поиск отрицательных чисел
        for (int j=1; j<stb; j++)
            for(int i=0; i<stb-1;i++)
        {           
            if(mas[i][j]<0)
            {
                flag=true; //флаг
                
//Поиск минимальной строки              
                minI=min_I(mas);
 
//Поиск минимального столбца
                minJ=min_J(mas, minI);
 
//Основные вычисления
                for(int i=0; i<stb;i++)
                    R_mas[minI][i]=mas[minI][i]/mas[minI][minJ];        
                for (int i=0; i<str;i++)
                    for(int j=0; j<stb;j++)
                        if (i != minI)
                            R_mas[i][j]=mas[i][j]-(R_mas[minI][j] * mas[i][minJ]);
            }
        }
       
            
 
//Вывод массива
        for (int i=0; i<str; i++)
        {
            for (int j=0; j<stb; j++)
        cout<<R_mas[i][j]<<"\t";
        cout<<endl;
            
        }
 
    }
помогите пожалуйста срочно! очень надо!

Добавлено через 2 часа 19 минут 23 секунды
а! уже не надо, уже сама все сделала)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2008, 03:20     программа по двойственному симплекс методу
Посмотрите здесь:

Программа по методу "черного ящика" - C++
Нужна помощь в написании программы по методу &quot;чёрного ящика&quot;. Приложение получает в качестве параметров три целых числа, которые...

Симплекс-метод - C++
Задали по дисциплине &quot;Математическое моделирование&quot; написать программу на C++,выбрав любую задачу на тему &quot;Симплекс-метод в случае...

Симплекс-метод - C++
Здраствуйте!Помогите пожалуйста с программой.Дана задача: Для изготовления изделий двух видов склад может отпустить металла не более...

Симплекс метод - C++
почему незапускается прога #include &lt;iostream.h&gt; #include &lt;fstream.h&gt; #include &lt;iomanip.h&gt; #include &lt;string.h&gt; using namespace...

Симплекс метод - C++
недавно начал изучать С++ мне дали задали такое ,которое я сам не зделаю(( задание такое зделать прогу, которая решит систему...

Двойственность симплекс-метода - C++
Нашел код, но разобраться не смог, не могу понять, чего ему не хватает...помогите разобраться, может у кого есть аналог этой программы...

Преобразование матрицы симплекс метод - C++
Приветствую всех) Очень нуждаюсь в вашей помощи. Взялся за реализацию симплекс-метода, но столкнулся с такой проблемой. К примеру дана...

Решение задачи симплекс методом - C++
Всем доброго времени суток. Помогите, пожалуйста, при компиляции выдает такую ошибку:&quot; fatal error C1083: Не удается открыть файл...

Симплекс метод. Задача с двусторонними ограничениями - C++
Нужна задачка, без разницы как реализована....главное чтобы работала. И именно не просто симлекс метод, а пример на задаче с двусторонними...

Блох схема к методу - C++
Можете помочь с блок-схемой: void delete_room () { int number; cout &lt;&lt; &quot;Enter...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru