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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.85
madchen
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 16
#1

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

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

помогите пожалуйста решить:
В каждой строке матрицы поменять местами максимальный и второй по величине после максимального элементы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2011, 23:53     Поиск максимального и второго по величине элемента в матрице
Посмотрите здесь:

C++ Поиск максимального элемента вектора
C++ Поиск максимального и минимального значения в матрице
C++ Поиск максимального и минимального элементов в матрице
В массиве найти наибольший общий делитель его второго максимального и минимального по абсолютной величине элементов C++
C++ Цикл while: Определить значение второго по величине элемента в этой последовательности
Определить значение второго по величине элемента в последовательности чисел C++
C++ Поиск максимального элемента массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
27.12.2011, 13:41     Поиск максимального и второго по величине элемента в матрице #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
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;
}
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.12.2011, 14:00     Поиск максимального и второго по величине элемента в матрице #3
Heidel, А для отрицательных чисел?
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
27.12.2011, 14:25     Поиск максимального и второго по величине элемента в матрице #4
go, в задании же ничего не сказано о том, какими числами заполнен массив)
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.12.2011, 14:32     Поиск максимального и второго по величине элемента в матрице #5
Heidel, код должен легко "адаптироваться" к другим данным (например, ввод с клавиатуры). В большинстве таких задач использует инициализация массива программистом перед компиляцией, а далее "модернизируется" - добавляется ввод с клавиатуры или рандомом. Если в задании не оговорено, то рандом, обычно выглядит следующим образом
C++
1
a[i][j] = rand() % 100 - 50; // -50..49
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
27.12.2011, 15:49     Поиск максимального и второго по величине элемента в матрице #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
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;
}
madchen
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 16:34  [ТС]     Поиск максимального и второго по величине элемента в матрице #7
всем спасибо за старания, но это не совсем то что мне нужно.
поэтому хочу попросить, чтобы кто-нибудь отдельно написал:
1.поиск максимального элемента в каждой строке матрицы
2.поиск второго по величине после максимального элемента в каждой строке матрицы
отдельным кодом, просто циклы(не надо полностью написанную программу).
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
27.12.2011, 20:28     Поиск максимального и второго по величине элемента в матрице #8
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";
    }
madchen
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 20:36  [ТС]     Поиск максимального и второго по величине элемента в матрице #9
да, спасибо.
а может и это можешь написать?
Заменить каждый элемент линейного массива максимально возможным числом, записанным цифрами рассматриваемого элемента.
В линейном массиве найти наибольшую группу подряд идущих элементов, у любых двух соседних элементов которой нет общих цифр.
go
Эксперт C++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
27.12.2011, 20:37     Поиск максимального и второго по величине элемента в матрице #10
Цитата Сообщение от madchen Посмотреть сообщение
Заменить каждый элемент линейного массива максимально возможным числом, записанным цифрами рассматриваемого элемента.
Как вариант, запихнуть все цифры числа в строку и отсортировать ее по убыванию.
Heidel
110 / 110 / 7
Регистрация: 11.10.2011
Сообщений: 647
27.12.2011, 20:42     Поиск максимального и второго по величине элемента в матрице #11
madchen, в своем последнем сообщений Поиск максимального и второго по величине элемента в матрице я убрала еще из кода оставшиеся лишние игреки, обрати внимание.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.12.2011, 21:30     Поиск максимального и второго по величине элемента в матрице
Еще ссылки по теме:

C++ Рекурсия, поиск второго максимального элемента
Поиск максимального элемента по модулю C++
C++ Поиск максимального элемента дерева
C++ Найти значение и индексы максимального по абсолютной величине элемента матрицы
C++ Поиск минимального и максимального элемента в матрице

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

Или воспользуйтесь поиском по форуму:
madchen
0 / 0 / 0
Регистрация: 23.11.2010
Сообщений: 16
27.12.2011, 21:30  [ТС]     Поиск максимального и второго по величине элемента в матрице #12
а это будет правильно?
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 минуту
Yandex
Объявления
27.12.2011, 21:30     Поиск максимального и второго по величине элемента в матрице
Ответ Создать тему
Опции темы

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