Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
#1

В матрице поменять местами строку, содержащую наибольший элемент, со строкой, содержащей наименьший - C++

22.04.2014, 18:28. Просмотров 746. Ответов 3
Метки нет (Все метки)

Задание:
Кликните здесь для просмотра всего текста

В данной действительной матрице размера mn поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением. Предполагается, что такой элемент единственный.


Подскажите... почему-то не работает.

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
#include <iostream>
 
using namespace std;
 
int main()
{
    int a[3][3],b[3][3],i,j,min,max;
 
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            cout << "Vvedite [" << i+1 << "][" << j+1 << "] element:";
            cin  >> a[i][j];
        }
    }
 
    system("cls");
 
    cout << "\n";
 
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            cout << a[i][j] << "  ";
        }
        cout << "\n";
    }
 
 
    for(i=0;i<3;i++)   // ищем минимум
    {
        for(j=0;j<3;j++)
        {
            if ( a[0][0] >= a[i][j] )
            {
                min = i;
            }
 
        }
    }
 
 
    for(i=0;i<3;i++)   // ищем максимум
    {
        for(j=0;j<3;j++)
        {
            if ( a[0][0] <= a[i][j] )
            {
                max = i;
            }
 
        }
    }
 
    a[i][j] = b[i][j];
 
 
    for(i=0;i<3;i++)   // заменяем 1 строку
    {
        for(j=0;j<3;j++)
        {
            if ( i == min)
            b[i][j] = a[max][j];
        }
    }
 
 
 
    for(i=0;i<3;i++)   // заменяем 2 строку
    {
        for(j=0;j<3;j++)
        {
            if ( i == max)
            b[i][j] = a[min][j];
        }
    }
 
 
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            cout << b[i][j] << "  ";
        }
        cout << "\n";
    }
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2014, 18:28
Здравствуйте! Я подобрал для вас темы с ответами на вопрос В матрице поменять местами строку, содержащую наибольший элемент, со строкой, содержащей наименьший (C++):

В матрице поменять местами последнюю строку со строкой, содержащей наибольший элемент - C++
В матрицы из действительных отрицательных чисел поменять местами последнюю строку со строкой, содержащей наибольший элемент матрицы.

В заданной матрице поменять местами строку, содержащую максимальный элемент со строкой, содержащей минимальный - C++
Надо сделать к понедельнику. Задание по ПЯВУ, состоит из двух частей. Если первую часть я понимаю, как одномерный массив, то вторую нет....

В данной действительной матрице размера 3Х3 поменять местами строку, содержащую элемент с наибольшим значе-нием, со строкой, содержащей элемент с наим - C++
В данной действительной матрице размера 3Х3 поменять местами строку, содержащую элемент с наибольшим значе-нием, со строкой, содержащей...

В матрице поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением - C++
В данной действительной матрице размера 3*3 поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей...

В заданной матрице поменять строку, содержащую максимальный элемент со строкой, содержащей минимальный элемент - C++
В данной действительной квадратной матрице размера m x n поменять строку, содержащую элемент с наибольшим значением со строкой,...

Поменять местами последнюю строку со строкой, содержащей наибольший отрицательный элемент матрицы - C++
В заданной матрице поменять местами последнюю строку со строкой, содержащей наибольший отрицательный элемент матрицы.Если можно на c++ dos...

3
bogdan_017
21 / 21 / 11
Регистрация: 18.03.2014
Сообщений: 148
22.04.2014, 18:40 #2
алгоритм поиска минимума, допустим у вас а[0][0]=5, a[1][0]=1, a[2][0]=3; по вашему алгоритму среди этих чисел получится что min=2, т.к. а[0][0]>a[2][0], и a[2][0] - последний. попробуйте чуть чуть иначе :
C++
1
2
3
4
5
6
7
8
9
     int minstr;
for(i=0;i<3;i++)   // ищем минимум
    {
        for(j=0;j<3;j++)
        {  
            a[0][0]=min; 
            if ( min >= a[i][j] )  { min = a[i][j]; minstr=i;}
        }
    }
аналогично и с максимумом.
1
tibeg
0 / 0 / 0
Регистрация: 01.08.2013
Сообщений: 103
22.04.2014, 18:48  [ТС] #3
У меня проблема в том, что не правильно выводит строку с которой ничего не происходит!
0
bogdan_017
21 / 21 / 11
Регистрация: 18.03.2014
Сообщений: 148
22.04.2014, 21:55 #4
tibeg, от руки набросал, возможно нужно будет отладить)
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
#include <iostream>
#include <stdlib>
 
using namespace std;
int Data (int arr[3][3]) // заполнить массив рандомно числами от 0 до 9
 {
   for (int i=0; i<3; i++)
     for (int j=0; j<3; j++)
       arr[i][j]=rand()%10; 
  return 0;
  }
int Print (int arr[3][3]) // вывести массив на экран
   {
     cout<<"\n Print array:\n";
      for (int i=0; i<3; i++)
       {
          for (int j=0; j<3; j++)
          cout<<arr[i][j]<<" \t";
          cout<<"\n";
        }
      return 0;
    }
int swap(int &a, int &b) // поменять местами два элемента
  {
     int temp=a;
     a=b;
     b=temp;
     return 0;
   }
int main()
{
    int a[3][3],b[3][3],i,j,min,max,minstr, maxstr;
 
    clrscr();
    randommize();
    Data(a);   //заполняем массив рандомно
    Print(a);   //выводим массив на экран
 
    min=a[0][0];   
    for(i=0;i<3;i++)   // ищем минимум
    {
        for(j=0;j<3;j++)
            if ( min >= a[i][j] )
            {
                min = a[i][j]; minstr=i;
            }
    }
 
    max=a[0][0];
 
    for(i=0;i<3;i++)   // ищем максимум
    {
        for(j=0;j<3;j++)
            if ( max <= a[i][j] )
            {
                max = a[i][j]; maxstr=i;
            }
 
    }
 
 
 for(j=0; j<3; j++)
 swap(a[maxstr][j], a[minstr][j]);  //меняем местами элементы массива в каждом столбце из из строк minstr и maxstr
 
 Print(a); // выводим массив на экран
 
 return 0;
}
1
22.04.2014, 21:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2014, 21:55
Привет! Вот еще темы с ответами:

В квадратной действительной матрице порядка N поменять местами строку, содержащую наибольшее значение, со строкой, содержащей наименьшее значение - C++
Прошу помочь решить задачки!:(очень нужно (Билет №18) В квадратной действительной матрице порядка N поменять местами строку,...

Поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей элемент с наименьшим значением - C++
В данной действительной матрице размера 6х9 поменять местами строку, содержащую элемент с наибольшим значением, со строкой, содержащей...

В матрице из действительных чисел поменять местами первую строку и строку, содержащую наименьший элемент матрицы - C++
Помогите сделать пожалуйста)

В квадратной матрице поменять местами главную диагональ со строкой содержащей максимальный элемент - C++
Дана прямоугольная матрица nxm целых чисел (n,m&lt;10 – ввод с клавиатуры, значения элементов массива в диапазоне – вводятся случайным...


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

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

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