Массивы. Функция. Почему ошибка? - 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.