Algorithm

Pages: 1234
Guys at least help me translate this to c++ please I'm new at 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
package javaGui;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class vendingMachineFixed {
  
  
  public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
    int numberOfStudents = Integer.valueOf(scanner.nextLine());

    
    List<Integer> venderMoneyBank = new ArrayList();
  
    int costABottel = 50;
    List<String> possibilities = new ArrayList();
    String[][] studentsQueue = new String[numberOfStudents][3];
    
    for (int i = 0; i<numberOfStudents; i++) {
      String studentValues = scanner.nextLine();
      String[] studentValuesArray = studentValues.split(" ");
      studentsQueue[i] = studentValuesArray;
    }
    
    List<Integer> studentsWhoNeedChange = new ArrayList();
    List<Integer> studentsWhoNeedChangeIndex = new ArrayList();
    
    
    
    int studentMoney;
    //How much change does each student need.
    for(int i = 0; i<studentsQueue.length; i++) {
      studentMoney = Integer.valueOf(studentsQueue[i][0]);
      int numberOfBottels = Integer.valueOf(studentsQueue[i][1]);
      int expectedChange = ((studentMoney/costABottel)-numberOfBottels)*50;
      int change = expectedChange;
      studentsWhoNeedChange.add(change);
      studentsWhoNeedChangeIndex.add(i);
    }

    int listSize = studentsWhoNeedChange.size();
    
    for (int i=1; i<listSize+1; i++) {
      int change = Collections.min(studentsWhoNeedChange);
      int indexInChangeList = studentsWhoNeedChange.indexOf(change);
      studentsWhoNeedChange.remove(indexInChangeList);
      int indexInList = studentsWhoNeedChangeIndex.get(indexInChangeList);
      studentsWhoNeedChangeIndex.remove(indexInChangeList);
      studentMoney = Integer.valueOf(studentsQueue[indexInList][0]);
      if (change == 0) {
        venderMoneyBank.add(studentMoney);
        
        continue;
      }
      else if (venderMoneyBank.contains(change)) {
        venderMoneyBank.add(studentMoney);
        venderMoneyBank.remove(venderMoneyBank.indexOf(change));
        
        continue;
      }
      
      else {
        
        
        List<Integer> amountList = new ArrayList();
        amountList.add(change/100);
        amountList.add((change%100)/10);
        
        int changepart;
        for (int coin : amountList) {
          if (coin == 5) {
            changepart = 50;
          }
          else if (coin == 1) {
            changepart = 100;
          }
          else {
            changepart = 200;
          }
          if (venderMoneyBank.contains(changepart)) {
            venderMoneyBank.add(studentMoney);
            venderMoneyBank.remove(venderMoneyBank.indexOf(changepart));
            change -= changepart;
            
            if (change != 0) {
              continue;
            }
          }
          else if (!(venderMoneyBank.contains(200))) {
            while(venderMoneyBank.contains(100) && change != 0) {
              venderMoneyBank.remove(venderMoneyBank.indexOf(changepart));
              change -= 100;
            }
            if (change > 100) {
              possibilities.add("NO");
            }
            venderMoneyBank.add(studentMoney);
          }
          else {
            possibilities.add("NO");
          }
        }
      }
    }
    if (possibilities.contains("NO")) {
      System.out.println("NO");
    }
    else {
      System.out.println("YES");
    }
    
  }
}  
    
Last edited on
Topic archived. No new replies allowed.
Pages: 1234