Вопрос задан 13.06.2023 в 20:50. Предмет Информатика. Спрашивает Акулов Сергей.

Помогите написать на с++ Дан одномерный целочисленный массив порядка N. Найдите сумму

положительных элементов массива после последнего отрицательного элемента. Если таких элементов нет, вернуть значение 0
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Казанцев Максим.

Відповідь:

С++ code:

#include <iostream>

#include <cstdlib>

#include <time.h>

void randarr(int *arr,const int size){

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

 arr[i] = rand() % 50 - 10;

}

}

void printarr(int *arr,const int size){

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

 std::cout << arr[i] << " ";

}

}

int index_last_negative(int *arr,const int size){

for(int i = size - 1; i >= 0; i--){

 if(arr[i] < 0){

  return i;

 }

}

return -1;

}

int sum(int *arr,const int size){

int index = index_last_negative(arr,size),sum = 0;

if(index == -1){

 return sum;

}

else if(index == size - 1){

 return sum;

}

else{

 for(int i = index + 1; i < size; i++){

  sum += arr[i];

 }

 return sum;

}

}

int main(){

srand(time(NULL));

setlocale(LC_ALL, "Ukrainian");

int size;

std::cout << "Введите размер: ";

std::cin >> size;

int *arr = new int[size];

randarr(arr,size);

printarr(arr,size);

std::cout << "Сума всех положительных чисел после последнего отрицательного = " << sum(arr,size) << std::endl;

delete[] arr;

return 0;

}

Пояснення:

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Конечно! Вот пример кода на C++, который решает вашу задачу:

cpp
#include <iostream> int main() { int N; std::cout << "Введите размер массива: "; std::cin >> N; int* array = new int[N]; std::cout << "Введите элементы массива: "; for (int i = 0; i < N; i++) { std::cin >> array[i]; } int lastNegativeIndex = -1; for (int i = N - 1; i >= 0; i--) { if (array[i] < 0) { lastNegativeIndex = i; break; } } int sum = 0; if (lastNegativeIndex != -1) { for (int i = lastNegativeIndex + 1; i < N; i++) { if (array[i] > 0) { sum += array[i]; } } } delete[] array; std::cout << "Сумма положительных элементов после последнего отрицательного элемента: " << sum << std::endl; return 0; }

Программа запрашивает у пользователя размер массива и его элементы. Затем она ищет последний отрицательный элемент в массиве и вычисляет сумму положительных элементов после него. Если в массиве нет отрицательных элементов, программа вернет значение 0.

Обратите внимание, что данная реализация использует динамическое выделение памяти для массива с помощью оператора new[] и освобождение памяти с помощью delete[]. Это необходимо, чтобы задать размер массива во время выполнения, так как статическое объявление массива требует заранее известного размера.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос