Помогите написать на с++
Дан одномерный целочисленный массив порядка N. Найдите сумму
положительных элементов массива после последнего отрицательного
элемента. Если таких элементов нет, вернуть значение 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;
}
Пояснення: