Why doesn't work it? Where is the mistake? I don't know - C (СИ)
Формулировка задачи:
// 1. Вывести сумму элементов масcива через функцию
void input (int *x, int n)
{
int i;
for (i=0; i<n; i++)
{
*(x+i)=rand ()%10; // *(x+i)=
}
}
int summ (int *x, int n)
{
int i, sum=0;
for (i=0; i<n; i++)
{
sum=sum+x[i];
}
//printf ("\nThe sum elements of array is\n%d", sum);
return (sum);
}
void output (int*x, int n)
{
int i;
for (i=0; i<n; i++)
{
printf ("%3d", *(x+i)); // *(x+i)=
}
}
int main ()
{
int *a=NULL;
int n, i, sum=0;
printf ("Enter amount the elements of array\n");
scanf ("%d", &n);
a=(int*)malloc(n*sizeof(int)); // Динамическое выделение памяти.
input (a, n);
output (a,n);
summ (a,n);
printf ("\nThe sum elements of array is\t%d", sum);
free (a); // освобождение выделенной памяти.
return(0);
}Решение задачи: «Why doesn't work it? Where is the mistake? I don't know»
textual
Листинг программы
void input(int *x, int n)
{
int i;
for (i = 0; i<n; i++)
{
*(x + i) = rand() % 10; // *(x+i)=
}
}
int summ(int *x, int n)
{
int i, sum = 0;
for (i = 0; i<n; i++)
{
sum = sum + x[i];
}
//printf ("\nThe sum elements of array is\n%d", sum);
return (sum);
}
void output(int*x, int n)
{
int i;
for (i = 0; i<n; i++)
{
printf("%3d", *(x + i)); // *(x+i)=
}
}
int main()
{
int *a = NULL;
int n, sum = 0;
printf("Enter amount the elements of array\n");
scanf_s("%d", &n);
a = (int*)malloc(n * sizeof(int)); // Динамическое выделение памяти.
input(a, n);
output(a, n);
sum = summ(a, n);
printf("\nThe sum elements of array is\t%d", sum);
free(a); // освобождение выделенной памяти.
return(0);
}
Объяснение кода листинга программы
- В функции
inputпроисходит инициализация массиваxслучайными числами от 0 до 9. - В функции
summвычисляется сумма всех элементов массиваx. - В функции
outputпроисходит вывод всех элементов массиваxчерез пробел. - В функции
mainпользователю предлагается ввести количество элементов массива. - Выделяется динамическая память под массив
aзаданного размера. - Функция
inputинициализирует массивaслучайными числами. - Функция
outputвыводит массивaна экран. - Функция
summвычисляет сумму всех элементов массиваa. - Выводится сообщение о сумме элементов массива.
- Выделенная память освобождается функцией
free. - Возвращается 0, заканчивая работу программы.