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

Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Sergey_Golovko
-7 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 13
11.06.2011, 21:59     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #1
3. Одномерные массивы

Дана последовательность действительных чисел а1, а2 ..., аn. Требуется домножить все члены последовательности а1, а2 ..., аn на квадрат ее наименьшего члена, если ак> 0, и на квадрат ее наибольшего члена, если ак< 0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.06.2011, 21:59     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия
Посмотрите здесь:

Вычисление минимума/максимума C++
C++ Массив: Определить сумму максимума и минимума последовательности.
C++ В последовательности X1, . . ., Xn все члены, меньшие двух, заменить нулями
Найти наименьший элемент массива и домножить на него все члены последовательности C++
C++ Найти наименьший элемент массива и домножить на него все члены последовательности, предшествующие этому члену
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
12.06.2011, 05:55     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #2
ак-элемент №"к" массива а?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <iostream>
#include <math.h>
 
int n;
 
float min(float* arr)
{
    float min = arr[0];
    for (int i = 1; i < n; ++i)
        min = std::min(min, arr[i]);
    return min;
}
 
float max(float* arr)
{
    float max = arr[0];
    for (int i = 1; i < n; ++i)
        max = std::max(max, arr[i]);
    return max;
}
 
void result(float* arr, float num)
{
    std::cout << "result: \n";
    for (int i = 0; i < n; ++i)
    {
        arr[i] *= pow(num, 2);
        std::cout << arr[i] << ' ';
    }
    system("pause");
}
       
int main()
{
    std::cout << "enter n: \n";
    std::cin >> n;
    int k;
    std::cout << "enter k: \n";
    std::cin >> k;
    if (k < 1)
    {
        std::cout << "k < 1\n";
        system("pause");
        return 0;
    }
    float* arr = new float [n];
    std::cout << "enter array: \n";
    for (int i = 0; i < n; ++i)
        std::cin >> arr[i];
    if (arr[k-1] > 0)
        result(arr, min(arr));
    else if (arr[k-1] < 0)
        result(arr, max(arr));
    else
    {
        std::cout << "arr[k] == 0\n";
        system("pause");
        return 0;
    }
}
ITALIANO
1 / 1 / 1
Регистрация: 24.10.2014
Сообщений: 139
08.12.2015, 14:51     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #3
C++
1
min = std::min(min, arr[i]);
Что обазначает и почему работает только с std::?

Добавлено через 39 минут
Конкретно именно эта строчка...

Добавлено через 2 минуты
И ещё вот эта строчка:
C++
1
max = std::max(max, arr[i]);
Добавлено через 2 минуты
Проблема в том, что программа действительно находит минимальное число, которое потом возводит в квадрат, а потом умнажает на все числа в том числе и на сому себя, но я не знаю как сделать так что бы именно максимальный элемент возвёлся в квадрат и перемножил всё, в том числе и на самого себя...

Добавлено через 17 минут
Помогите пожалуйста, мне порой кажется, что код не верен...

Добавлено через 10 минут
Помогите, мне очень нужно!!!

Добавлено через 8 минут
Что тут происходит в программе?
C++
1
2
3
4
5
6
7
8
9
    float* arr = new float [n];
    cout << "enter array: "<<endl;
    for (int i = 0; i < n; ++i)
        cin >> arr[i];
    if (arr[k-1] > 0)
        result(arr, min(arr));
    else if (arr[k-1] < 0)
        result(arr, max(arr));
    else
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 14
08.12.2015, 15:23     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #4
C++
1
2
3
4
5
6
7
8
9
float* arr = new float [n];
    cout << "enter array: "<<endl;
    for (int i = 0; i < n; ++i)
        cin >> arr[i];
    if (arr[k-1] > 0)
        result(arr, min(arr));
    else if (arr[k-1] < 0)
        result(arr, max(arr));
    else
Здесь мы, грубо говоря, создаём массив из n элементов и заполняем его, далее мы берём k-1 элемент, так как нумерация элементов массива начинается с нуля, и затем перемножаем все элементы массива при помощи функции result() в зависимости от числа arr[k-1].

Функции max и min определяют максимальное и минимальное число соответственно.
Здесь max(arr) пройдёт по всему массиву arr и найдёт максимальное число.
С min(arr) таже история.

P.S. Я бы использовал вектор.
ITALIANO
1 / 1 / 1
Регистрация: 24.10.2014
Сообщений: 139
09.12.2015, 04:21     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #5
SupremeEP, Спасибо большое, за разъяснение, если можно прокомментируйте 1 строчку с new float и ещё вот это...
C++
1
 cout << arr[k]==0;
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 14
09.12.2015, 09:18     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #6
Здесь мы создаём новый объект в виде массива из n элементов.
C++
1
float* arr = new float [n];
Тут, по идее, выводится 1(true), если arr[k] равен нулю и 0(false), если не равен. Но чтобы это заработало нужно взять условие в скобки.
C++
1
cout << arr[k]==0;

Если так не сделать, то будет выводиться просто arr[k].
C++
1
cout << (arr[k]==0);
ITALIANO
1 / 1 / 1
Регистрация: 24.10.2014
Сообщений: 139
09.12.2015, 12:06     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #7
Пожалуйста помогите с этой строчкой кода
C++
1
min = std::min(min, arr[i]);
, без std:: не работает прога а так у меня всё прописано через
C++
1
using namespace std;
Добавлено через 22 секунды
то же самое и с максимумом

Добавлено через 5 минут
Если есть, дайте альтернативу этой строчке.
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 14
09.12.2015, 12:11     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #8
Так пиши с std:: и без
C++
1
using namespace std;
Так даже лучше будет.
ITALIANO
1 / 1 / 1
Регистрация: 24.10.2014
Сообщений: 139
09.12.2015, 12:13     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #9
SupremeEP, не в этом дела, я не понимаю что делает строчка, тем более, что там стоит std::.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2015, 12:48     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия
Еще ссылки по теме:

C++ Требуется умножить все члены последовательности
C++ Нахождение минимума/максимума в конкретной строке или столбце
Удалить из последовательности все члены с максимальным значением C++

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

Или воспользуйтесь поиском по форуму:
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 14
09.12.2015, 12:48     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #10
Ну это более известная форма функции min(), где в качестве аргументов две переменные. Возвращает min() самое меньшее из них.
C++
1
min = std::min(min, arr[i]);
То есть, если переменная min меньше arr[i], то она останется неизменной, а если нет, то станет arr[i].
Та же история с функцией max().
Yandex
Объявления
09.12.2015, 12:48     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия
Ответ Создать тему
Опции темы

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