From 8ff3d31f2701962671f7b6dba2a336bd23a73ea1 Mon Sep 17 00:00:00 2001 From: PrismRealm Date: Sat, 23 Mar 2019 17:45:05 +0800 Subject: [PATCH] Initial commit --- .DS_Store | Bin 0 -> 6148 bytes Problem 4.16/main.py | 57 +++++++++++++++++++++++++++++++++++++++++++ README.md | 9 +++++++ 3 files changed, 66 insertions(+) create mode 100644 .DS_Store create mode 100644 Problem 4.16/main.py create mode 100644 README.md diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..25e194e4543a535a7baa8942758baa8c230e2aa7 GIT binary patch literal 6148 zcmeHKOG*SW5UtVy8{EuFTn0SB+@NP@_re@NX-9O?O$NbzU&Ox6=z3 zA|h3gyh`em^n*@PBBGn8-AZIBA{81@smutcXH7@$yZ~y+(aD|k-Ti8Nn`aXJ#VPLn zM6Tpfva~YVf4?7X_lrlLo2Kn@3yK?!U9nX z1zMyj{A$O+kXbli Q!h!J+D1<~84EzEE@BiQ}RsaA1 literal 0 HcmV?d00001 diff --git a/Problem 4.16/main.py b/Problem 4.16/main.py new file mode 100644 index 0000000..79ed768 --- /dev/null +++ b/Problem 4.16/main.py @@ -0,0 +1,57 @@ +#!/usr/bin/python +import threading +import sys + +average_result = None +minimum_result = None +maximum_result = None + +def calculate_average(numbers: list): + global average_result + average_result = sum(numbers) / len(numbers) + +def calculate_minimum(numbers: list): + global minimum_result + minimum_result = min(numbers) + +def calculate_maximum(numbers: list): + global maximum_result + maximum_result = max(numbers) + +def main() -> int: + if len(sys.argv) == 1: + print('Error: One or many integer arguments are necessary.') + return 1 + + # Converting digit strings into integers + numbers = None + try: + numbers = [int(digit) for digit in sys.argv[1:]] + except: + print('Error: Every argument must be an integer.') + return 1 + + # Creating threads + average_thread = threading.Thread(target=calculate_average, args=(numbers,)) + minimum_thread = threading.Thread(target=calculate_minimum, args=(numbers,)) + maximum_thread = threading.Thread(target=calculate_maximum, args=(numbers,)) + + # Starting the threads + average_thread.start() + minimum_thread.start() + maximum_thread.start() + + # Waiting for the threads + average_thread.join() + minimum_thread.join() + maximum_thread.join() + + # Printing the results + global average_result, minimum_result, maximum_result + print('The average value is %d' % average_result) + print('The minimum value is %d' % minimum_result) + print('The maximum value is %d' % maximum_result) + return 0 + +if __name__ == '__main__': + exit(main()) diff --git a/README.md b/README.md new file mode 100644 index 0000000..5774215 --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +The 4th assignment of Operating System +=== + +The program of `Problem 4.16` is in the directory `Problem 4.16`. + +--- + +The program of `Problem 4.16` requires Python 3.5.2 or newer version to execute. +To execute the program, please move to the directory and type `python main.py ` or `python3 main.py ` in your command line interface.