Добавил:
КТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

var21 / лаб5_в21

.docx
Скачиваний:
1
Добавлен:
04.10.2024
Размер:
18 Кб
Скачать

7,14,21,28

Дан массив M, размерность задать в программе с помощью именованной константы. Указать элемент-границу (ввести номер с клавиатуры). Найти S1 – сумму положительных элементов массива в справа от границы и S2 – сумму отрицательных элементов массива слева от границы.

#include <iostream>

#include <clocale>

#include<time.h>

#define SIZE 10

using namespace std;

void array_infill(int *array, int size)

{

for(int i = 0; i < size; i++)

{

int rn = rand() % 100;

while (true)

{

if (rand() % 2 != 0) rn = -rn;

for (int j = 0; j < i; j++)

{

if (array[j] == rn)

{

int rn = rand() % 100;

continue;

}

}

break;

}

array[i] = rn;

printf("%d ", array[i]);

}

printf("\n\r");

}

int border_input(int *array)

{

int border_value = 0;

printf("Введите граничное значение элемента с индексом 1 (чтобы хотябы один элемент остался в начале) до %d (чтобы хотябы один элемент остался в конце):", int(SIZE - 2));

while (true)

{

if (scanf("%d", &border_value) != 1)

{

printf("Ошибка при вводе граничного значения.%cВведите граничное значение снова:", '\n');

while (getchar() != '\n');

continue;

}

int border = -1;

for (int *i = &array[0]; i < &array[SIZE]; i++)

{

if (*i == border_value) border = 10 -(&array[SIZE] - i);

}

if(border < 1 || border > int(SIZE - 2))

{

printf("Ошибка при вводе граничного значения.%cВведите граничное значение снова:", '\n');

continue;

}

printf("Выбран элемент с индексом %d\r\n", border);

return border;

}

}

int pos_summ(int *array, int size, int border) //right

{

int summ = 0;

for(int *i = &array[border+1]; i<&array[SIZE]; i++)

{

if (*i > 0) summ += *i;

}

return summ;

}

int neg_summ(int *array, int size, int border) //left

{

int summ = 0;

for (int* i = &array[0]; i < &array[border]; i++)

{

if (*i < 0) summ += *i;

}

return summ;

}

int main()

{

setlocale(LC_ALL, "RUS");

printf("Подсчёт суммы отрицательны чисел слева и положительных справа от граничного элемента, введенного с клавиатуры.%c", '\n');

time_t k;

srand(time(&k));

int M[SIZE];

array_infill(&M[0], SIZE);

int border = border_input(M);

printf("Сумма отрицательных слева: %d\r\nСумма отрицательных справа: %d", neg_summ(M, SIZE, border), pos_summ(M, SIZE, border));

return 0;

}

Соседние файлы в папке var21