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

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

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

Программа, которая считает сумму элементов массива, с элемента, равного пяти. Задали добавить всё это в функцию. У меня получилось так:
#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);
}
Ошибка такая: [Error] expected unqualified-id before '{' token.

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

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

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

  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
Похожие ответы