Массивы. Функция. Почему ошибка? - C (СИ)
Формулировка задачи:
Программа, которая считает сумму элементов массива, с элемента, равного пяти. Задали добавить всё это в функцию. У меня получилось так:
Ошибка такая: [Error] expected unqualified-id before '{' token.
Листинг программы
- #include <stdio.h>
- #include <math.h>
- #include <locale.h>
- const int N = 10;
- void flab4(int M[], int N);
- {
- int i;
- int sum, k;
- sum=0;
- k=0;
- for (i=0; i < N; i++)
- {
- if (A[i] == 5)
- { k = i;
- break; }
- }
- for (; k<N; k++)
- {
- sum+=A[k];
- }
- return(sum);
- }
- int main()
- {
- setlocale(LC_ALL,"Rus");
- int A[N], l, rez;
- printf("Введите массив m: \n");
- for ( l = 0 ; l < N ; l++)
- {
- printf("Введите A[%d]: ", l);
- scanf("%d", &A[il);
- }
- rez=flab4(A[N],l);
- printf("\n Исходный массив: \n");
- for (l=0; l<N; l++)
- {
- printf("%4d",A[l]);
- }
- printf("\n Сумма: %d",rez);
- }
Решение задачи: «Массивы. Функция. Почему ошибка?»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int sum_from(const int * array, const size_t elements, const int startval) {
- size_t i;
- int sum = 0;
- for ( i = 0; i < elements && array[i] != startval; ++i )
- ;
- for ( ; i < elements; ++i )
- sum += array[i];
- return sum;
- }
- #define STARTVAL (5)
- int main(void) {
- int * array;
- size_t elements, i;
- printf("Number of elements: ");
- if ( scanf("%u", &elements) != 1 || elements < 1 ) {
- fprintf(stderr, "Input error!\n");
- return 1;
- }
- if ( ! ( array = malloc(sizeof(int) * elements) ) ) {
- fprintf(stderr, "Memory error!\n");
- return 1;
- }
- for ( i = 0; i < elements; ++i ) {
- printf("ARRAY[%u] = ", i);
- if ( scanf("%d", array + i) != 1 ) {
- fprintf(stderr, "Input error!\n");
- free(array);
- return 1;
- }
- }
- printf("Sum of elements starting from %d value: %d\n", STARTVAL, sum_from(array, elements, STARTVAL));
- free(array);
- return 0;
- }
Объяснение кода листинга программы
- В функции
sum_from
мы объявляем переменныеi
,sum
типаsize_t
иint
соответственно. - Затем мы используем цикл
for
для прохода по массивуarray
и суммирования его элементов, начиная сstartval
. Внутри цикла мы используем условиеarray[i] != startval
для пропуска элементов, равныхstartval
. - В функции
main
мы объявляем переменныеarray
,elements
иi
типаint *
,size_t
иsize_t
соответственно. - Затем мы запрашиваем у пользователя количество элементов в массиве и сохраняем его в переменной
elements
. - Мы также проверяем, успешно ли выделена память под массив
array
с помощьюmalloc
. - Далее мы используем цикл
for
для прохода по каждому элементу массива и ввода его значения с клавиатуры. - Наконец, мы вызываем функцию
sum_from
с аргументамиarray
,elements
иSTARTVAL
, и выводим результат на экран. - Мы также освобождаем память, выделенную под массив
array
, с помощьюfree
. - Если в процессе выполнения программы происходит ошибка, например, массив
array
не может быть выделен, программа выводит сообщение об ошибке и завершается с кодом возврата1
. - Если программа успешно завершается, она возвращает
0
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д