Другие языки программирования и технологии

C++ Нужно вычислить сумму элементов массива, расположенных между первым и последним отрицательными элементами.

Помогите пожалуйста: (
Dilshod M
Dilshod M
106
#include <iostream>
#include <utility>
#include <iomanip>
#include <ctime>
using namespace std;
typedef pair<int,> indexes_t;
void search(indexes_t&, int*, int);
bool exist(const indexes_t&);
int summma(indexes_t&, int*);
int main() {
    srand(static_cast<unsigned>(time(NULL)));
    const int size = 6;
    int arr[size];
    for (int n = 0; n < size; ++n) arr[n] = rand() % 19 - 9;
    for (size_t n = 0; n < size; ++n) cout << setw(4) << arr[n];
    indexes_t indexes;
    indexes.first = indexes.second = -1;
    search(indexes, arr, size);
    if (exist(indexes)) cout << "\n\tSum = " << summma(indexes, arr);
    else cout << "\n\tNot exist!";
    cout << endl;
    cin.get();
}
void search(indexes_t& indexes, int* arr, int size) {
    for (int n = 0; n < size; ++n) {
        if (arr[n] < 0) {
            indexes.first = n;
            break;
        }
    }
    for (int n = size - 1; n >= 0; --n) {
        if (arr[n] < 0) {
            indexes.second = n;
            break;
        }
    }
}
bool exist(const indexes_t& indexes) {
    if (indexes.second - indexes.first > 1) return true;
    return false;
}
int summma(indexes_t& indexes, int* arr) {
    int sm = 0;
    for (int n = indexes.first + 1; n < indexes.second; ++n) sm += arr[n];
    return sm;
}
Crazy Man
Crazy Man
83 107
Лучший ответ
с чем именно помочь?
Алгоритм таков: 1)Перебираешь все елементы в цыкле начиная с первого когда встречается отрицательный элемент он запонимаентся в переменую и ты делаешь выход с цыкла.
2)Делаешь тоже самое тока в условиях ццыкла перебор идет с конца масива елементов. Запонимаешт индекс уже в другую переменую. (осторожнно так как он уже не равен итератору цыкла)

3)Анализируешь эти индексы: если равны то выводишь что выводишь что елементов нету, в другом случаи если по разница индексов по модулю =1 то выводишь обратнно что елементов нету, В последнем случаи в цыкле начиная с меньшого идекса и заканчивая большим считаешь суму елементов.
Юра Савельев
Юра Савельев
1 093
эта легчафшая задача. если ты не можешь ее решить зачем тебе это? хотя я в начале тоже нубом был. ну кароч пытайся написать. главное практика

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