Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18

Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.

30.06.2014, 19:46. Показов 3215. Ответов 28
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите решить задачу, пожалуйста

Упорядочить строки матрицы D ( m, n) лексикографически по неубыванию первых k элементов строки.





Вот этот 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
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <clocale>
#include <ctime>
#include <algorithm>
 
bool comp(int* v1, int* v2)
{
    return *v1 < *v2;
}
 
int main()
{
    setlocale(LC_ALL,"russian");
    int n, m;
    int **mas = NULL;
    srand(time(NULL));
    printf ("\n Введите размерность таблицы(m,n): ");
    scanf("%d%d", &m, &n);
    mas = new int * [n];
 
    for (int i=0; i < n; i++)
    {
        mas[i] = new int [m];
        for ( int k = 0; k < m; k++)
        {
            mas[i][k] = rand()%100;
            printf ("\t%d ", mas[i][k]);
        }
        printf ("\n");
    }
 
    std::sort(mas, mas + m, &comp);
    printf("\nSort matrix: \n");
    for (int i=0; i < n; i++)
    {
        for ( int k = 0; k < m; k++)
            printf ("\t%d ", mas[i][k]);
        printf ("\n");
    }
 
    system("Pause");
    return EXIT_SUCCESS;



Дело в том, что у меня стоит C++ 3.1
И не читает printf , #include <ctime> без " .H "
Он понимает cout <<
cin >>
#include < .h>


Вы можете подкорректировать код и правильный ли он вообще пожалуйта
помогите мне

Добавлено через 31 минуту
Или код должен быть таким?
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
#include <stdafx.h>
#include <stdlib.h>
#include <conio.h>
 
void main()
{
    int mas[ 50 ][ 50 ]; 
 
    
 
    printf( "Vvedite razmer matrici\n" );
    srand( 1 );
 
    
 
    int i, j, a, b; scanf( "%d  %d", &a, &b ); 
    for( i = 0; i < a; i++ )
    {
        for( j = 0; j < b; j++ )
        {
 
            
 
            mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
 
        
 
            printf( "%3d", mas[ i ][ j ] );
        }
        printf("\n");
    }
    int x,y;
 
 
 
    for( y = 0; y < a; y++ )
    {
        for ( i = 0; i < ( a - 1 ); i++ )
        {
            if( mas[ i ][ 0 ] > mas[ i + 1 ][ 0 ] )
            {
                for( j = 0 ; j < b; j++ )
                {
                    x = mas[ i ][ j ];
                    mas[ i ][ j ] = mas[ i + 1 ][ j ];
                    mas[ i + 1 ][ j ] = x;
                }
            }
        }
    }
    printf("\n");
 
    
 
    for( i = 0; i < a; i++ )
    {
        for( j = 0; j < b; j++ )
        {
            printf( "%3d", mas[ i ][ j ] );
        }
        printf("\n");
    }
    getch();
}
Помогите прошу, просто я к сожалению не понимаю
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.06.2014, 19:46
Ответы с готовыми решениями:

Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k элементов строки
Помогите решить задачу C++ пожалуйста, пожалуйста Упорядочить строки матрицы D (m. n) Лексикографически по неубыванию первых k...

Упорядочить строки матрицы по неубыванию их первых элементов
Написать программу: Дан двумерный массив. Упорядочить его строки по неубыванию их первых элементов.

Упорядочить строки матрицы по неубыванию первых элементов
Дана матрица m*n, m,n&lt;50. Упорядочить ее строки по неубыванию их первых элементов.нарисуйте блок-схему.

28
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 22:18  [ТС]
Студворк — интернет-сервис помощи студентам
Треться вызывает ошибку)

Добавлено через 46 секунд
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
#include <stdio.h>
#include <stdlib.h>
int main()
{
    int mas[ 50 ][ 50 ]; 
 
    printf( "Vvedite razmer matrici\n" );
    srand( 624 );
    //srand( 1 );
 
    int i, j, a, b; 
    scanf( "%d  %d", &a, &b ); 
 
    for( i = 0; i < a; i++ )
    {
        for( j = 0; j < b; j++ )
        {
            mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
            printf( "%3d", mas[ i ][ j ] );
        }
        printf("\n");
    }
    return 0;
}
Вот эта вызывает ошибку

Добавлено через 2 минуты
А предыдущие 2 маленькие работают
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 22:27
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Вот эта вызывает ошибку
А если убрать строки
C++
1
2
mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
printf( "%3d", mas[ i ][ j ] );
будет ошибка? Какая именно строка вызывает ошибку?

Вот как работает Ваша программа на ideone . (Только там пришлось изменить void main() на int main(), и #include поменять.)
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 22:59  [ТС]
Если убрать то, что вы сказали, то она просто требует размер матрицы.

Я ввожу 3

потом еще раз любую цифру и она зависает

Добавлено через 14 минут
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
#include <stdio.h>
#include <stdlib.h>
int main()
{
   int mas[ 50 ][ 50 ]; 
   printf( "Vvedite razmer matrici\n" );
   srand( 624 );
   //srand( 1 );
 
   int i, j, a, b; 
    scanf( "%d  %d", &a, &b ); 
    //a = 20; b = 4;
    //a = 7; b = 4;
 
    for( i = 0; i < a; i++ )
    {
        for( j = 0; j < b; j++ )
        {
            mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
            printf( "%3d", mas[ i ][ j ] );
        }
        printf("\n");
    }
    int x,y;
    for( y = 0; y < a; y++ )
    {
        for ( i = 0; i < ( a - 1 ); i++ )
        {
            if( mas[ i ][ 0 ] > mas[ i + 1 ][ 0 ] )
            {
                for( j = 0 ; j < b; j++ )
                {
                    x = mas[ i ][ j ];
                    mas[ i ][ j ] = mas[ i + 1 ][ j ];
                    mas[ i + 1 ][ j ] = x;
                }
            }
        }
    }
    printf("\n");
 
    for( i = 0; i < a; i++ )
    {
        for( j = 0; j < b; j++ )
        {
            printf( "%3d", mas[ i ][ j ] );
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
Я включил это и у меня 2 ошибки

NO module definition file specified usingdefaults


error undefined symbol_system in module и путь к файлу моему

Добавлено через 12 минут
На сайте там , где вы сказали все выходит очень хорошо
А у меня...
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 23:07
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Вот эта вызывает ошибку
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Я ввожу 3
потом еще раз любую цифру и она зависает
Так Вы вводите два числа? Может быть, программа просто ожидает ввода?
Что будет выведено на экран?
C++
1
2
    scanf( "%d  %d", &a, &b ); 
    printf( "\n  a == %d   b == %d \n", a, b );
А если убрать ввод с клавиатуры?
C++
1
2
    //scanf( "%d  %d", &a, &b ); 
    a = 20; b = 4;
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 23:10  [ТС]
Нет, я ввел 2 чила. После ввода второго программа бац и зависает
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 23:58
Лучший ответ Сообщение было отмечено Анатолий171 как решение

Решение

Цитата Сообщение от Анатолий171 Посмотреть сообщение
Вот эта вызывает ошибку
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Нет, я ввел 2 чила. После ввода второго программа бац и зависает
Анатолий171, Вы можете сами найти и исправить ошибку. А можете не искать и не исправлять. Сами можете выбрать подходящий Вам вариант.
1
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
01.07.2014, 12:11  [ТС]
Я буду искать, но я скоро пойду спать, потом на свжую голову может что придет в голову) Спасибо и на этом

Добавлено через 11 часов 37 минут
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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include <stdio.h>
 
#include <stdlib.h>
 
int main()
 
{
 
   int mas[ 50 ][ 50 ]; 
 
 
 
    
 
 
 
    printf( "Vvedite razmer matrici\n" );
 
    srand( 624 );
 
    //srand( 1 );
 
 
 
    
 
 
 
    int i, j, a, b; 
 
    scanf( "%d  %d", &a, &b ); 
 
    //a = 20; b = 4;
 
    //a = 7; b = 4;
 
 
 
    for( i = 0; i < a; i++ )
 
    {
 
        for( j = 0; j < b; j++ )
 
        {
 
 
 
            
 
 
 
            mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
 
 
 
        
 
 
 
            printf( "%3d", mas[ i ][ j ] );
 
        }
 
        printf("\n");
 
    }
 
    int x,y;
 
 
 
 
 
 
 
    for( y = 0; y < a; y++ )
 
    {
 
        for ( i = 0; i < ( a - 1 ); i++ )
 
        {
 
            if( mas[ i ][ 0 ] > mas[ i + 1 ][ 0 ] )
 
            {
 
                for( j = 0 ; j < b; j++ )
 
                {
 
                    x = mas[ i ][ j ];
 
                    mas[ i ][ j ] = mas[ i + 1 ][ j ];
 
                    mas[ i + 1 ][ j ] = x;
 
                }
 
            }
 
        }
 
    }
 
    printf("\n");
 
 
 
    
 
 
 
    for( i = 0; i < a; i++ )
 
    {
 
        for( j = 0; j < b; j++ )
 
        {
 
            printf( "%3d", mas[ i ][ j ] );
 
        }
 
        printf("\n");
 
    }
 
 
 
 
 
    system("pause");
 
    return 0;
 
}
Почему у вас получилось 2 матрицы , а не одна?
http://ideone.com/sQz43N

Добавлено через 1 минуту
Чтобы матрица была из букв нужно вместо int написать char?

Добавлено через 28 минут
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
#include <iostream.h>
#include <stdlib.h>
#include <conio.h>
 
void main()
{
char mas[ 50 ][ 50 ]; 
 
//инициализируем массив
 
cout << "Vvedite razmer matrici\n";
srand( 1 );
 
//получаем от пользователя реальные размеры массива
 
char i, j, a, b; cin >> a >> b; 
for( i = 0; i < a; i++ )
{
for( j = 0; j < b; j++ )
{
 
//заполняем матрицу с помощью генератора псевдослучайных чисел
 
mas[ i ][ j ] = ( char )rand()  * 99 + 20;
 
//выводим исходную матрицу
 
cout<< mas[ i ][ j ] ;
}
cout<<"\n";
}
char x,y;
 
//применяем пузырьковый метод сортировки 
 
for( y = 0; y < a; y++ )
{
for ( i = 0; i < ( a - 1 ); i++ )
{
if( mas[ i ][ 0 ] > mas[ i + 1 ][ 0 ] )
{
for( j = 0 ; j < b; j++ )
{
x = mas[ i ][ j ];
mas[ i ][ j ] = mas[ i + 1 ][ j ];
mas[ i + 1 ][ j ] = x;
}
}
}
}
cout<<"\n";
 
//выводим получившуюся матрицу на экран
 
for( i = 0; i < a; i++ )
{
for( j = 0; j < b; j++ )
{
cout<< mas[ i ][ j ] ;
}
cout<<"\n";
}
getch();
}
Вот так будет верно?

Просто я ввожу размер матрицы
и потом у меня полно разных символов выводится
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
01.07.2014, 20:14
Цитата Сообщение от Анатолий171 Посмотреть сообщение
у меня полно разных символов выводится
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Почему у вас получилось 2 матрицы , а не одна?
Смотрите, где в программе встречается
C++
1
printf( "%3d", mas[ i ][ j ] );
Когда параметр у operator << имеет тип char, выводится символ, код которого равен этому числу.
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for( char c = 70; c < 80; ++c )
        cout << "    " << (int)c << "    " << c << endl;
    //    70    F
    //    71    G
    //    72    H
    //    73    I
    //    74    J
    //    75    K
    //    76    L
    //    77    M
    //    78    N
    //    79    O
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
03.07.2014, 10:17  [ТС]
Я разобрался))) Спасибо)) Но у меня ворос, это ведб программа Упорядочивает строки матрицы лексикографически по неубыванию первых k элементов строки ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2014, 10:17

Упорядочить строки матрицы по неубыванию суммы элементов каждой строки
17.22. Дан двумерный массив. Разместить его строки так, чтобы при их просмотре сверху вниз: а) суммы значений в каждой строке...

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

Упорядочить строки матрицы по неубыванию их наибольших элементов (Delphi->C++)
Дана матрица размером NxM. Упорядочить ее строки по неубыванию их наибольших элементов. program N60094766; {$APPTYPE CONSOLE} ...

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

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


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

Или воспользуйтесь поиском по форуму:
29
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru