Посчитать доли знаков
В первой строке содержится целое число ? — количество элементов последовательности. Во второй строке записано ? целых чисел через пробел — сама последовательность. Все элементы последовательности по абсолютной величине не превышают 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 шт):
Все почти верно. Только тут
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);
}