Plus Minus


Problem Statement :


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^ -4 are acceptable.

Example :
arr = [1,1,0, -1,-1]

There are n =5 elements, two positive, two negative and one zero. Their ratios are 2/5=0.400000 , 2/5=0.400000  and 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 space-separated integers that describe arr[n]

Constraints

0 < n < 100
-100 <= arr[i] <=100

Output Format

Print the following
lines, each to

decimals:

1. proportion of positive values
2. proportion of negative values
3. proportion of zeros
.



Solution :


                        In C :

void plusMinus(int arr_count, int* arr) {

    float p_count = 0, n_count = 0 , z_count = 0;
    for(int i = 0; i< arr_count; i++)
    {
        if(arr[i]>0)
        p_count += 1;

        else if (arr[i]<0) {
        n_count +=1;
        }

        else if(arr[i]==0) z_count += 1;
    }

    printf("%.5f\n",(p_count/arr_count));
    printf("%.5f\n",(n_count/arr_count));
    printf("%.5f\n",(z_count/arr_count));

}



In Java : 

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int pos = 0;
        int zero = 0;
        int neg = 0;
        for (int i = 0; i < n; i++) {
            int x = in.nextInt();
            if (x > 0) {
                pos++;
            } else if (x == 0) {
                zero++;
            } else {
                neg++;
            }
        }
        System.out.println(pos / (double) n);
        System.out.println(neg / (double) n);
        System.out.println(zero / (double) n);
    }
}




In C ++ :

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;


int main() {
    int p=0,n=0,z=0,a,i,j;
    cin>>j;
    for(i=0;i<j;i++){
        cin>>a;
        
        if(a>0)
            p++;
        else if(a<0)
            n++;
        else
            z++;
    }
    
    printf("%.3f\n",(float)p/j);
    printf("%.3f\n",(float)n/j);
    printf("%.3f",(float)z/j);
    /* Enter your code here. Read input from STDIN. Print output to STDOUT */   
    return 0;
}




In Python3 :

N = int(input())
listahan = input().split()
diks = {"pos": 0, "neg": 0, "zer": 0}
for i in listahan:
    if int(i) > 0:
        diks["pos"] += 1
    elif int(i) < 0:
        diks["neg"] += 1
    else:
        diks["zer"] += 1     
print(format(diks["pos"]/N, '.3f'))
print(format(diks["neg"]/N, '.3f'))
print(format(diks["zer"]/N, '.3f'))