Algorithm
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.