Определить разность между суммой модулей отрицательных элементов и суммой положительных - C (СИ)
Формулировка задачи:
Написать программу, определяющую разность между суммой модулей отрицательных элементов и суммой положительных элементов одномерного массива. При вводе/выводе элементов использовать индексы, а обработку элементов массива осуществлять с помощью указателей. Расчет должен производиться в функции, в которую массив передается по указателю.
если, например, ввести 12 единиц, а потом 0, считает неправильно
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
float Difference (float *a,int N)
{
int i;
float Positive=0, Negative=0;
for (i=0; i<N; i++)
if (*(a+i)<0)
Negative+=abs(*(a+i));
else
if (*(a+i)>0)
Positive+=(*(a+i));
return Negative-Positive;
}
int main()
{
const int NN=10;
float *aa;
aa = (float*) calloc(sizeof(float), NN);
int i=0;
printf("Enter the numbers(in the end please enter 0):\n");
scanf("%f", &aa[0]);
if (aa[0]==0)
printf("0 is bad number. Try again.\n");
while ((aa[i]!=0)||((i==0)&&(aa[0]==0)))
{
i++;
if (i>=NN)
{
realloc (aa, i * sizeof(float));
//aa = (float *) realloc(aa, i);
}
scanf("%f", &aa[i]);
}
printf("%.1f\n", Difference(aa, i));
getch();
return 0;
}Решение задачи: «Определить разность между суммой модулей отрицательных элементов и суммой положительных»
textual
Листинг программы
aa = realloc (aa, i * sizeof(float));