Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
1

Найти min и max элементы квадратной матрицы и поменять местами строки, в которых находятся эти элементы

02.11.2010, 22:08. Просмотров 1073. Ответов 3
Метки нет (Все метки)

Здраствуйте, стыдно просить такую глупость для вас, но сам я не могу реализовать вот такой код:
программа должна найти мин и макс элементы квадратной матрицы, и поменять местами строки, в которых находятся эти элементы, если номера строк совпадают, ничего не менять. Свой новый код писать не надо, препод уже этот видел, просто поредактируйте чуток

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
#include <stdio.h>
#include <ctime>
#include <iostream>
 
int** inputrand(int **arr, int m )
{
    setlocale (LC_ALL, "Russian");
    printf ("Введите размерность матрицы");
    scanf ("%d", &m);
    for (int i=0; i<m; i++)//Это вообще не спрашивает почему-то, массив инициализируется неправильно.
    {for (int j=0; j<m; j++)
        arr[m][m]=rand()%20;
    }
    printf ("Начальная матрица:");
    for (int i=0; i<m; i++)
    {for (int j=0; j<m; j++)// надо осуществить вид mXm,тоесть если 3 строки/столбца, то 3 элемента в строке
    printf ("%3,0d\t", arr[i][j]);
    }
    
}
 
void main(int m, int **arr, int min, int max, int minnum, int maxnum)
{
        min=arr[0][0];     
        for ( int i=0; i<m; i++)    
        {for (int j=0;j<m; j++)
                if (min>arr[i][j])
                    min=arr[i][j];
        }
        max=arr[0][0];
        for (int i=0; i<m; i++) 
        {for (int j=0;j<m; j++)
        ////////////////////////// как присвоить переменной номер строки, в которой находится элемент?
        for (int i=0; i<m; i++) 
        {for (int j=0;j<m; j++)
            if (min=arr[i][j])
                minnum=i;
            if (min=arr[i][j])
                maximum=i;
        }
        if <minnum=maxnum>
            printf ("Минимальный и максимальный элемент находятся в одной строке!")
        else 
        {// Теперь надо поменять местами строки с мин и макс элементом, вывести получившуюся матрицу;
        
}
Добавлено через 57 секунд
Заранее благодарен за отзывы!

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.11.2010, 22:08
Ответы с готовыми решениями:

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

Поменять местами max и min элементы матрицы, с учетом повторяемости
Добрый день, столкнулся с такой проблемой описанной в названии темы. Вот код всей программы...

Определить в каждой строке матрицы max и min элементы, после чего поменять их местами
Дана матрица D(8x8), элементами которой являются целые числа. определить в каждой строке max и min...

Поменять местами строки матрицы, содержащие максимальный и минимальный элементы
Народ, очень срочно нужна программа, самому времени вобще писать нету, есть немного другая,...

Создать двумерный массив 3х3, найти max, min и поменять их местами
#include &lt;stdio.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; int main () { ...

3
MILAN
889 / 783 / 186
Регистрация: 21.02.2009
Сообщений: 1,722
02.11.2010, 22:10 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
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>
#include <ctime>
 
using std::cout;
using std::cin;
using std::endl;
int minimum, maximum,num_max,num_min;
int** input(int **arr, int rows, int cols)
 {
     for(int i=0; i<rows; i++)
     {
         arr[i]=new int[cols];
         for(int j=0; j<cols; j++)
         {
             arr[i][j]=rand()%9;
                }
     }
   return arr;
 } 
int min_max(int **arr, int rows, int cols)
{
    int *min, *max;
    min = new int[cols];
    max = new int[cols];
    for(int i=0; i<rows; i++)
    {
        minimum = arr[i][0];
        maximum = arr[i][0];
        for(int j=0; j<cols; j++)
         {
            if (arr[i][j]<minimum)
             {
                minimum=arr[i][j];
             }
            if (arr[i][j]>maximum)
             {
                maximum=arr[i][j];
             } 
         }
        max[i]=maximum;
        min[i]=minimum;
        
     }
    minimum = min[0];
    maximum = max[0];
    for(int i=0; i<cols; i++)
    {
        if (min[i]<minimum)
          {
            minimum = min[i];
            num_min=i;
          } 
        if (max[i]>maximum)
          {
            maximum = max[i];
            num_max=i;
          }
    }
    delete [] min;
    delete [] max;
    return 0;
 
}
 
int main()
{
    srand((unsigned)time(NULL));
    setlocale(LC_ALL,"Russian");
    int **arr;
    int rows,cols;
    cout<<"Введите количество строк: ";
     cin>>rows;
    cout<<endl;
    cout<<"Введите количество столбцов: ";
     cin>>cols;
    arr = new int*[rows];
    input(arr, rows, cols);
    cout<<endl;
    cout<<"Начальная матрица: "<<endl;
    for(int i=0; i<rows; i++)
     {
        for(int j=0; j<cols; j++)
             {
                cout<<arr[i][j]<<"  ";
             }
        cout<<endl;
     }
    min_max(arr, rows, cols);
    cout<<"min "<<minimum<<" is "<<num_min<<endl;
    cout<<"max "<<maximum<<" is "<<num_max<<endl;
    cout<<"Конечная матрица: "<<endl;
     for(int i=0; i<rows; i++)
     {
        if(i==num_min)
        {
            for(int j=0; j<cols; j++)
             {
                cout<<arr[num_max][j]<<"  ";
             }
        }
        if(i==num_max)
        {
            for(int j=0; j<cols; j++)
             {
                cout<<arr[num_min][j]<<"  ";
             }
        }
        if(i!=num_max&&i!=num_min)
        {
           for(int j=0; j<cols; j++)
            {
             cout<<arr[i][j]<<"  ";
            }
        }
        cout<<endl;
     }
     for(int i=0; i<rows; i++)
       delete arr[i];
        delete [] arr;
  return 0;
}
1
Unforgiven_00
60 / 60 / 17
Регистрация: 12.10.2010
Сообщений: 129
02.11.2010, 22:11 3
C
1
if <minnum=maxnum>
0
vaselo
19 / 19 / 5
Регистрация: 17.10.2010
Сообщений: 247
02.11.2010, 22:14  [ТС] 4
милан, спасибо тебе конечно, ты мне уже писал, но твой код слишком сложный как для моего понимания, так и в представлении нашего препода, относительно моих способностей, поэтому при попытке переделать код я зашел в такой тупик, прокомментируй те строки, которые я указал у себя в программе.

Добавлено через 43 секунды
Цитата Сообщение от Unforgiven_00 Посмотреть сообщение
C
1
if <minnum=maxnum>
я запутался и хочу спать
0
02.11.2010, 22:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.11.2010, 22:14

Найти минимальный и максимальный элементы матрицы и поменять их местами
В матрице 5на 5 исп. Подпрограму найти мин макс элементы и поменять их местами (в основной...

Найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами
Помогите пожалуйста решить задачу : Найти наибольший и наименьший элементы прямоугольной матрицы...

Поменять местами столбцы матрицы так, чтобы элементы первой строки оказались упорядоченными
Поменять местами столбцы матрицы так, чтобы элементы первой строки оказались упорядоченными, со...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

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