Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero
Given an array of integers, calculate the ratios of its elements that are positive, negative, and zero. Print the decimal value of each fraction on a new line with 6 places after the decimal.
Note: This challenge introduces precision problems. The test cases are scaled to six decimal places, though answers with absolute error of up to \(10^{-10}\) are acceptable.
Example
arr = [1,1,0,-1,-1]
There are n=5 elements, two positive, two negative and one zero. Their ratios are \(\frac{2}{5} = 0.400000\) , \(\frac{2}{5} = 0.400000\) and \(\frac{1}{5} = 0.200000\). Results are printed as:
0.400000
0.400000
0.200000
Function Description
Complete the plusMinus function in the editor below.
plusMinus has the following parameter(s):
- int arr[n]: an array of integers
Print
Print the ratios of positive, negative and zero values in the array. Each value should be printed on a separate line with 6 digits after the decimal. The function should not return a value.
Input Format
The first line contains an integer, n, the size of the array.
The second line contains n space-separated integers that describe arr[n].
Constraints
\(1<n \le 100\)
\(-100 \le arr[i] \le 100\)
Output Format
Print the following 3 lines, each to 6 decimals:
- proportion of positive values
- proportion of negative values
- proportion of zeros
Sample Input
STDIN Function
----- --------
6 arr[] size n = 6
-4 3 -9 0 4 1 arr = [-4, 3, -9, 0, 4, 1]
0.500000
0.333333
0.166667
Explanation
There are 3 positive numbers, 2 negative numbers, and 1 zero in the array.
The proportions of occurrence are positive: \(\frac{3}{6} = 0.500000\), negative: \(\frac{2}{6} = 0.333333\) and zeros: \(\frac{1}{6} = 0.166667\).
———-SOLUTION———-
#!/bin/python3 from decimal import * import math import os import random import re import sys # Complete the plusMinus function below. def plusMinus(arr): numberOfPositive = 0 numberOfNegative = 0 numberOfZeros = 0 getcontext().prec = 6 arr_length = len(arr) arr_length = float(arr_length) for i in arr: if (i > 0): numberOfPositive = numberOfPositive + 1 elif (i < 0): numberOfNegative = numberOfNegative + 1 else: numberOfZeros = numberOfZeros + 1 fractionOfPositive = Decimal(numberOfPositive)/Decimal(arr_length) fractionOfPositive = format(fractionOfPositive, '.6f') print (fractionOfPositive) fractionOfNegatives = Decimal(numberOfNegative)/Decimal(arr_length) fractionOfNegatives = format(fractionOfNegatives, '.6f') print (fractionOfNegatives) fractionOfZeros = Decimal(numberOfZeros)/Decimal(arr_length) fractionOfZeros = format(fractionOfZeros, '.6f') print (fractionOfZeros) if __name__ == '__main__': n = int(input()) arr = list(map(int, input().rstrip().split())) plusMinus(arr)