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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
0xDC
2 / 2 / 0
Регистрация: 15.09.2011
Сообщений: 104
#1

Алгоритм Джонсона - C++

09.06.2012, 11:19. Просмотров 3313. Ответов 2
Метки нет (Все метки)

Всем привет. Кто-нибудь знает где в сети найти реализацию алгоритма Джонсона? Задача состоит в том, что даны детали и время обработки, нужно написать прогу при которой станки будут простаивать наименьшее время
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2012, 11:19     Алгоритм Джонсона
Посмотрите здесь:

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

Алгоритм Джонсона для графов - C++
Подскажите, пожалуйста, где можно найти реализацию этого алгоритма или помогите с реализацией. Я так понял, что сначала там идёт алгоритм...

Алгоритм Джонсона для 3 станков - Алгоритмы
Здравствуйте, у нас в списке вопросов для защиты лабораторной по алгоритму Джонсона есть вопрос, где нужно объяснить, как из формулы (1)...

Задача Джонсона для 2х станков - C#
Помогите решить проблему Код: private void timer_Tick(object sender, EventArgs e) { bool ina = false; ...

Модель 4-разрядного счетчика Джонсона на Verilog - Программируемая логика
Помогите разработать на Verilog модель 4-розр. счетчика Джонсона. Помогите пожалуйста

Задача Джонсона для 4 станков: нужны ссылки или литература - Алгоритмы
Подскажите необходимые ссылки или теорию, вообщем любую информацию для оптимизации по задаче Джонсона для 4 станков.

Задача Джонсона, она рабочая только нужно дописать чтобы она находила время простоя при оптимальной перестановке - VBA
Sub АлгоритмДжонсона() 'Курсовая работа по "Математическим методам" 'Группа 31-П 'Студентка Комарова К.С. Dim N As Integer, M...

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки ) - C++
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; void lab () { int s1 = 0; int s2 =...

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар) - C++
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная головоломка). Определение. Перестано́вочные...

Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм - Pascal
Линейный алгоритм, Алгоритм с ветвлениями, Циклический алгоритм Линейный алгоритм 1. Объясни, что будет напечатано программой Program...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
qfisher
30 / 30 / 1
Регистрация: 24.05.2012
Сообщений: 156
09.06.2012, 11:29     Алгоритм Джонсона #2
http://e-maxx.ru/algo/johnson_problem_2
0xDC
2 / 2 / 0
Регистрация: 15.09.2011
Сообщений: 104
09.06.2012, 21:02  [ТС]     Алгоритм Джонсона #3
Здравствуйте! Вобщем как видно из тему пишу алгоритм Джонсона. не знаю чачем заморочился с классами и векторами. Появились ошибки. Вобщем подскажите 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
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
class Element{
public:
int op_a; //время операции а
int op_b; //время операции b
int num;  //номер детали
Element(int a,int b,int number):op_a(a),op_b(b),num(number){} //конструктор с 3мя аргументами
 
Element(): //конструктор без аргументов
          op_a(0), op_b(0),
              num(0){}
 
void get() {//ввод данных пользователем
    cout<<"\n Please enter information about Elemen (op_a,op_b,number)\n";
    cin>>op_a>>op_b>>num;
    
}
    int get_time1() const{return op_a;}
    int get_num() const{return num;}
    int get_time2() const{return op_b;}
     void display(){ //Вывод на экран
    cout<<op_a<<"\n"<<op_b<<"\n"<<num<<"\n"<<"\n";
          }
};
int main()
{
Element A;
char answer;
vector <Element> Evector;
vector <Element>::iterator iter1;
vector <Element> Avector;
vector <Element> Bvector;
vector <Element>::iterator iter2;
int min,max;
int num_element=0;
 
int j=1;
 int n=0;
 vector <int> Numbers;
   vector <int> Numbers2;
 
 
//*********Ввод с клавиатуры*********//
        
   do {
      A.get();
      Evector.push_back(A);
     
      ++n;
      cout<<"Continue (y/n)?";
      cin>>answer;
      
  } 
    while (answer != 'n') ;
    
//____________________________________//
 
   iter1=Evector.begin();
  while(iter1 != Evector.end())
      (*iter1++).display();
 
 
      do{
          //нашли мин
for(iter1=Evector.begin();iter1!=Evector.end();++iter1)
          {
          min=(*(iter1)).get_time1();
              if (min>(*(++iter1)).get_time1())
              {
                 min=((*(iter1)).get_time1());
                 num_element=(*(iter1)).get_num();
              }
              
         
          }
 
Numbers.push_back(num_element); //записали номера деталей
 
//Формирование нового списка,удаление из старого мин-ых эелемнтов
  for(iter1=Evector.begin();iter1!=Evector.end();++iter1)
 {
if (num_element == (*iter1).get_num())
    {iter2=iter1;
         Avector.push_back(*iter1);
        
        
        
     }
}
 
  for(iter1=Evector.begin();iter1!=Evector.end();++iter1)
          {
          min=(*(iter1)).get_time2();
              if (max<(*(++iter1)).get_time2())
              {
                 max=((*(iter1)).get_time2());
                num_element=(*(iter1)).get_num();
              }
  }
              Numbers2.push_back(num_element); //записали номера деталей
 
              //Формирование нового списка,удаление из старого макс-ых эелемнтов
  for(iter1=Evector.begin();iter1!=Evector.end();++iter1)
 {
if (num_element == (*iter1).get_num())
    {
         Bvector.push_back(*iter1);
        
        (*iter1).op_b=0;
        
     }
}
  (*iter2).op_a=100;
 j++; 
     }  while (j<(n+1)) ;
 
  
  
  cout<<num_element<<"\n";
   iter1=Avector.begin();
  while(iter1 != Avector.end())
      (*iter1++).display();
 
//   iter1=Evector.begin();
 // while(iter1 != Evector.end())
//    (*iter1++).display();
 
 
 
 
return 0;
}
Ответ Создать тему
Опции темы

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