Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- основная суть проблемы заключается в циклах, где идет распределение по минимальному элементу. Он просто зацикливается все зависает, либо не идет никакого распределения. Что делать с этим уже не имею понятия. Можно, наверное, было исключить часть кода, но мало ли проблема появилась еще до циклов.
- //ввод и вывод матрицы, векторов спроса и предложений
- stolbF.addActionListener(new ActionListener () {
- public void actionPerformed(ActionEvent arg0) {
- // TODO Auto-generated method stub
- int razmer = Integer.valueOf(stolbF.getText());
- stolb = razmer;
- System.out.println(stolb);
- }
- });
- strocF.addActionListener(new ActionListener () {
- public void actionPerformed(ActionEvent arg0) {
- // TODO Auto-generated method stub
- int razmer1 = Integer.valueOf(strocF.getText());
- stroc = razmer1;
- System.out.println(stroc);
- }
- });
- vvod.addActionListener(new ActionListener () {
- public void actionPerformed(ActionEvent arg0) {
- // TODO Auto-generated method stub
- if (wow==0) {
- if (i<stolb) {
- String k =vvod.getText();
- matr[i][j]=Integer.valueOf(k );
- System.out.println(matr[i][j]);
- j++;
- vvod.setText(null);
- if(j==stolb) {
- i++;
- j=0;
- }
- }
- };
- if(wow==1) {
- if(i<stolb) {
- String s = vvod.getText();
- sp[i]=Integer.valueOf(s);
- vvod.setText(null);
- i++;
- }
- }
- if(wow==2) {
- if(i<stolb) {
- String s = vvod.getText();
- pr[i]=Integer.valueOf(s);
- vvod.setText(null);
- i++;
- }
- }
- if(i==stolb) {
- i=0;
- j=0;
- }
- }
- });
- btn1.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- if(wow==0) {
- String s=null;
- for (int i = 0;i<stolb;i++) {
- for (int j = 0;j<stolb;j++) {
- s=Integer.toString(matr[i][j]);
- matrr=matrr+" "+s;
- }
- matrr=matrr+"\n ";
- }
- matrica.setText(matrr);
- matrr=" ";
- }
- if(wow==1) {
- String s1=null;
- s1=Integer.toString(sp[i]);
- spp=spp+s1;
- for (int i = 1;i<stolb;i++) {
- s1=Integer.toString(sp[i]);
- spp=spp+"; "+s1;
- System.out.print(spp);
- }
- spros.setText(spp);
- spp=" ";
- }
- if(wow==2) {
- String s2=null;
- s2=Integer.toString(pr[i]);
- prr=prr+s2;
- for (int i = 1;i<stolb;i++) {
- s2=Integer.toString(pr[i]);
- prr=prr+"; "+s2;
- }
- predlog.setText(prr);
- prr=" ";
- }
- }
- });
- btn2.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- for (int i=0;i<stolb;i++) {
- sum1+=sp[i];
- }
- System.out.println(sum1);
- for (int i=0;i<stolb;i++) {
- sum2+=pr[i];
- }
- String proverka=" ";
- String strproverka=null;
- strproverka=Integer.toString(sp[0]);
- proverka=proverka+strproverka;
- for (int i = 1;i<stolb;i++) {
- strproverka=Integer.toString(sp[i]);
- proverka=proverka+"+"+strproverka;
- }
- proverka=proverka+"=";
- strproverka=Integer.toString(pr[0]);
- proverka=proverka+strproverka;
- for (int i = 1;i<stolb;i++) {
- strproverka=Integer.toString(pr[i]);
- proverka=proverka+"+"+strproverka;
- }
- proverka = proverka +"="+sum2;
- if(sum1==sum2) {
- func.setText(proverka);
- }
- else
- {
- func.setText("Не равны. Повторите ввод!");
- }
- }
- });
- btn3.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent arg0) {
- wow=comboBox.getSelectedIndex();
- }
- });
- // распределение
- raspredbtn.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- int min = 990;
- int index_min_i = 0;
- int index_min_j = 0;
- while ((sum1> 0) && (sum2> 0)) { // считаем пока есть запасы и заявки
- // нахождение минимального элемента
- for (int i = 0; i < stolb; i++) {
- for (int j = 0 ; j <stolb; j++) {
- if ((pr[i] > 0) && (sp[j] > 0)) {
- if ((matr[i][j] < min)) {
- min = matr[i][j];
- index_min_i = i;
- index_min_j = j;
- }
- }
- }
- System.out.println("Минимальный равен " + min + " = [" + index_min_i + "]" + "[" + index_min_j + "]");
- }
- // спрос равен предложению
- if (sp[index_min_j] == pr[index_min_i])
- {
- mresh[index_min_i][index_min_j] = pr[index_min_j];
- sp[index_min_j] =0;
- pr[index_min_i] = 0;
- }
- //спрос больше предложения
- if (sp[index_min_j]> pr[index_min_i])
- {
- mresh[index_min_i][index_min_j] = pr[index_min_i];
- sp[index_min_j] -= pr[index_min_i];
- pr[index_min_i]=0;
- }
- //предложение больше спроса
- if (sp[index_min_j] < pr[index_min_i])
- {
- mresh[index_min_i][index_min_j] = sp[index_min_j];
- pr[index_min_i] -= sp[index_min_j];
- sp[index_min_j]=0;
- }
- sum1=0;
- sum2=0;
- for (int i=0;i<stolb;i++) {
- sum1+=sp[i];
- }
- System.out.println(sum1);
- for (int i=0;i<stolb;i++) {
- sum2+=pr[i];
- }
- }
- String s=null;
- for (int i = 0;i<stolb;i++) {
- for (int j = 0;j<stolb;j++) {
- if(mresh[i][j]>0)
- {
- s=Integer.toString(mresh[i][j]);
- }
- else
- {
- s="-";
- }
- lmresh=lmresh+" "+s;
- }
- lmresh=lmresh +"\n ";
- }
- raspred.setText(lmresh);
- lmresh=" ";
- }});
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement