diff --git a/2020-computer-science-igcse-prerelease-pseudocode.txt b/2020-computer-science-igcse-prerelease-pseudocode.txt new file mode 100644 index 0000000..bd4aacd --- /dev/null +++ b/2020-computer-science-igcse-prerelease-pseudocode.txt @@ -0,0 +1,83 @@ +FUNCTION get_input( dict): + tmp <- None + WHILE (not tmp): + tmp <- input().upper().strip() + IF (not tmp in dict.keys()): + OUTPUT "Please enter a valid product code." + tmp <- None + ENDIF + ENDWHILE + RETURN tmp +ENDFUNCTION + +FUNCTION print_details( dict): + FOR item in dict.keys(): + OUTPUT "%s: $%.2f, %s" % (item, dict[item][0], dict[item][1]) + ENDFOR +ENDFUNCTION + + +FUNCTION print_chosen( dict, item): + OUTPUT "%s: %s" % (item, dict[item][1]) + RETURN dict[item][0] +ENDFUNCTION + +phones_dict <- {"BPCM": (29.99, "Compact"), + "BPSH": (49.99, "Clam Shell"), + "RPSH": (199.99, "RoboPhone - 5-inch screen AND 64 GB memory"), + "RPLL": (499.99,"RoboPhone - 6-inch screen AND 256 GB memory"), + "YPLS": (549.99,"Y-Phone Standard - 6-inch screen and 64 GB memory"), + "YPLL": (649.99, "Y-Phone Deluxe - 6-inch screen AND 256 GB memory")} +tablets_dict <- {"RTMS": (149.99, "RoboTab - 8-inch screen AND 64 GB memory"), + "RTLM": (299.99, "RoboTab - 10-inch screen AND 128 GB memory"), + "YTLM": (499.99, "Y-Tab Standard - 10-inch screen and 128 GB memory"), + "YTLL": (599.99, "Y-Tab Deluxe - 10-inch screen AND 256 GB memory")} +devices_dict <- {**phones_dict , **tablets_dict} +sims_dict <- {"SMNO": (0.00, "SIM Free (no SIM card purchased)"), + "SMPG": (9.99, "Pay As You Go (SIM card purchased)")} +case_dict <- {"CSST": (0.00, "Standard"), + "CSLX": (50.00, "Luxury")} +charger_dict <- {"CGCR": (19.99, "Car"), + "CGHM": (15.99, "Home")} +total <- 0 +saving <- 0 +run <- True +devices <- 0 +WHILE run: + OUTPUT "Choose an option:" + print_details( devices_dict) + device <- get_input( devices_dict) + devices += 1 + IF (device in phones_dict.keys()): + OUTPUT "Choose an option:" + print_details( sims_dict) + sim_payg <- get_input( sims_dict) + ENDIF + OUTPUT "Choose an option:" + print_details( case_dict) + case <- get_input( case_dict) + OUTPUT "Which charger(s) would you like? Enter the codes for those you want with a space between them, or enter nothing to choose neither" + print_details( charger_dict) + chargers <- input().upper().split(" ") + FOR item in chargers: + IF item not in charger_dict: + chargers.remove(item) + ENDIF + ENDFOR + IF (devices > 1): + total += 0.9 * print_chosen( devices_dict, device) + saving += 0.1 * print_chosen( devices_dict, device) + ELSE: + total += print_chosen( devices_dict, device) + ENDIF + IF (device in phones_dict): + total += print_chosen( sims_dict, sim_payg) + ENDIF + total += print_chosen( case_dict, case) + FOR charger in chargers: + total += print_chosen( charger_dict, charger) + ENDFOR + OUTPUT "Subtotal: $%.2f" % total + run <- True IF (input("Would you like another device (y/n)?").lower().strip()[0] = "y") ELSE False +ENDWHILE +OUTPUT "Total: $%.2f\nSaving: $%.2f" % (total, saving) \ No newline at end of file