Форум программистов, компьютерный форум CyberForum.ru

Найти максимальный член заданной последовательности - C++

Восстановить пароль Регистрация
 
Apollo1222
1 / 1 / 0
Регистрация: 10.10.2016
Сообщений: 53
18.10.2016, 09:34     Найти максимальный член заданной последовательности #1
Даны целые числа a1, a2... Известно что а1 >0 и что среди а2, а3... есть хотя бы одно отрицательное число. Пусть а1, ... an - члены данной последовательности предшествующее первому отрицательному числу. Получить max(a13, ... ,an3)

Буду очень благодарен за помощь!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.10.2016, 09:34     Найти максимальный член заданной последовательности
Посмотрите здесь:

C++ Найти первый член последовательности
C++ Одномерные массивы. Найти максимальный член в массиве, начиная со второго член
Найти произвольный член последовательности C++
Найти максимальный по модулю член последовательности без использования массивов C++
Найти сумму заданной последовательности, последний член которой не превосходит a C++
Найти максимальный элемент заданной последовательности C++
Найти минимальный член в заданной последовательности чисел C++
C++ Наименьший член заданной последовательности заменить целой частью среднего арифметического всех членов

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Invader0x7F
Helper C/C++
 Аватар для Invader0x7F
264 / 141 / 56
Регистрация: 22.09.2016
Сообщений: 478
Завершенные тесты: 4
18.10.2016, 09:51     Найти максимальный член заданной последовательности #2
Пусть а1, ... an - члены данной последовательности предшествующее первому отрицательному числу.
Скорее первое отрицательное число a0 < 0 предшествует последовательности a1, ... , an. У вас ошибка в условии.

Добавлено через 9 минут
Вот код который решает данную задачу:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
 
using namespace std;
 
int main() 
{
    const int N = 20;
    int A[N] = { { 0 } };
 
    for (int index = 0; index < N; index++)
    {
         int n_val = std::rand() % 9 + 1;
         A[index] = (index != 0) ? n_val : -n_val;
         std::cout << A[index] << " ";
    }
 
    std::cout << endl << endl;
 
    int max_i = 0;
    for (int index = 1; index < N; index++)
    {
        int n_val = int(pow(A[index], 3));
        int n_max = int(pow(A[max_i], 3));
        if (n_val > n_max) max_i = index;
    }
 
    std::cout << "Amax[" << max_i << "] = " << A[max_i] << endl;
 
    std::cin.get();
}
SpBerkut
Объявлятель переменных
 Аватар для SpBerkut
905 / 231 / 113
Регистрация: 24.09.2011
Сообщений: 874
Завершенные тесты: 2
18.10.2016, 09:58     Найти максимальный член заданной последовательности #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
double foo(double *A, const unsigned n) {
    double result = 0;
    while (*A > 0) {
        result = (*A > result)?*A:result;
        *A++;
    }
    return result;
}
 
int main()
{
    double A[] = {1.0,2.0,3.0,1.0,-4.0};
    std::cout << foo(A,5) << std::endl;
}
Хотя, если отрицательное значение в массиве гарантированно есть, то:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
double foo(double *A) {
    double result = 0;
    do {
        result = (*A > result)?*A:result;
    } while (*A++ > 0);
    return result;
}
 
int main()
{
    double A[] = {1.0,2.0,3.0,1.0,-4.0,5.0,6.0};
    std::cout << foo(A) << std::endl;
}
Invader0x7F
Helper C/C++
 Аватар для Invader0x7F
264 / 141 / 56
Регистрация: 22.09.2016
Сообщений: 478
Завершенные тесты: 4
18.10.2016, 09:58     Найти максимальный член заданной последовательности #4
Вот еще вариант:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std;
 
int main() 
{
    const int N = 20;
    int A[N] = { { 0 } };
 
    for (int index = 0; index < N; index++)
    {
         int n_val = std::rand() % 9 - std::rand() % 9;
         A[index] = (index != 0) ? n_val : -n_val;
         std::cout << A[index] << " ";
    }
 
    std::cout << endl << endl;
 
    int max_i = 0;
    for (int index = 0; A[index] > 0; index++)
    {
        int n_val = int(pow(A[index], 3));
        int n_max = int(pow(A[max_i], 3));
        if (n_val > n_max || max_i == -1)
            max_i = index;
    }
 
    std::cout << "Amax[" << max_i << "] = " << A[max_i] << endl;
 
    std::cin.get();
}
Миниатюры
Найти максимальный член заданной последовательности  
Yandex
Объявления
18.10.2016, 09:58     Найти максимальный член заданной последовательности
Ответ Создать тему

Метки
с++, С++ для начинающих
Опции темы

Текущее время: 12:21. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru