Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/25: Рейтинг темы: голосов - 25, средняя оценка - 4.68
0 / 0 / 0
Регистрация: 11.04.2019
Сообщений: 10

Как вывести из функции индексы элементов массива

13.05.2019, 16:06. Показов 4803. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, господа хорошие. Подскажите, пожалуйста, как можно организовать вывод из функции индексов наибольшего и наименьшего элементов массива? Функция есть, вот не могу понять, как её преобразовать для вывода индексов, а не самого значения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int poisk_min_max(int** arr, int n, int m)
{
    int k = 0, l = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (*(*(arr + k) + l) < *(*(arr + i) + j))
            {
                k = i; l = j;
            }
        }
    }
 
    return *(*(arr + k) + l);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.05.2019, 16:06
Ответы с готовыми решениями:

Как вывести индексы элементов массива, которые у них были до сортировки?
Как вывести индексы элементов массива, которые у них были до сортировки?

Как перебрать элементы массива и вывести индексы повторяющихся элементов, сравниваемых с вводимыми данными
Вкратце: rand_choice() выбирает рандомное слово из списка. current_word=rand_choice() current_word = list(current_word) ...

Определить индексы элементов массива меньших среднего результат вывести в виде массива
определить индексы элементов массива меньших среднего результат вывести в виде массива Заранее спасибо за код)Прям несказанный респект

9
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
13.05.2019, 16:13
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void poisk_min_max(int** arr, int n, int m, int& max_i, int& max_j, int& min_i, int& min_j)
{
    max_i=max_j=min_i=min_j=0;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (arr[i][j] >arr[max_i][max_j])
            {
                max_i = i; 
                max_j = j;
            }
            else if (arr[i][j] <arr[min_i][min_j])
            {
                min_i = i; 
                min_j = j;
            }
        }
    }
}
1
0 / 0 / 0
Регистрация: 11.04.2019
Сообщений: 10
13.05.2019, 18:26  [ТС]
Kuzia domovenok, благодарю за ответ
Теперь хотелось бы ещё один вопрос задать. Нужно поменять местами элементы строки, в которой содержится наибольший элемент, с элементами столбца, где хранится наименьший элемент. Код написал, но вывод немного корявый получается, не все элементы правильно меняются, насколько я понимаю. Подскажите, где кроется ошибка, пожалуйста.
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <iostream>
#include <time.h>
#include <iomanip>
using namespace std;
 
void fill_array(int**, int, int);
void print_array(int**, int, int);
void poisk_min_max(int**, int, int, int&, int&, int&, int&);
void swap(int**, int, int, int, int);
 
int main()
{
    setlocale(0, "");
    int i, n, m, a = 0, b = 0, c = 0, d = 0; // четыре нулевых переменных для индексов минимального и максимального элементов
 
    cout << "Введите количество строк: ";
    cin >> n;
    cout << "Введите количество столбцов: ";
    cin >> m;
 
    int** matrix = new int* [n];
    for (i = 0; i < n; i++)
    {
        *(matrix + i) = new int[m];
    }
 
    fill_array(matrix, n, m);
 
    cout << "Сгенерированный массив: " << endl;
    print_array(matrix, n, m);
 
    cout << "--------------------------------" << endl;
 
    poisk_min_max(matrix, n, m, a, b, c, d);
    cout << "Индекс наибольшего элемента: [" << a << "] [" << b << "]" << endl << "Индекс наименьшего элемента: [" << c << "] [" << d << "]" << endl;
    
    swap(matrix, n, m, a, d);
    print_array(matrix, n, m);
 
    return 0;
}
 
void fill_array(int** arr, int n, int m)
{
    srand(time(0));
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            *(*(arr + i) + j) = rand() % 401 - 200;
        }
    }
}
 
void print_array(int** arr, int n, int m)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout << setw(5) << *(*(arr + i) + j) << ' ';
        }
        cout << endl;
    }
}
 
void poisk_min_max(int** arr, int n, int m, int& a, int& b, int& c, int& d)
{
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (*(*(arr + a) + b) < *(*(arr + i) + j))
            {
                a = i; b = j;
            }
        }
    }
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            if (*(*(arr + c) + d) > *(*(arr + i) + j))
            {
                c = i; d = j;
            }
        }
    }
}
 
void swap(int** arr, int n, int m, int a, int d)
{
    int temp;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            temp = *(*(arr + a) + j);
            *(*(arr + a) + j) = *(*(arr + i) + d);
            *(*(arr + i) + d) = temp;
        }
    }
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
13.05.2019, 18:28
Keks_na_vecher, ты чтобы повыпендриваться наверное превращаешь нормальные массивы в мешанину из указателей?
0
0 / 0 / 0
Регистрация: 11.04.2019
Сообщений: 10
13.05.2019, 18:33  [ТС]
Извините, Сэр, у меня выпендриваться нечем ещё. Четыре месяца без малого на плюсах, как и в целом в программировании. Делаю как умею. И тыкать маме своей будете или подруге, а я по-хорошему попросил помочь с кодом.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
13.05.2019, 18:53
Keks_na_vecher, выкать тёще своей будешь или центрифуге, я по-хорошему спросил, что это за принципиальность такая - ни в коем случае не писать arr[i][j] вообще нигде - только *(*(arr + i) + j)
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.05.2019, 20:46
Kuzia domovenok, задание скорее всего такое - написать с использованием указателей. что не так ?

Цитата Сообщение от Keks_na_vecher Посмотреть сообщение
Подскажите, где кроется ошибка, пожалуйста.
в постановке вопроса. если длина строки и длина столбца различны, что собираетесь менять ? кроме того, например минимальных может быть несколько, причём в разных столбцах. напишите оригинал условия задачи.
0
0 / 0 / 0
Регистрация: 11.04.2019
Сообщений: 10
14.05.2019, 11:26  [ТС]
Yetty, в квадратной (вот это слово я при первом прочитывании задачи упустил, молодец эдакий, так что тут сам код вроде как можно облегчить немного) матрице необходимо поменять местами строку в которой содержатся максимальный элемент и столбец, в котором содержится минимальный. Для этого пишем функции:
1) заполнения массива случайными числами в диапазоне от -200 до +200;
2) вывода массива на экран;
3) поиска индексов минимального и максимального элементов;
4) перестановки элементов строки с максимальным элементом с элементами столбца с минимальным элементом матрицы.
Про два и более наименьших и наибольших чисел в задании сказано не было, так что тут не знаю даже, что и сказать.
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
14.05.2019, 12:14
Цитата Сообщение от Keks_na_vecher Посмотреть сообщение
в квадратной
это другое дело.
Цитата Сообщение от Keks_na_vecher Посмотреть сообщение
Про два и более наименьших и наибольших чисел в задании сказано не было
тогда меняйте элементы строки и столбца с первым найденным max и первым найденным min.

обратите внимание, что сохранить порядок элементов в некоторых случаях не получится, например:
2 2 1
4 5 2
2 2 3
попробуйте просто поменять строку на столбец, а столбец на строку - не выйдет. тем не менее задача решаема (с нарушением порядка элементов).
0
0 / 0 / 0
Регистрация: 11.04.2019
Сообщений: 10
14.05.2019, 15:55  [ТС]
Yetty, хорошо, спасибо. Поэкспериментирую с изменением порядка элементов, пока, правда слабо себе представляю, как оно должно выглядеть
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.05.2019, 15:55
Помогаю со студенческими работами здесь

Вывести индексы массива в порядке возрастания элементов массива
Дан массив размера N. Вывести индексы массива в том порядке, в котором соответствующие им элементы образуют возрастающую...

Вывести на экран элементы и индексы элементов, которые меньше среднего значения всех элементов массива
Написать программу, в которой: 1. Задать массив целых чисел длиной согласно варианту. 2. Элементы массива задать случайным образом в...

Вывести индексы заданных элементов массива
Найти и вывести на экран индексы заданных элементов массива(если их нет выдать соответствующее сообщение) Использовать концепцию...

Вывести индексы нескольких элементов массива
В массиве найти максимальный по значению элемент, вывести его индекс, если таких элементов несколько, то вывести индексы всех элементов. ...

Вывести индексы нескольких элементов массива
В массиве найти максимальный по значению элемент, вывести его индекс, если таких элементов несколько, то вывести индексы всех элементов. ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru