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

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

Войти
Регистрация
Восстановить пароль
 
 
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
#1

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

30.06.2014, 19:46. Просмотров 862. Ответов 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();
}
Помогите прошу, просто я к сожалению не понимаю
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.06.2014, 19:46     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
Посмотрите здесь:

Упорядочить строки матрицы в порядке неубывания их первых элементов. C++
C++ Упорядочить строки матрицы по неубыванию суммы их элементов
Упорядочить строки матрицы в порядке неубывания их первых элементов C++
C++ Замена первых элементов каждой строки квадратной матрицы на сумму элементов этой строки
Упорядочить строки матрицы по неубыванию сумм положительных элементов C++
C++ Упорядочить строки матрицы по возрастанию их первых элементов
Упорядочить строки матрицы по возрастанию их первых элементов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 20:37     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #2
Добавь .h, если нужно.
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 20:52  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #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
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();
}
У меня все заработало, НО.... зависает и пишет ошибку
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 20:55     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #4
Ты неправильно printf заменил, лучше бы оставил её. cin и cout строки форматирования не используют, т. е. должно быть
C++
1
cin >> a >> b;
и т. д.
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:00  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #5
Но как быть если у меня видит только cin и cout? у меня борланд c++ 3.1



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


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

Добавлено через 3 минуты
Просто я не силен и не знаю почти этого языка, я буду благодарным если вы мне поможете
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 21:02     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #6
printf и scanf - древние функции, придуманные раньше потоков, должен видеть твой Борланд C++. Главное, чтобы stdio.h была подключена.
Alex5
1018 / 681 / 100
Регистрация: 12.04.2010
Сообщений: 1,722
30.06.2014, 21:03     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #7
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
2
3
4
bool comp(int* v1, int* v2)
{
return *v1 < *v2;
}
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Упорядочить строки матрицы D ( m, n) лексикографически по неубыванию первых k элементов строки.
При сравнении (в функции comp() ) не следует ограничиваться сравнением только первых элементов. Разберитесь, что значит, "по неубыванию первых k элементов строки"
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:05  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #8
это значит по возрастанию? Я не понимаю почти язык c++ , елки палки ...
Мне просто нужно чтобы вы помогли подкорректировать код чтобы программа заработала

А вот последним вопросом вы меня озадачили, я не совсем понимаю это
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 21:07     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #9
Если не понимаешь, зачем меняешь ввод/вывод. Добейся, чтобы работало хотя бы то, что есть. printf работает даже в самых древних средах.
Alex5
1018 / 681 / 100
Регистрация: 12.04.2010
Сообщений: 1,722
30.06.2014, 21:11     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #10
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
mas = new int * [n];
Цитата Сообщение от Анатолий171 Посмотреть сообщение
C++
1
std::sort(mas, mas + m, &comp);
mas - массив из n элементов. Значит, при вызове sort() должно быть mas+n.
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:17  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #11
У меня вылетает ошибка и зависает , даже ошибки не пишет


Меняю потому что в институте работает на cin и cout
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 21:17     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #12
Вот так на 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();
}
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:21  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #13
Выдает ошибку при использовании стека в модуле...
Alex5
1018 / 681 / 100
Регистрация: 12.04.2010
Сообщений: 1,722
30.06.2014, 21:22     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #14
Цитата Сообщение от Анатолий171 Посмотреть сообщение
зависает , даже ошибки не пишет
О какой программе идёт речь? Какая зависает, первая или вторая?
Можно добавить контрольные точки, чтобы определить, в какой строке зависает. Например, добавим контрольную точку перед и после первого цикла for( ... i<a ... ), посмотрим, чему равны a, b.
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:34  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #15
Последняя просто зависает и пишет ошибку что-то в стеке с модулем или типа того



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


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

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


Ну по крайней мере я так выяснил судя по созданию других программ
Alex5
1018 / 681 / 100
Регистрация: 12.04.2010
Сообщений: 1,722
30.06.2014, 21:39     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #16
Цитата Сообщение от Анатолий171 Посмотреть сообщение
Последняя просто зависает
Чему равны a, b, когда зависает?
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 21:43  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #17
Ничему они не равны, программа зависет, написана ошибка

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

и написано, нажмите закрыть
nmcf
4774 / 4112 / 1376
Регистрация: 14.04.2014
Сообщений: 16,143
30.06.2014, 21:45     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #18
Так может проблема в самой среде, а не в программе?
Анатолий171
0 / 0 / 0
Регистрация: 30.06.2014
Сообщений: 18
30.06.2014, 22:04  [ТС]     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #19
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 минут
Нет, пробую и пробую, пишет ошибку... В стеке
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.06.2014, 22:05     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Alex5
1018 / 681 / 100
Регистрация: 12.04.2010
Сообщений: 1,722
30.06.2014, 22:05     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки. #20
Цитата Сообщение от Анатолий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;
}
Yandex
Объявления
30.06.2014, 22:05     Упорядочить строки матрицы лексикографически по неубыванию первых k элементов строки.
Ответ Создать тему
Опции темы

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