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);
}

Объяснение кода листинга программы

  1. В функции input происходит инициализация массива x случайными числами от 0 до 9.
  2. В функции summ вычисляется сумма всех элементов массива x.
  3. В функции output происходит вывод всех элементов массива x через пробел.
  4. В функции main пользователю предлагается ввести количество элементов массива.
  5. Выделяется динамическая память под массив a заданного размера.
  6. Функция input инициализирует массив a случайными числами.
  7. Функция output выводит массив a на экран.
  8. Функция summ вычисляет сумму всех элементов массива a.
  9. Выводится сообщение о сумме элементов массива.
  10. Выделенная память освобождается функцией free.
  11. Возвращается 0, заканчивая работу программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5