Массивы. Функция. Почему ошибка? - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д