Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Write a program that allows the user to convert numbers between any 2 basis. Your program should follow the requirements:
- Your program should support all the basis between 2 and 16 inclusively.
- 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.
- The repetition over the menu options should be implemented using a loop, not recursive calls to main.
- 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:
- Enter a number, current_base, new_base(e.g.: 129,10,2): 127,7,10
- Invalid representation n = 127 in base : 7
- 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 write the result in another file. The line format is:
- current_base : number, new_base_1, new_base_2, ..., new_base_M
- The answer for a line in the format above should include the number representation for each of the new bases:
- current_base : number, new_base_1: number_1, new_base_2: number_2, ..., new_base_M : number_M
- Notice in the example above that collons separate the base from the number and commas separate pairs of base and number.
- Your files (both the test and the solution) should follow the format indicated above.
- If the number representation is wrong in the test file, the program should also indicate that in the solution file.
- Your program should work for other test files with more or less basis transformations per line.
- 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 example in my sample run I used the file 'test1.txt' and I hase saved the answers to a file named 'test1_solution.txt'.
- 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).
- a function (or at least a structure) to map from values to symbols (e.g. 10 is 'A', 11 is 'B', ..., 15 is 'F').
- Consider how you want to represent a number (since you have to process it symbol by symbol)
- The test file and the solution produced for it in the sample runs are: test1.txt , and test1_solution.txt
- Sample run:
- >>>
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 1
- Enter a number, current_base, new_base(e.g.: 129,10,2): 129,10,2
- 2 : 010000001
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 1
- Enter a number, current_base, new_base(e.g.: 129,10,2): Aa,16,10
- 10 : 0170
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 1
- Enter a number, current_base, new_base(e.g.: 129,10,2): 127,7,10
- Invalid representation n = 127 in base : 7
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 1
- Enter a number, current_base, new_base(e.g.: 129,10,2): 101,2,10
- 10 : 05
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 101,2,3
- Invalid choice.
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 1
- Enter a number, current_base, new_base(e.g.: 129,10,2): 101,2,3
- 3 : 012
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 3
- Enter the name of the file to be printed: test1.txt
- --------------------
- 10:8, 2, 3, 7, 10
- 5:123, 10, 2, 3,5
- 7:127, 3, 5,7
- --------------------
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 2
- Enter the name of the test file: test1.txt
- Error number format given base: 7 :
- Written solution to file: test1_solved.txt
- The solution is:
- --------------------
- 10:8 , 2 : 1000 , 3 : 022 , 7 : 011 , 10 : 08
- 5:123 , 10 : 038 , 2 : 0100110 , 3 : 01102 , 5 : 0123
- 7:127 base number error
- --------------------
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 3
- Enter the name of the file to be printed: test1_solved.txt
- --------------------
- 10:8 , 2 : 1000 , 3 : 022 , 7 : 011 , 10 : 08
- 5:123 , 10 : 038 , 2 : 0100110 , 3 : 01102 , 5 : 0123
- 7:127 base number error
- --------------------
- 0. Exit.
- 1. Convert a number.
- 2. Solve a test (from a file).
- 3. Print a file.
- Enter your choice: 0
- >>>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement