Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами - C (СИ) (73492)
Формулировка задачи:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <math.h>
#include <locale.h>
#define A 10
int main()
{
setlocale(LC_CTYPE,"Russian");
int j,i,min,M[A];
printf("Введите элементы массива \n");
for(i=0;i<10;i++)
{
printf("[%i]=",i+1);
scanf ("%d",&M[i]);
}
getchar();
return 0;
}Решение задачи: «Найти сумму элементов массива, расположенных между первым и вторым отрицательными элементами»
textual
Листинг программы
#include <stdio.h>
void elementsSum(float array[], int size) {
float min = array[0];
float sum = 0;
int flag = 0;
for ( int i = 0; i < size; i++ ) {
if ( min > array[i] ) {
min = array[i];
}
if ( array[i] < 0 ) {
flag += 1;
}
if ( flag == 1 && array[i] >= 0 ) {
sum += array[i];
}
}
printf("min=%0.2f\n", min);
if ( flag > 1 ) {
printf("sum=%0.2f\n", sum);
} else {
printf("There aren't enough negative elements!\n");
}
}
int main() {
int size;
printf("Enter array size:\n");
scanf("%d", &size);
if ( size > 0 ) {
float array[size];
printf("Enter elements:\n");
for ( int i = 0; i < size; i++ ) {
scanf("%f", &array[i]);
}
elementsSum(array, size);
} else {
printf("Size must be > 0\n");
}
return 0;
}
Объяснение кода листинга программы
- #include
включает в себя файл стандартного ввода/вывода, который позволяет программе выводить информацию на экран - void elementsSum(float array[], int size) - функция, которая принимает два аргумента: массив и размер этого массива.
- float min = array[0]; - инициализация переменной min первым элементом массива
- float sum = 0; - инициализация переменной sum нулем
- int flag = 0; - инициализация переменной flag нулем
- for ( int i = 0; i < size; i++ ) { - цикл, который проходит по всем элементам массива
- if ( min > array[i] ) { - если текущий элемент меньше первого отрицательного элемента, то он становится новым первым отрицательным элементом
- min = array[i]; - обновление значения первого отрицательного элемента
- if ( array[i] < 0 ) { - если текущий элемент отрицательный, то увеличивается значение переменной flag
- flag += 1; - обновление значения переменной flag
- if ( flag == 1 && array[i] >= 0 ) { - если flag равен 1 и текущий элемент больше или равен нулю, то он добавляется к сумме
- sum += array[i]; - обновление значения суммы
- printf(
min=%0.2f\n, min); - вывод значения первого отрицательного элемента с точностью до двух знаков после запятой - if ( flag > 1 ) { - если flag больше 1, то выводится значение суммы
- printf(
sum=%0.2f\n, sum); - вывод значения суммы с точностью до двух знаков после запятой - else { - если flag равен 1, то выводится сообщение о том, что в массиве недостаточно отрицательных элементов
- printf(
There aren't enough negative elements!\n); - вывод сообщения - return 0; - завершение работы программы
- int main() { - функция, которая запускает программу
- printf(
Enter array size:\n); - вывод сообщения с просьбой ввести размер массива - scanf(
%d, &size); - считывание размера массива с помощью функции scanf - if ( size > 0 ) { - проверка, что размер массива больше нуля
- float array[size]; - создание массива с заданным размером
- printf(
Enter elements:\n); - вывод сообщения с просьбой ввести элементы массива - for ( int i = 0; i < size; i++ ) { - цикл, который проходит по всем элементам массива
- scanf(
%f, &array[i]); - считывание элемента массива с помощью функции scanf - elementsSum(array, size); - вызов функции, которая находит сумму элементов массива
- } - завершение цикла
- return 0; - завершение работы функции main и программы в целом