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

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

30.06.2014, 19:46. Показов 2950. Ответов 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
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 20:37
Добавь .h, если нужно.
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 20:52  [ТС]
Я переделал вот так




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()
{
int mas[ 50 ][ 50 ]; 
 
//инициализируем массив
 
cout<< "Vvedite razmer matrici\n";
srand( 1 );
 
//получаем от пользователя реальные размеры массива
 
int i, j, a, b; cin>> "%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; 
 
//выводим исходную матрицу
 
cout<< "%3d", mas[ i ][ j ] ;
}
cout<<"\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;
}
}
}
}
cout<<"\n";
 
//выводим получившуюся матрицу на экран
 
for( i = 0; i < a; i++ )
{
for( j = 0; j < b; j++ )
{
cout<< "%3d", mas[ i ][ j ] ;
}
cout<<"\n";
}
getch();
}
У меня все заработало, НО.... зависает и пишет ошибку
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 20:55
Ты неправильно printf заменил, лучше бы оставил её. cin и cout строки форматирования не используют, т. е. должно быть
C++
1
cin >> a >> b;
и т. д.
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:00  [ТС]
Но как быть если у меня видит только cin и cout? у меня борланд c++ 3.1



Какой код c++ тогда нужно, напиши пожалуйста


Я не очень силен в этом

Добавлено через 3 минуты
Просто я не силен и не знаю почти этого языка, я буду благодарным если вы мне поможете
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 21:02
printf и scanf - древние функции, придуманные раньше потоков, должен видеть твой Борланд C++. Главное, чтобы stdio.h была подключена.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 21:03
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
2
3
4
bool comp(int* v1, int* v2)
{
return *v1 < *v2;
}
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Упорядочить строки матрицы D ( m, n) лексикографически по неубыванию первых k элементов строки.
При сравнении (в функции comp() ) не следует ограничиваться сравнением только первых элементов. Разберитесь, что значит, "по неубыванию первых k элементов строки"
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:05  [ТС]
это значит по возрастанию? Я не понимаю почти язык c++ , елки палки ...
Мне просто нужно чтобы вы помогли подкорректировать код чтобы программа заработала

А вот последним вопросом вы меня озадачили, я не совсем понимаю это
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 21:07
Если не понимаешь, зачем меняешь ввод/вывод. Добейся, чтобы работало хотя бы то, что есть. printf работает даже в самых древних средах.
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 21:11
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
mas = new int * [n];
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
std::sort(mas, mas + m, &comp);
mas - массив из n элементов. Значит, при вызове sort() должно быть mas+n.
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:17  [ТС]
У меня вылетает ошибка и зависает , даже ошибки не пишет


Меняю потому что в институте работает на cin и cout
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 21:17
Вот так на cin и cout:
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()
{
int mas[ 50 ][ 50 ]; 
 
//инициализируем массив
 
cout << "Vvedite razmer matrici\n";
srand( 1 );
 
//получаем от пользователя реальные размеры массива
 
int i, j, a, b; cin >> a >> b; 
for( i = 0; i < a; i++ )
{
for( j = 0; j < b; j++ )
{
 
//заполняем матрицу с помощью генератора псевдослучайных чисел
 
mas[ i ][ j ] = ( double )rand() / ( RAND_MAX + 1 ) * 99 + 1; 
 
//выводим исходную матрицу
 
cout<< mas[ i ][ j ] ;
}
cout<<"\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;
}
}
}
}
cout<<"\n";
 
//выводим получившуюся матрицу на экран
 
for( i = 0; i < a; i++ )
{
for( j = 0; j < b; j++ )
{
cout<< mas[ i ][ j ] ;
}
cout<<"\n";
}
getch();
}
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:21  [ТС]
Выдает ошибку при использовании стека в модуле...
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 21:22
Цитата Сообщение от Анатолий171 Посмотреть сообщение
зависает , даже ошибки не пишет
О какой программе идёт речь? Какая зависает, первая или вторая?
Можно добавить контрольные точки, чтобы определить, в какой строке зависает. Например, добавим контрольную точку перед и после первого цикла for( ... i<a ... ), посмотрим, чему равны a, b.
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:34  [ТС]
Последняя просто зависает и пишет ошибку что-то в стеке с модулем или типа того



Дело в том, что я не помню как проверить чему равно


я попробывал вставить cout<<i;
Ну после цикла for чему равно i
, ошибку выдал

Добавлено через 8 минут
Еще раз говорю, что борланд c++ 3.1 чудной, он некоторых функций не понимает


Ну по крайней мере я так выяснил судя по созданию других программ
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 21:39
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Последняя просто зависает
Чему равны a, b, когда зависает?
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:43  [ТС]
Ничему они не равны, программа зависет, написана ошибка

Ошибка в приложении
NONAME01 вызвал ошибку при использовании стека в модуле KRNL386.EXE в 0001:2FC4.

и написано, нажмите закрыть
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
30.06.2014, 21:45
Так может проблема в самой среде, а не в программе?
0
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 22:04  [ТС]
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
#include <iostream.h>
main()
{
int i;
float y,x,x1,b1,b2,b3,b;
cout<<"Vvedite x1"<<endl;
cin>>x1;
cout<<"Vvedite b1 b2 b3"<<endl;
cin>>b1>>b2>>b3;
for(i=1;i<=10-1;i++) x=x+0.5;
x=x+x1;
b=b1+b2+b3;
y=x+b;
cout<<"y="<<y<<endl;
return 0;
}
 
 
 
 
#include<iostream.h>
#include <stdio.h>
#include <conio.h>
void main()
{
    int osn, 
        n,   
        cn,  
        r;   
             
    char st[17];
    int i;
 
    cout<<"Vvedite hislo v desatihnoy sisteme"<<endl;
    cin>>n;
    cout<<"Vvedite osnovanie sistemi shisleniya"<<endl;
    cin>>osn;
 
    cn = n;
    st[16] ='\0';
    i = 15;
    do
    {
      r = n  % osn;
      n = n / osn;
      st[i--] = r + 48;
    }
    while ( n > 0);
 
    i++;
    int j = 0;
    while(st[i]) st[j++] = st[i++];
    st[j] = '\0';
 
    st[i--] = ' ';
    cout <<" Desatihnoe hislo "<<cn<<" sootvetstvyet hisly "<<st<<" v "<<osn<<"-noy sisteme shisleniya"<<endl;
    getch();
}
Я так не думаю так как я создавал и мне помогали создавать маленькие програмки и я создавал там же программу шифрования, правда немного кривую, но все же они все работали

А эта нет

Добавлено через 14 минут
Нет, пробую и пробую, пишет ошибку... В стеке
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
30.06.2014, 22:05
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Последняя просто зависает
Программа не "просто зависает". Она зависает в какой-то строке, в результате выполнения какой-то команды. (Может быть, даже, до начала выполнения функции main().)
Такая программа зависает?
C++
1
2
3
4
5
6
int main()
{
    int mas[ 50 ][ 50 ]; 
 
    return 0;
}
Такая зависает?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#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 ); 
 
    return 0;
}
А такая?
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.06.2014, 22:05
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru