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

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

06.04.2017, 20:13. Показов 3316. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Объявите двумерный целочисленный массив, в котором n строк по m элементов. Выполните генерацию массива случайными целыми числами из промежутка [a; b). Значения n, m, a, b вводятся с клавиатуры. Переставьте столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность. Выведите массив на экран в виде таблицы дважды – до и после перестановки.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.04.2017, 20:13
Ответы с готовыми решениями:

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

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

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

Переставить столбцы матрицы так, чтобы элементы её побочной диагонали образовали невозрастающую последовательность
Здравствуйте, имеется следующее задание: Разработать программу, которая переставляет столбцы...

15
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 46
09.04.2017, 12:05  [ТС] 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
#include "stdafx.h"
#include "stdio.h"
#include "conio.h"
#include "windows.h"
#include "iostream"
#include "math.h"
#include "stdlib.h"
#include <ctime>
#include <string>
#include <iomanip>
#include <random>
using namespace std;
 
 
int _tmain(int argc, _TCHAR* argv[])
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int mas [10] [10], x, n, m, i, j, a, b,max;
cout << "Введите колличество строк \n";
cin>>n;
cout << "Введите колличество столбцов \n";
cin>>m;
cout << "Случайное целое число для промежутка \n";
cin>>a;
cout << "Случайное целое число для промежутка \n";
cin>>b;
srand(time(NULL));
for (i=0; i<n;i++)
    for (j=0; j<m; j++)
    mas [i] [j]=a+rand()%b;
for(i=0; i<n; i++)
{
    int min = 0, max = 0;
    cout<<endl;
    for(j=0; j<m; j++)
    {
    cout<<setw(m)<<mas [i] [j]<< "\t";
    
        if (mas[i][min] > mas[i][j])
 {
min = j;
 }
if (mas[i][max] < mas[i][j])
 {
max = j;
 }
}
    int temp = mas[i][min];
        mas[i][min] = mas[i][max];
        mas[i][max] = temp;
}
cout << "\nОтсортированная матрица:" << '\n';
 
 
for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
        {
            cout <<setw(m)<<  mas [i] [j]<< "\t";
        }
        cout << '\n';
    }
 
getch();    
    return 0;
}
0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
09.04.2017, 12:13 3
Будьте добры привести пример матрицы до сортировки и после.А то я не совсем понял,как именно Вам нужно или Вы решение проблемы предоставили? просто сегодня слишком рано встал и все не очень быстро доходит
0
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 46
09.04.2017, 12:19  [ТС] 4
Надо в рандомной матрице переставить столбцы массива так, чтобы их максимальные элементы образовали возрастающую последовательность
0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
09.04.2017, 12:49 5
Нет,ну я вижу,что рандомная матрица,но не совсем понимаю,какая возрастающая последовательность.
Допустим,у нас такая матрица:

3 11 33
4 13 33
62 45 65
13 43 87
22 11 34
Что должно быть на выходе?)

Добавлено через 15 минут
Аа,всё,понял
0
0 / 0 / 0
Регистрация: 04.12.2016
Сообщений: 46
09.04.2017, 12:52  [ТС] 6
Наверно так :/
11 3 33
13 4 33
45 62 65
43 13 87
11 22 34
0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
09.04.2017, 13:28 7
Да-да,я уж понял.
Вбиваю код

Добавлено через 2 минуты
Сейчас могу дать подсказку:реализуйте переменную max как одномерный массив
Добавлено через 8 минут
Ну,и потом сравните максимальные элементы столбцов и если у одного из них максимальный элемент меньше,то меняем местами все элементы столбца с соответствующими элементами в другом столбце.

Добавлено через 18 минут
И кроме того,задавать переменной max значение максимального элемента(а не номера элемента)
0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
09.04.2017, 13:40 8
Нужно завести структуру в виде класса:
C++
1
2
3
4
class MaxInMassiv
{
int Max, CX, CY;  
}
- где,
Max - максимальный элемент;
CX, CY - его столбец и строка в массиве.
И создать массив таких элементов равный количеству столбцов исходного массива и от него плясать уже.
0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
09.04.2017, 13:42 9
Лучший ответ Сообщение было отмечено aleksandr685756 как решение

Решение

