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

Поиск максимального и второго по величине элемента в матрице

26.12.2011, 23:53. Показов 3063. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
помогите пожалуйста решить:
В каждой строке матрицы поменять местами максимальный и второй по величине после максимального элементы.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.12.2011, 23:53
Ответы с готовыми решениями:

Поиск второго по величине элемента в массиве
помогите с заданием, плз! Опишите на одном из языков программирования алгоритм поиска второго по величине (т.е. следующего по...

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

Поиск второго максимального элемента
Добрый день, задание следующее: Задан массив однозначных чисел. Найти второе по величине значение в массиве. Ассемблер TASM, пыталась...

11
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
27.12.2011, 13:41
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
// êàæäîé ñòðîêå ìàòðèöû ïîìåíÿòü ìåñòàìè ìàêñèìàëüíûé è âòîðîé ïî âåëè÷èíå ïîñëå ìàêñèìàëüíîãî ýëåìåíòû.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
 
int main ()
{
    srand(time(NULL));
 
    const int n = 4;
    const int m = 5;
 
    int i, j;
    int a[n][m];
 
    cout << "Matriza a[" << n << "][" << m << "]\n\n";
        
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            a[i][j] = rand()%101;
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
 
    for (i = 0; i < n; ++i)
    {
        int max1 = 0;
        int max2 = 0;
        int y1 = 0, y2 = 0;
 
        for (j = 0; j < m; ++j)
        {
            if (max1 < a[i][j])
            {
                max1 = a[i][j];
                y1 = j;
            }
        }
        
        for (j = 0; j < m; ++j)
        {
            if ((max2 < a[i][j]) && (a[i][j] != max1))
            {
                max2 = a[i][j];
                y2 = j;
            }
        }
        
        swap (a[i][y1], a[i][y2]);
    }
 
    cout << "\nMatriza a posle obrabotki\n\n";
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
 
    cout << "\n";
 
    return 0;
}
1
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
27.12.2011, 14:00
Heidel, А для отрицательных чисел?
0
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
27.12.2011, 14:25
go, в задании же ничего не сказано о том, какими числами заполнен массив)
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
27.12.2011, 14:32
Heidel, код должен легко "адаптироваться" к другим данным (например, ввод с клавиатуры). В большинстве таких задач использует инициализация массива программистом перед компиляцией, а далее "модернизируется" - добавляется ввод с клавиатуры или рандомом. Если в задании не оговорено, то рандом, обычно выглядит следующим образом
C++
1
a[i][j] = rand() % 100 - 50; // -50..49
0
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
27.12.2011, 15:49
Если массив заполнен и отрицательными и положительными числами, то
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
// êàæäîé ñòðîêå ìàòðèöû ïîìåíÿòü ìåñòàìè ìàêñèìàëüíûé è âòîðîé ïî âåëè÷èíå ïîñëå ìàêñèìàëüíîãî ýëåìåíòû.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>
using namespace std;
 
int main ()
{
    srand(time(NULL));
 
    const int n = 4;
    const int m = 5;
 
    int i, j;
    int a[n][m];
 
    cout << "Matriza a[" << n << "][" << m << "]\n\n";
        
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            a[i][j] = rand()%101-50;
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
 
    for (i = 0; i < n; ++i)
    {
        int max1 = a[i][0];
        int max2 = a[i][0];
        int y1 = 0, y2 = 0;
 
        for (j = 0; j < m; ++j)
        {
            if (max1 < a[i][j])
                {
                    max1 = a[i][j];
                    y1 = j;
                }
        }
        
        for (j = 0; j < m; ++j)
        {
            if(max2==max1)
            {
                max2 = a[i][1];
            }
            
            if ((max2 < a[i][j]) && (a[i][j] != max1))
                {
                    max2 = a[i][j];
                    y2 = j;
                }
        }
        
        swap (a[i][y1], a[i][y2]);
    }
 
    cout << "\nMatriza a posle obrabotki\n\n";
    for (i = 0; i < n; ++i)
    {
        for (j = 0; j < m; ++j)
        {
            cout << a[i][j] << "\t";
        }
        cout << "\n";
    }
 
    cout << "\n";
 
    return 0;
}
1
0 / 0 / 1
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 16:34  [ТС]
всем спасибо за старания, но это не совсем то что мне нужно.
поэтому хочу попросить, чтобы кто-нибудь отдельно написал:
1.поиск максимального элемента в каждой строке матрицы
2.поиск второго по величине после максимального элемента в каждой строке матрицы
отдельным кодом, просто циклы(не надо полностью написанную программу).
0
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
27.12.2011, 20:28
madchen, кусок кода (чуть подредактированный) из приведенной выше программы тебе подойдет?
Для матрицы a[n][m] (где n - число строк, m - число столбцов), заполненной целыми знакопеременными числами
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
for (i = 0; i < n; ++i)
    {
        int max1 = a[i][0];
        int max2 = a[i][0];
        
        //Поиск максимального элемента в i-ой строке матрицы
        for (j = 0; j < m; ++j)
        {
            if (max1 < a[i][j])
                {
                    max1 = a[i][j];
                }
        }
 
        //Вывод максимального элемента i-ой строки матрицы
        cout << "max1[" << i << "] = " << max1 << "\t";
        
        //Поиск второго по величине после максимального элемента в i-ой строке матрицы
        for (j = 0; j < m; ++j)
        {
            if(max2==max1)
            {
                max2 = a[i][1];
            }
            
            if ((max2 < a[i][j]) && (a[i][j] != max1))
                {
                    max2 = a[i][j];
                }
        }
 
        //Вывод второго по величине после максимального элемента i-ой строки матрицы
        cout << "max2[" << i << "] = " << max2 << "\n";
    }
1
0 / 0 / 1
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 20:36  [ТС]
да, спасибо.
а может и это можешь написать?
Заменить каждый элемент линейного массива максимально возможным числом, записанным цифрами рассматриваемого элемента.
В линейном массиве найти наибольшую группу подряд идущих элементов, у любых двух соседних элементов которой нет общих цифр.
0
go
Эксперт С++
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
27.12.2011, 20:37
Цитата Сообщение от madchen Посмотреть сообщение
Заменить каждый элемент линейного массива максимально возможным числом, записанным цифрами рассматриваемого элемента.
Как вариант, запихнуть все цифры числа в строку и отсортировать ее по убыванию.
0
 Аватар для Heidel
115 / 115 / 39
Регистрация: 11.10.2011
Сообщений: 649
27.12.2011, 20:42
madchen, в своем последнем сообщений Поиск максимального и второго по величине элемента в матрице я убрала еще из кода оставшиеся лишние игреки, обрати внимание.
1
0 / 0 / 1
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 21:30  [ТС]
а это будет правильно?
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
int mas [n]; твой массив
int arr[10]; массив цифр от 0 до 9
int otvet[n] -массив ответов
int chislo -максимальное число из цифр элемента
 
for (int i = 0;i<n ;i++)
{
chislo =0;
arr[10]={}; зануляю массив
if (mas[i]==0) arr[0]++;
else
{
 
a=mas[i];
while (a!=0)
{
arr[a%10]++;
a=a/10;
}
 
}
k=10;
for (int j=0;j<=9;j++)
{
 
while (arr[j]!=0)
{
chislo += j*K;
k=K*10;
}
 
}
otvet[i]= chislo;
}
 
for (int i=0;i<n;i++)
{
out<<otvet[i];
}
Добавлено через 1 минуту
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.12.2011, 21:30
Помогаю со студенческими работами здесь

Рекурсия, поиск второго максимального элемента
Не получается выполнить задание: Данная последовательность натуральных чисел (одно число в строке), что завершается числом 0. ...

Поиск максимального элемента в матрице
Если ввести матрицу 1 на 2 и например получится такая матрица - (32), и если задать вторую строку для поиска максимального числа то она...

Поиск максимального элемента в матрице
Надо написать матрицу 3х5 заполнить ее датчиком случайных чисел, вывести на экран, а потом вывести на экран максимальный элемент матрицы, а...

Поиск максимального значения элемента в матрице
Здравствуйте. Дана матрица целых чисел MxN. Надо найти номер строки и столбца наибольшего элемента. Программа работает за одним...

Поиск максимального элемента и индекса в матрице
Добрый вечер, помогите пожалуйста реализовать решение данного задания на Mathcad/Matlab. Алгоритм есть. Заранее благодарен


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru