Посчитать доли знаков

В первой строке содержится целое число ? — количество элементов последовательности. Во второй строке записано ? целых чисел через пробел — сама последовательность. Все элементы последовательности по абсолютной величине не превышают 100. Формат выходных данных: Нужно вывести три вещественных числа. Первое показывает, какая доля чисел отрицательная. Второе — какая доля чисел равна нулю. И последнее — какая доля положительных чисел. Каждое выведенное число должно отличаться от своего правильного значения не более чем на 10^−5. Вот моя программа. Подскажите, что сделать/исправить, пожалуйста. Учусь делать простые задачки пока что :)

#include<stdio.h>
int main(){
    int i, N, a, b, c, A, B, C, k;
    a=b=c=0;
    scanf("%d", &N);
    for (i=0; i<=N; i++){
        scanf("%d", &k);
        if (k==0){
            b++;
        }
        if(k>0){
            c++;
        }
        if(k<0){
            a++;
        }
    }
    A=a/(double)N;
    B=b/(double)N;
    C=c/(double)N;
    printf("%0.5lf %0.5lf %0.5lf", A, B, C);
}

Ответы (1 шт):

Автор решения: Mikhailo

Все почти верно. Только тут

for (i = 0; i < N; i++) {

нужно строго меньше N, чтоб именно N чисел ввести, а не на одно больше, как у вас.

А переменные A, B и C должны быть double.

Так что должно выйти что-то вроде

int main() {
    int i, N, a, b, c, k;
    a = b = c = 0;
    scanf("%d", &N);

    for (i = 0; i < N; i++) {
        scanf("%d", &k);

        if (k == 0) {
            b++;
            }

        if (k > 0) {
            c++;
            }

        if (k < 0) {
            a++;
            }
        }

    double A = a / (double)N;
    double B = b / (double)N;
    double C = c / (double)N;
    printf("%0.5lf %0.5lf %0.5lf", A, B, C);
    }
→ Ссылка