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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Sergey_Golovko
-7 / 0 / 0
Регистрация: 10.06.2011
Сообщений: 13
#1

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

11.06.2011, 21:59. Просмотров 1344. Ответов 9
Метки нет (Все метки)

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++ Массив: Определить сумму максимума и минимума последовательности.
C++ Нахождение минимума/максимума в конкретной строке или столбце
C++ Даны две последовательности. Верно ли, что все члены второй последовательности входят в первую?
Найти все члены последовательности C++
C++ Требуется умножить все члены последовательности
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2538 / 1303 / 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
Сообщений: 164
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
Сообщений: 19
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
Сообщений: 164
09.12.2015, 04:21     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #5
SupremeEP, Спасибо большое, за разъяснение, если можно прокомментируйте 1 строчку с new float и ещё вот это...
C++
1
 cout << arr[k]==0;
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 19
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
Сообщений: 164
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
Сообщений: 19
09.12.2015, 12:11     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #8
Так пиши с std:: и без
C++
1
using namespace std;
Так даже лучше будет.
ITALIANO
1 / 1 / 1
Регистрация: 24.10.2014
Сообщений: 164
09.12.2015, 12:13     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия #9
SupremeEP, не в этом дела, я не понимаю что делает строчка, тем более, что там стоит std::.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2015, 12:48     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия
Еще ссылки по теме:
Удалить из последовательности все члены с максимальным значением C++
C++ В последовательности X1, . . ., Xn все члены, меньшие двух, заменить нулями
C++ Поиск максимума и минимума
Вычисление минимума/максимума C++
C++ Сумма максимума и минимума

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

Или воспользуйтесь поиском по форуму:
SupremeEP
0 / 0 / 1
Регистрация: 01.12.2015
Сообщений: 19
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     Домножить все члены заданной последовательности на квадрат минимума или максимума, в зависимости от условия
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru