Как поделить два числа типа int и присвоить ответ переменной типа double&
Задание: Вычислить Z= (Sп + Sо)/(Sп - Sо) , где Sп и Sо – суммы положительных и отрицательных элементов массива А (70)
Код:
#include <stdio.h>
#include <malloc.h>
int main()
{
int *a;
int i, n, j, sum_p=0, sum_o=0;
double z=3;
printf("Введите размер массива: ");
scanf("%d", &n);
a = (int*)malloc(n * sizeof(int));
for (i = 0; i < n; i++)
{
printf("Введите элемент массива %d\n", i+1);
if(scanf("%d", &j)==1)
a[i] = j;
if(a[i] > 0)
sum_p += a[i];
if(a[i] < 0)
sum_o += a[i];
}
putchar('\n');
putchar('\n');
printf("Sum+ %d\n", sum_p);
putchar('\n');
printf("Sum- %d\n", sum_o);
putchar('\n');
z = (sum_p + sum_o)/(sum_p - sum_o);
printf("z= %lf", z);
putchar('\n');
free(a);
return 0;
}
Ответ:
Введите размер массива: 2
Введите элемент массива 1
-10
Введите элемент массива 2
2
Sum+ 2
Sum- -10
z= 0.000000
В ответе должна быть дробь, но компилятор всегда выдаёт 0, даже если изначально задано иное значение. В чём ошибка?
Ответы (2 шт):
Автор решения: Mikhailo
→ Ссылка
Надо сразу пояснить, что делить надо double, а не целочисленно:
z = double(sum_p + sum_o)/(sum_p - sum_o);
Это в С++, в С
z = ((double)(sum_p + sum_o))/(sum_p - sum_o);