Массивы. Функция. Почему ошибка? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Программа, которая считает сумму элементов массива, с элемента, равного пяти. Задали добавить всё это в функцию. У меня получилось так:
Листинг программы
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <locale.h>
  4. const int N = 10;
  5. void flab4(int M[], int N);
  6. {
  7. int i;
  8. int sum, k;
  9. sum=0;
  10. k=0;
  11. for (i=0; i < N; i++)
  12. {
  13. if (A[i] == 5)
  14. { k = i;
  15. break; }
  16. }
  17. for (; k<N; k++)
  18. {
  19. sum+=A[k];
  20. }
  21. return(sum);
  22. }
  23. int main()
  24. {
  25. setlocale(LC_ALL,"Rus");
  26. int A[N], l, rez;
  27. printf("Введите массив m: \n");
  28. for ( l = 0 ; l < N ; l++)
  29. {
  30. printf("Введите A[%d]: ", l);
  31. scanf("%d", &A[il);
  32. }
  33. rez=flab4(A[N],l);
  34. printf("\n Исходный массив: \n");
  35. for (l=0; l<N; l++)
  36. {
  37. printf("%4d",A[l]);
  38. }
  39. printf("\n Сумма: %d",rez);
  40. }
Ошибка такая: [Error] expected unqualified-id before '{' token.

Решение задачи: «Массивы. Функция. Почему ошибка?»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int sum_from(const int * array, const size_t elements, const int startval) {
  5.     size_t i;
  6.     int sum  = 0;
  7.    
  8.     for ( i = 0; i < elements && array[i] != startval; ++i )
  9.         ;
  10.     for ( ; i < elements; ++i )
  11.         sum += array[i];
  12.    
  13.     return sum;
  14. }
  15.  
  16. #define STARTVAL (5)
  17.  
  18. int main(void) {
  19.     int * array;
  20.     size_t elements, i;
  21.    
  22.     printf("Number of elements: ");
  23.     if ( scanf("%u", &elements) != 1 || elements < 1 ) {
  24.         fprintf(stderr, "Input error!\n");
  25.         return 1;
  26.     }
  27.    
  28.     if ( ! ( array = malloc(sizeof(int) * elements) ) ) {
  29.         fprintf(stderr, "Memory error!\n");
  30.         return 1;
  31.     }
  32.    
  33.     for ( i = 0; i < elements; ++i ) {
  34.         printf("ARRAY[%u] = ", i);
  35.         if ( scanf("%d", array + i) != 1 ) {
  36.             fprintf(stderr, "Input error!\n");
  37.             free(array);
  38.             return 1;
  39.         }
  40.     }
  41.    
  42.     printf("Sum of elements starting from %d value: %d\n", STARTVAL, sum_from(array, elements, STARTVAL));
  43.    
  44.     free(array);
  45.     return 0;
  46. }

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

  1. В функции sum_from мы объявляем переменные i, sum типа size_t и int соответственно.
  2. Затем мы используем цикл for для прохода по массиву array и суммирования его элементов, начиная с startval. Внутри цикла мы используем условие array[i] != startval для пропуска элементов, равных startval.
  3. В функции main мы объявляем переменные array, elements и i типа int *, size_t и size_t соответственно.
  4. Затем мы запрашиваем у пользователя количество элементов в массиве и сохраняем его в переменной elements.
  5. Мы также проверяем, успешно ли выделена память под массив array с помощью malloc.
  6. Далее мы используем цикл for для прохода по каждому элементу массива и ввода его значения с клавиатуры.
  7. Наконец, мы вызываем функцию sum_from с аргументами array, elements и STARTVAL, и выводим результат на экран.
  8. Мы также освобождаем память, выделенную под массив array, с помощью free.
  9. Если в процессе выполнения программы происходит ошибка, например, массив array не может быть выделен, программа выводит сообщение об ошибке и завершается с кодом возврата 1.
  10. Если программа успешно завершается, она возвращает 0.

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


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

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

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы