Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
8 / 5 / 7
Регистрация: 15.02.2018
Сообщений: 36

Шаблон поиска максимального элемента для многомерного массива

04.03.2018, 00:51. Показов 2686. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вечер добрый, помогите разобраться с шаблонами в с++
Нужно найти максимальных элемент массива
На просторах интернета нашел как сделать шаблон поиска макс элемента для одномерного массива
Кликните здесь для просмотра всего текста
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 "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
template<typename T>
T maxx(const T *x, int s) {
    T max = x[0];
    for (int i = 0; i != s; i++)
        if (x[i]>max) {
            max = x[i];
        }
    return max;
}
int main() {
    srand(time(NULL));
    int n;
    cout << "Enter size of array ";
    cin >> n;
    int size = n;
    int *a = new int[size];
    for (int i = 0; i != size; i++) {
        a[i] = -10 + rand() % 20;
    }
    for (int i = 0; i != size; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    cout << "Max: " << maxx(a, size) << endl;
}

Вроде бы разобрался как что работает, нужно сделать такое же, только для дву- и тре-мерных массивов
Попытался сделать по аналогии для начала для двумерного массива, но при компиляции выдает ошибки про преобразования типов, вот код:
Кликните здесь для просмотра всего текста
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
#include "stdafx.h"
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
template<typename T>
T maxx(const T *x, int s) {
    T max = x[0];
    for (int i = 0; i != s; i++)
        if (x[i]>max) {
            max = x[i];
        }
    return max;
}
template<typename T1>
T1 maxx2( T1 *y,int s1,int s2) {
    T1 max = y[0][0];
    for (size_t i = 0; i != s1; i++) {
        for (size_t j = 0; j != s2; j++) {
            if (y[i][j] > max) {
                max = y[i][j];
            }
        }
    }
    return max;
}
int main() {
    srand(time(NULL));
    int n;
    cout << "Enter size of array ";
    cin >> n;
    int size = n;
    int *a = new int[size];
    for (int i = 0; i != size; i++) {
        a[i] = -10 + rand() % 20;
    }
    for (int i = 0; i != size; i++) {
        cout << a[i] << " ";
    }
    cout << endl;
    cout << "Max: " << maxx(a, size) << endl;
 
    int m1, m2;
    cout << "Enter size of row";
    cin >> m1;
    cout << "Enter size of col";
    cin >> m2;
    const int size1 = m1;
    const int size2 = m2;
    int **b = new int*[size1];
    for (int i = 0; i != size1; i++) {
        b[i] = new int[size2];
    }
    for (int i = 0; i != size1; i++) {
        for (int j = 0; j != size2; j++) {
            b[i][j] = -10 + rand() % 20;
        }
    }
    for (int i = 0; i != size1; i++) {
        for (int j = 0; j != size2; j++) {
            cout << b[i][j] << "  ";
        }
    }
    cout << endl;
    cout << "Max: " << maxx2(b, size1, size2) << endl;
}

Помогите разобраться пожалуйста
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.03.2018, 00:51
Ответы с готовыми решениями:

Шаблон функции поиска максимального элемента
Шаблон функции поиска максимального элемента массива задается след.образом: template &lt;typename T&gt; T max(T *x, int len) { T...

Подпрограмма: Напишите функцию для поиска максимального элемента в указанной строке двумерного массива.
Напишите функцию для поиска максимального элемента в указанной строке двумерного массива. Сдвиньте в этом массиве все строки циклически...

Метод для поиска максимального отрицательного элемента одномерного массива
Написал метод, обращаюсь к нему в Main. Студия говорит: ни одна из перегрузок метода &quot;Max_negative&quot; не принимает &quot;0&quot;...

6
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
04.03.2018, 01:35
Лучший ответ Сообщение было отмечено ProgSad как решение

Решение

У вас же объявлен какой массив?
C++
1
int **b = new int*[size1];
А в шаблоне, в параметрах, чего-то не хватает.
C++
1
T1 maxx2( T1 /*?*/*y,int s1,int s2)
Чуть подправил вывод матрицы
C++
1
2
3
4
5
for (int i = 0; i != size1; i++) {
        cout<<endl;
        for (int j = 0; j != size2; j++) {
            cout << b[i][j] << "  ";
        }
И память освободить не помешает
C++
1
2
3
for (int i = 0; i < size1; i++) 
delete [] b[i];
delete a[] ;
И так как функция
C++
1
int main()
то должна что-то возвращать.
C++
1
return 0;
1
8 / 5 / 7
Регистрация: 15.02.2018
Сообщений: 36
04.03.2018, 23:13  [ТС]
Спасибо огромное, а как очистить память например, для трехмерного массива?
0
 Аватар для QuakerRUS
1469 / 1010 / 456
Регистрация: 30.10.2017
Сообщений: 2,799
04.03.2018, 23:18
ProgSad, двойной цикл.

C++
1
2
3
4
5
6
7
8
9
for (int i = 0; i < size1; i++)
{
    for (int j = 0; j < size2; j++)
        delete[] b[i][j];
 
    delete[] b[i];
}
 
delete[] b;
1
8 / 5 / 7
Регистрация: 15.02.2018
Сообщений: 36
04.03.2018, 23:25  [ТС]
Спасибо))
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
05.03.2018, 07:07
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
то должна что-то возвращать.
она и возвращает 0, если явно не задано.
это написано в стандарте и легко проверить: http://rextester.com/KASO17613
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
05.03.2018, 07:49
Цитата Сообщение от -ДоМоВоЙ- Посмотреть сообщение
И так как функция
int main()
то должна что-то возвращать.
return 0;
ничего она никому не должна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.03.2018, 07:49
Помогаю со студенческими работами здесь

Рекурсивный метод для поиска максимального и минимального элемента массива
Всем привет. Помогите доработать программу: Нужно написать рекурсивный метод для поиска максимального и минимального элемента массива...

Написать функцию поиска максимального элемента для массива типа void
#include &lt;stdio.h&gt; #include&lt;conio.h&gt; #include &lt;stdlib.h&gt; unsigned int fmax( int*a, unsigned int size){ int i; int max,...

В программе написать функции: вставки элемента, поиска максимального элемента, определения среднего арифметического элементов массива
В целочисленном массиве Х(N) после каждого четного числа вставить максимальный элемент массива. Найти среднее арифметическое элементов ...

Подпрограмма поиска максимального элемента одномерного массива.
Задача: Найти максимальные элементы одномерных массивов a,b,c и их номера. Подпрограмму поиска максимума оформить в виде процедуры. Ввод...

Рекурсивная функция поиска максимального элемента массива
Написать рекурсивную функцию для вычисления максимального элемента массива из п элементов. выдает ошибки: использована...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru