Purpose of this asignment: Practice for number basis transformation.
Task 1: Solve the following exercises
A) Convert the following numbers (from base 10) to base 2:
• 13
• 85
• 219
• 511
• 512
B) Convert the following numbers (from base 2) to base 10. You should assume they are all positive values:
• 1010
• 10001
• 11011
• 0111011
• 01010101
C) Convert the following numbers:
• 7A1 (base 16) to: base 10
• 567 (base 8) to : base 5
• 567 (base 10) to : base 5
• 2121 (base 3) to : base 4
• 7778 (base 10) to: base 16
D) Convert the following negative numbers (from base 10) to base 2 using 2's complement on 8 bits:
• -1
• -13
• -59
• -83
• -128
E) Convert the following numbers (from base 2) to base 10. This binary representation is using 2's complement on 8 bits to represent negative numbers:
• 10101010
• 10011010
• 11001001
• 10001000
• 01111111
Task 2:
prepare a program that allows the user to convert numbers between any 2 basis. Your program should follow the requirements:
A) Your program should support all the basis between 2 and 16 inclusively.
B) It should loop and repeatdly take user input and perform the following operations (shown also in the sample run below): exit the menu, convert a number from any base to any other base, print a file, solve a file.
C) The repetition over the menu options should be implemented using a loop, not recursive calls to main.
D) If a number does not have a not valid representation for the basis that it is represented in, the program should indicate that (by printing a message). It should not crash and should also not work with the number. E.g. see the behavior:
E) Enter a number, current_base, new_base(e.g.: 129,10,2): 127,7,10
F) Invalid representation n = 127 in base: 7
G) The program should be able to perform multiple conversions specified in a 'test file'. Here the 'test file' has the meaning of a 'homework file'. It specifies a set of exercises to be solved. In particular, each line of the file specifies a number and the basis it is written in and a set of other basis to be converted to. The program should be able to read all the lines in such a file, solve each line and prepare the result in another file. The line format is:
H) current_base : number, new_base_1, new_base_2, ..., new_base_M
I) The answer for a line in the format above should include the number representation for each of the new bases:
J) current_base : number, new_base_1: number_1, new_base_2: number_2, ..., new_base_M : number_M
Notice in the ex above that collons separate the base from the number and commas separate pairs of base and number.
K) Your files (both the test and the solution) should follow the format indicated above.
L) If the number representation is wrong in the test file, the program should also indicate that in the solution file.
M) Your program should work for other test files with more or less basis transformations per line.
N) Your program should work name the solution file based on the test file name, by appending '_solution' to the filename (still with extension '.txt'). For ex in my sample run I used the file 'test1.txt' and I hase saved the answers to a file named 'test1_solution.txt'.
O) You can organize your solution however you want. I recommend writting a function for each of the following operations:
- Test that a number is valid for the base it is represented in: it contains no illegal symbols. E.g. of bad representations: 127 (in base 7), 1G (in base 16), 1A (in base 10 or less).
- Convert from base 10 to any other base. This function should take all the arguments it needs: number, new base.
- Convert from any base to base 10
- A function (or at least a structure) to map from symbols to values (e.g. 'A' is 10, 'B' is 11, ..., 'F' is 15).
- Afunction (or at least a structure) to map from values to symbols (e.g. 10 is 'A', 11 is 'B', ..., 15 is 'F').
P) Consider how you want to represent a number (since you have to process it symbol by symbol)
Q) The test file and the solution produced for it in the sample runs are: test1.txt , and test1_solution.txt