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

Матрицы: найти наибольший и наименьший элементы и поменять их местами - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.95
is12
0 / 0 / 0
Регистрация: 14.04.2012
Сообщений: 4
22.04.2012, 14:10     Матрицы: найти наибольший и наименьший элементы и поменять их местами #1
найти наибольший и наименьший элементы прямоугольной матрицы и поменять их местами.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2012, 14:10     Матрицы: найти наибольший и наименьший элементы и поменять их местами
Посмотрите здесь:

C++ Поменять местами наибольший и наименьший элементы?
C++ Массивы: наибольший и наименьший элементы прямоугольной матрицы и поменять их местами
C++ Найти наибольший и наименьший элементы и поменять их местами.
C++ Найти наибольший и наименьший элементы каждой строки прямоугольной матрицы и поменять их местами
C++ Матрицы. Поменять местами наибольший и наименьший элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
22.04.2012, 14:22     Матрицы: найти наибольший и наименьший элементы и поменять их местами #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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int a[10][10];
void generate(){
int i, j;
srand(time(NULL));
for (i=0; i<10; i++)
for (j=0; j<10; j++)
 a[10][10]=rand()%100;
}
void print(){
int i, j;
srand(time(NULL));
 for (i=0; i<10; i++){
  for (j=0; j<10; j++)
    printf("%d ", a[j][i]);
  printf("\n");
 }
}
void solve(){
int mini=0, minj=0, maxi=0, maxj=0, t;
for (i=0; i<10; i++)
  for (j=0; j<10; j++){
  if (a[mini][minj]>a[i][j]){
   mini=i;
   minj=j;
   }
  if (a[maxi][maxj]<a[i][j]){
   maxi=i;
   maxj=j;
   }
 }
t=a[mini][minj];
a[mini][minj]=a[maxi][maxj];
a[maxi][maxj]=t;
}
int main(){
  generate();
  print();
  printf ("\n new array\n");
  solve();
  print();
  return 0;
}
bz_
6 / 6 / 1
Регистрация: 10.04.2012
Сообщений: 31
22.04.2012, 14:41     Матрицы: найти наибольший и наименьший элементы и поменять их местами #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
#include <iostream>
#include <conio.h>
#include <ctime>
using namespace std;
void main(){
    srand(time(NULL));
    int a[10][10];
    for (int i = 0; i < 10; i++){
        for (int j = 0; j < 10; j++)
            a[i][j] = rand() % 50 + 1;
    }
    int min = a[0][0], max = a[0][0], num_min[2] = {0}, num_max[2] = {0};
    for (int i = 0; i < 10; i++){
        for (int j = 0; j < 10; j++){
            if (a[i][j] > max){
                max = a[i][j];
                num_max[0] = i;
                num_max[1] = j;
            }
            if (a[i][j] < min){
                min = a[i][j];
                num_min[0] = i;
                num_min[1] = j;
            }
        }
    }
    int tmp = a[num_min[0]][num_min[1]];
    a[num_min[0]][num_min[1]] = a[num_max[0]][num_max[1]];
    a[num_max[0]][num_max[1]] = tmp;
    _getch();
}
alexiuscrow
 Аватар для alexiuscrow
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 52
15.10.2012, 03:01     Матрицы: найти наибольший и наименьший элементы и поменять их местами #4
Цитата Сообщение от bz_ Посмотреть сообщение
int min = a[0][0], max = a[0][0], num_min[2] = {0}, num_max[2] = {0};
for (int i = 0; i < 10; i++){
for (int j = 0; j < 10; j++){
if (a[i][j] > max){
max = a[i][j];
num_max[0] = i;
num_max[1] = j;
}
if (a[i][j] < min){
min = a[i][j];
num_min[0] = i;
num_min[1] = j;
}
}
}
int tmp = a[num_min[0]][num_min[1]];
a[num_min[0]][num_min[1]] = a[num_max[0]][num_max[1]];
a[num_max[0]][num_max[1]] = tmp;
_getch();
}[/CPP]
если же таковых элементов в матрице несколько?
к примеру минимальный элемент 4, максимальный 28. при этом в массиве находится 3 числа равные 4, и 2 равные 28.
panicwassano
590 / 558 / 20
Регистрация: 07.11.2010
Сообщений: 2,004
15.10.2012, 11:48     Матрицы: найти наибольший и наименьший элементы и поменять их местами #5
Цитата Сообщение от alexiuscrow Посмотреть сообщение
если же таковых элементов в матрице несколько?
к примеру минимальный элемент 4, максимальный 28. при этом в массиве находится 3 числа равные 4, и 2 равные 28.
ищем в цикле элементы равные минимальному и присваем им значение максимального. С максимальными по аналогии
alexiuscrow
 Аватар для alexiuscrow
0 / 0 / 0
Регистрация: 28.10.2010
Сообщений: 52
15.10.2012, 14:57     Матрицы: найти наибольший и наименьший элементы и поменять их местами #6
Цитата Сообщение от panicwassano Посмотреть сообщение
ищем в цикле элементы равные минимальному и присваем им значение максимального. С максимальными по аналогии
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
int arrayw[4][4]={{1,1,3,4},{5,6,7,8},{9,10,7,12},{13,14,15,16}};
int min(arrayw[0][0]),max(arrayw[0][0]),indexmaxi(0),indexmaxj(0),indexmini(0),indexminj(0);
int numof(4);
 
String str;
String str2;
 
/*Запись в str*/
for(int i=0;i<numof;i++){
for(int j=0;j<numof;j++)
str+=IntToStr(arrayw[i][j])+"  ";
str+="\n";
}
Label15->Caption=str;
 
/*Замена местами макс и мин элементов (без совпадений)*/
for(int i=0;i<numof;i++){
for(int j=0;j<numof;j++){
if(arrayw[i][j]>max){
max=arrayw[i][j];
indexmaxi=i;
indexmaxj=j;
}
if(arrayw[i][j]<min){
min=arrayw[i][j];
indexmini=i;
indexminj=j;
}}}
int tmp=arrayw[indexmini][indexminj];
arrayw[indexmini][indexminj]=arrayw[indexmaxi][indexmaxj];
arrayw[indexmaxi][indexmaxj]=tmp;
 
/*Проверка на совпадения*/
for(int i=0;i<numof;i++){
for(int j=0;j<numof;j++){
if(arrayw[i][j]==max){
if(arrayw[i][j]!=array[indexmaxi][indexmaxj]){
arrayw[i][j]=arrayw[indexmini][indexminj];
}}
if(arrayw[i][j]==min){
if(arrayw[i][j]!=arrayw[indexmini][indexminj]){
arrayw[i][j]=arrayw[indexmaxi][indexmaxj];
}}}}
 
/*Запись в str2*/
for(int i=0;i<numof;i++){
for(int j=0;j<numof;j++)
str2+=IntToStr(arrayw[i][j])+"  ";
str2+="\n";
}
что, не так?
Yandex
Объявления
15.10.2012, 14:57     Матрицы: найти наибольший и наименьший элементы и поменять их местами
Ответ Создать тему
Опции темы

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