Определить, есть ли в заданном целочисленном векторе A (N) элементы со значением, равным заданному числу B - C (СИ)
Формулировка задачи:
Если в заданном целочисленном векторе A(N) есть элементы со значением, равным заданному числу B, то переменной С присвойте значение, равное сумме всех элементов, предшествующих первому по порядку такому элементу; в противном случае вывести соответствующий текст
Помогите с решением математически... что то не могу понять как тут решить( Пожалуйста))
Решение задачи: «Определить, есть ли в заданном целочисленном векторе A (N) элементы со значением, равным заданному числу B»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
const int* exists(const int *ptr, size_t size, int element)
{
size_t i;
for (i = 0; i < size; i++)
{
if (ptr[i] == element)
{
return ptr + i;
}
}
return NULL;
}
int sum(const int* begin, const int* end)
{
int sum = 0;
while (begin != end)
{
sum += *begin++;
}
return sum;
}
int main()
{
const size_t n = 10;
int array[10] = { 1, 2, 3, 4, 5,
6, 7, 8, 9, 10 };
int c = -1;
int b = 4;
const int *ptr = exists(array, n, b);
if (ptr)
{
c = sum(array, ptr);
printf("Sum: %d\n", c);
}
else
{
printf("%d not found in array\n", b);
}
return EXIT_SUCCESS;
}
Объяснение кода листинга программы
- В функции
existsпроисходит поиск первого вхождения числаelementв вектореptrс размерностьюsize. Если число найдено, функция возвращает указатель на первый элемент, в котором оно найдено, иначе возвращаетNULL. - В функции
sumпроисходит вычисление суммы всех элементов вектораbeginдоend. - В функции
mainопределен размер вектораn, инициализирован массивarrayи переменныеcиb. - Вызывается функция
existsдля поиска первого вхождения числаbв массивеarray. - Если число найдено, вызывается функция
sumдля вычисления суммы элементов вектораarrayдо найденного числа. - Если число не найдено, выводится сообщение об этом.
- Выводится результат вычисления суммы или сообщение об отсутствии числа в массиве.
- Программа возвращает
EXIT_SUCCESS.