Найти делители целого числа и записать их в массив - C (СИ)
Формулировка задачи:
У меня проблема в том, что массив делителей MasD записываются непонятные числа.
Коротко о моем коде: если остаток от деления на j равен 0, то в массив записывается j, иначе 0
Как можно написать по-другому или что у меня не так?
for (j=(-fabs(S); j<fabs(S); j++ )
{
if (j!= 0 )
{
count = count + 1;
if (S % j == 0)
{
MasD[count] = j;
}
else MasD[count] = 0;
}
}Решение задачи: «Найти делители целого числа и записать их в массив»
textual
Листинг программы
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
int main(void)
{
int *MasD;
int count=0;
int j;
int h;
int S=8;
for (j=(-abs(S)); j<=abs(S); j++ ) {
if (j!= 0 && S%j==0)
count = count + 1;
}
MasD=(int*)malloc(count*sizeof(int));
for (h=0,j=(-abs(S));j<=abs(S);j++){
if (j!=0 && S%j==0){
MasD[h]=j;
printf("%4d",MasD[h]);
h++;
}
}
free (MasD);
return 0;
}