А вот вам и код.Изменяйте по своему усмотрению.
Правда,если вы не измените пару строк,то не скомпилируется ни с помощью MinGW,ни с Visual C

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
 #include<stdlib.h>//Код для Borland C
 #include<stdio.h>
 #include<conio.h>
 #include<iostream.h>
 void main()
 {
 srand(time(NULL));
 int a[10][10];// массивчик
 int i,j,c,f,max[10],max2,min=0,temp;//  счетчики и макс.элемент
 for(i=0;i!=10;i++)
  {
  cout<<"\n";
   for(j=0;j!=10;j++)
    {
     a[i][j]=rand()%10+1;
     cout<<"["<<a[i][j];
    }
  }
  for(i=0;i<10;i++)
  {
   max2=0;
   for(j=0;j<10;j++)
   {
    if(max2<a[i][j])
    {
    max[i]=a[i][j];
    max2=a[i][j];
    }
   }
  }                      // выводим на экран
  cout<<"\nSorted massive:";    //      сортируем
   for(i=1;i<10;i++)
   {
    for(j=9;j>i;j--)
    {
     if(max[j-1]>max[j])
      {
       for(c=0;c<10;c++)
       {
        temp=a[j][c];
        a[j][c]=a[j-1][c];
        a[j-1][c]=temp;   // меняем столбцы местами
 
       }
          c=0;
 
         for(f=0;f<10;f++)    // обновляем максимальный элемент
  {
   max[f]=0;
   max2=0;
   for(c=0;c<10;c++)
   {
    if(max2<a[f][c])
    {
    max2=a[f][c];
    max[f]=a[f][c];
    }
   }
  }
      }
    }
   }
 
  for(i=0;i<10;i++)
  {
  cout<<" \nmaximum is:"<<max[i];
   cout<<"\n";
   for(j=0;j<10;j++)
   {
   cout<<"["<<a[i][j];
   }
  }
   getch();
 
 
 }
1
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
09.04.2017, 13:44 10
C++
1
MaxInMassiv MaxArray[m];
1) Потом нужно найти каждый из этих максимальных элементов в каждом столбце и записать их в эти элементы(что я сказал выше);
2) Потом нужно отсортировать этот массив по возрастанию. Жаль конечно что тут не подойдет стандартная функция sort(), придется свою сортировку писать;
3) Потом сортированный массив укажет в каком порядке расположить столбцы.
0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
09.04.2017, 13:49 11
Ну,да.У меня код получился ошибочный Именно ошибочный.А в результате очень справедливых правил форума редактировать теперь нельзя.А программа очень подвела сначала все правильно выводила,и только когда я эту ошибку выложил,показала ошибку.
0
Байт
11.04.2017, 21:23
  #12

Не по теме:

DemolitionMan, Если б вы сначала немножко подумали, а потом писали бы свои не слишком умные и обоснованные отзывы, оно может и к лучшему получилось бы...:cry:

0
132 / 158 / 87
Регистрация: 06.04.2016
Сообщений: 992
12.04.2017, 08:18 13
А что друзья? Он там, в программе, допустил грубейшие фатальные ошибки.
1) По условию задачи надо искать максимумы в столбцах, а не в строках. У него в строках, да.
2) Так массивы не выводятся - это бред полнейший, как у него:"[1[2[3[4[5[6[7[8[9[10" - что это за бред вообще, кто так программы пишет.
0
Байт
12.04.2017, 12:13
  #14

Не по теме:

Цитата Сообщение от DemolitionMan Посмотреть сообщение
Он ... допустил грубейшие фатальные ошибки.
Понимаете, раздел называется "для начинающих". И тут за ошибки казнить как-то не принято. Поправлять - да! Учить - да! А если за каждую ошибку давать отрицательный отзыв, так это вы скоро все вообще без репы останетесь. Отзывы - оружие сильное. Обидное. И обнажать его без нужды - себя не уважать.

0
9 / 1 / 2
Регистрация: 09.04.2017
Сообщений: 14
12.04.2017, 16:43 15
Господа,я согласен,что у меня здесь были ошибки,массивы я для себя выводил-просто мне удобнее смотреть на это так

просто за n-ное количество лет без практики я подзабыл способы сортировки больше такого не повторится.

Добавлено через 1 час 1 минуту
Кстати,я нашел было ошибку,хотел поправить действительно неверный вывод,да поскольку на правку коммента дается всего-ничего-около 5 минут-было уже поздно.
0
Диссидент
Эксперт C
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
12.04.2017, 17:20 16
Цитата Сообщение от SteveZeleniy Посмотреть сообщение
было уже поздно.
Я обычно шлю вдогонку пост - "Ох, ошибся я, дурачина! Строки Н-К следует читать так ...."
Ну и маленький секретик. Если никто еще не ответил, ваш очередной пост прилепится к предыдущему, и вы еще 5 минут получаете его весь в полное распоряжение.
0
12.04.2017, 17:20
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2017, 17:20
Помогаю со студенческими работами здесь

Упорядочить столбцы матрицы так, чтобы их максимальные элементы образовывали максимальную последовательность
Дана матрица М*N упорядочить все ее столбцы так, чтобы их максимальные элементы образовывали...

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru