![]() |
1. Пользуйтесь тегами кода. - [code] ... [/code]
2. Точно указывайте язык, название и версию компилятора (интерпретатора).
3. Название темы должно быть информативным.
В описании темы указываем язык!!!
![]() ![]() |
![]() |
KerK |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
Начирикал задачу...но что-то не правильно...
1.Задача равномерного распределения видов работ. Предприятие выпускает m видов продукции, причем потребность предприятия в продукции с номером iє1:m на заданный срок n дней составляет целое количество b[i]>0 единиц. Требуется составить наиболее равномерный план выпуска продукции предприятием, т.е. определить целое количество x[i,j]>=0 единиц выпуска продукции вида iє1:m в течении дня iє1:n, таким образом, чтобы выполнялись условия: а)x[i,1]+x[i,2]+…+x[i,n]=b[i] (условие обеспечения потребности) б)׀x[i,p]-x[i,q]׀<=1 (условие равномерности выпуска продукции по видам) в)׀x[1,p]+x[2,p]+..+x[m,p]-x[1,q]+x[2,q]+…+x[m,q]׀<=1 (условие равномерности выпуска продукции в совокупности) Размерность:n не менее 10,m-12. Код #include <conio.h> #include <iostream.h> #include <math.h> void main() { int m; //kol. vidov prod. int n; //kol. dney int a[12][10]; int b[12]; int i,j,e,l,l1,i1,j1,i2,j2,j5; int z,k,flag; cout << "\n Vvedite koli4estvo produktov"; cin >> m; cout << "\n Vvedite koli4estvo dney"; cin >> n; for (i=0;i<m;i++) { cout << "\n Vvedite plan"; cin >> b[i]; } for (i=0;i<m;i++) { z=b[i]/n; for (j=0;j<n;j++) a[i][j] = z; } for (i1=0;i1<m;i1++) { z=b[i1]/n; k=b[i1]-(z*n); j5=0; while (k>0) { for(j=0;j<n;j++) { flag=1; l=0; for (i=0;i<m;i++) l=l+a[i][j]; for (j2=j5;j2<n;j2++) { for (i2=0;i2<m;i2++) l1=l1+a[i2][j2]; if (((l+1)-l1)>1) flag=0; l1=0; } if (flag=1&&k>0) { a[i1][j]=a[i1][j]+1; k=k-1; } j5=j5+1; } } } for (i=0;i<m;i++) { for (j=0;j<n;j++) cout<<" "<<a[i][j]; cout<<"\n"; } getch(); } Например ввожу я кол. прод. 3 дни 5 план на прод. №1 51 план на прод. №2 52 план на прод. №3 53 он мне должен выдать такую матрицу __1__ 2_ 3_ 4_ 5 1) 11 10 10 10 10 2) 10 11 11 10 10 3) 11 10 10 11 11 -------------- 32 31 31 31 31 а выдает такое __1__ 2_ 3_ 4_ 5 1) 11 10 10 10 10 2) 11 11 10 10 10 3) 11 11 11 10 10 -------------- 33 32 31 30 30 По идее все должно работать.... Плиз помогите, заранее спасибо. Сообщение отредактировано: KerK - 9.11.2006 12:45 |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
На предупреждения компилятора внимания не обращаешь? Он же тебе говорит: "Возможно некорректное присваивание!"
if (flag=1&&k>0) Сравнение - удвоенный знак "==" |
KerK |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
|
KerK |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 28 Пол: Мужской Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#6
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
из того, что бросается в глаза:
объявлять переменные не по-паскалевскому... то есть не все кучей в начале, а по блокам. например, зачем тебе глобальные i и j? они все равно используются только в отдельных циклах. вот и пиши for(int j=0;j<n;j++) и - отступы. иначе код хуже читается. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 14:30 |