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

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

Войти
Регистрация
Восстановить пароль
 
 
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
#1

Найти количество столбцов, где все элементы упорядочены по возрастанию - C++

12.12.2013, 00:28. Просмотров 634. Ответов 17
Метки нет (Все метки)

1. Дан двумерный массив А размера mxn. Найти количество столбцов, где все элементы упорядочены по возрастанию.
С комментариями и объяснением. Пожалуйста!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2013, 00:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти количество столбцов, где все элементы упорядочены по возрастанию (C++):

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

Найти количество столбцов, элементы которых упорядочены по убыванию - C++
Дана матрица M x N. Найти количество столбцов, элементы которых упорядочены по убыванию. Помогите пожалуйста...:(

Найти количество столбцов, элементы которых упорядочены по убыванию - C++
Дана матрица M x N. Найти количество столбцов, элементы которых упорядочены по убыванию. Может кто-нибудь подсказать алгоритм решения?...

Найти количество строк матрицы, элементы которых упорядочены по возрастанию. - C++
Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию.

Найти количество строк матрицы, элементы которых упорядочены по возрастанию. - C++
помогите докончить Matrix42. Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию. ...

Найти количество строк матрицы, элементы которых упорядочены по возрастанию - C++
помогите исправить ошибки,я задачу решил только ошибки выходят!Matrix42. Дана матрица размера M . N. Найти количество ее строк, элементы...

17
StackOverflow
All rights reserved.
92 / 82 / 5
Регистрация: 03.08.2013
Сообщений: 258
12.12.2013, 04:04 #2
milka495,
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
//StackOverflow
//All rights reserved.
 
#include <iostream>
using namespace std;
 
int main()
{
    // для начала, создадим двумерный массив, который будет играть роль нашей
    // матрицы, и заполним его по своему вкусу.
 
    int arrayOfIntegers[ 4 ][ 5 ] = { { 11, 23, 77, 31, 5 },
                                    { 14, 7, 19, 33, 9 },
                                    { 17, 98, 22, 44, 3 },
                                    { 18, 45, 29, 49, 12 } };
    
    // теперь переменную, которая будет подсчитывать "правильные" столбцы
    // и инициализируем её нулём. 
 
    int counter = 0;
 
    // создадим цикл, который позволит нам пройтись по всем элементам в матрице.
 
    for ( int column = 0; column < 5; column++ )
    {
 
        // создадим переменную логического типа, которая просто будет следить
        // за ходом работы программы, и если в стольце не окажется "правильной"
        // последовательности, она позволит нам немедленно прервать работу
        // вложенного цикла, и приступить к проверки следующего столбца.
 
        bool sequence = true;
 
        for ( int row = 1; row < 4; row++ )
        {
 
            // условие гласит: если элемент матрицы в столбце j меньше предыдущего
            // элемента из этого же столбца,
 
            if ( arrayOfIntegers[ i ][ j ] < arrayOfIntegers[ i - 1 ][ j ] )
            {
 
                // то дальнейшая проверка смысла не имеет, последовательность нарушена
                // можно приступить к проверке следующего столбца, но для этого
                // присвоим нашей переменной ложное значение.
 
                sequence = false;
            }
 
            // если у переменной sequence ложное значение, то мы прерываем работу цикла
            // при помощи оператора break
 
            if ( !sequence )
                break;
        }
 
        // теперь мы вышли из цикла, нужно проверить, была ли обнаружена "правильная"
        // последовательность, и если это так, то счётчик обнаруженных последовательностей
        // необходимо пополнить на единицу.
        
        if ( sequence )
            ++counter;
    }
 
    // теперь давай просто посмотрим, что у нас получилось, и выведем результат на экран.
 
    cout << "We have " << counter << " right sequences." << endl;
 
    return 0;
}
1
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 11:57  [ТС] #3
Почему то пришла Только часть программы
0
StackOverflow
All rights reserved.
92 / 82 / 5
Регистрация: 03.08.2013
Сообщений: 258
12.12.2013, 15:37 #4
milka495, то есть?
0
Genn55
378 / 225 / 41
Регистрация: 26.12.2012
Сообщений: 744
12.12.2013, 17:29 #5
StackOverflow, StackOverflow, У вас опечатка в 24и 34 строках вместо
C++
1
  for ( int column = 0; column < 5; column++ )
и
C++
1
for ( int row = 1; row < 4; row++ )
должно быть
C++
1
for ( int i = 0; i < 5; i++ )
и
C++
1
for ( int j = 1; j < 4; j++ )
2
StackOverflow
All rights reserved.
92 / 82 / 5
Регистрация: 03.08.2013
Сообщений: 258
12.12.2013, 17:35 #6
Genn55, спасибо вам!
0
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 18:22  [ТС] #7
А если нужно задать динамический массив, то он будет записываться так:
int m,n;
cin>>m>>n;
int **mas;
mas=new int *[m];
for (int i=0; i<m; i++)
mas[i]=new int[n];

Добавлено через 4 минуты
еще это забыла
for (int i=0; i<m; i++){
for (int j=0; j<n; j++) {
cout<<"mas ["<<i<<"]["<<j<<"]=";
cin>>mas[i][j];
}
}
0
Genn55
378 / 225 / 41
Регистрация: 26.12.2012
Сообщений: 744
12.12.2013, 18:30 #8
C++
1
2
3
4
5
6
7
И не забывайте очистить память в конце программы
//удаляем двумерный массив он больше не нужен
    for (int i = 0; i < n; i++)
    {
     delete[]mas[i]; // Удаляем каждый элемент
    }
    delete [] mas; // А потом массив
0
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 18:50  [ТС] #9
Почему-то программа выдает ошибку о том, что программа вызвала нарушение доступа (ошибку сегментации). Как это исправить?
0
Genn55
378 / 225 / 41
Регистрация: 26.12.2012
Сообщений: 744
12.12.2013, 20:37 #10
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
#include <iostream>
using namespace std;
 
int main()
{
    // для начала, создадим двумерный массив, который будет играть роль нашей
    // матрицы, и заполним его по своему вкусу.
 
int m,n;
cin>>m>>n;
int **mas;
mas=new int *[m];
for (int i=0; i<m; i++)
mas[i]=new int[n];
for (int i=0; i<m; i++)
{
for (int j=0; j<n; j++)
{
cout<<"mas ["<<i<<"]["<<j<<"]=";
cin>>mas[i][j];
}
}
 
    // теперь переменную, которая будет подсчитывать "правильные" столбцы
    // и инициализируем её нулём.
 
    int counter = 0;
 
    // создадим цикл, который позволит нам пройтись по всем элементам в матрице.
 
    for ( int i = 0; i< m; i++ )
    {
 
        // создадим переменную логического типа, которая просто будет следить
        // за ходом работы программы, и если в стольце не окажется "правильной"
        // последовательности, она позволит нам немедленно прервать работу
        // вложенного цикла, и приступить к проверки следующего столбца.
 
        bool sequence = true;
 
        for ( int j = 1; j < n-1; j++ )
        {
 
            // условие гласит: если элемент матрицы в столбце j меньше предыдущего
            // элемента из этого же столбца,
 
            if ( mas[ i ][ j ] < mas[ i - 1 ][ j ] )
            {
 
                // то дальнейшая проверка смысла не имеет, последовательность нарушена
                // можно приступить к проверке следующего столбца, но для этого
                // присвоим нашей переменной ложное значение.
 
                sequence = false;
            }
 
            // если у переменной sequence ложное значение, то мы прерываем работу цикла
            // при помощи оператора break
 
            if ( !sequence )
                break;
        }
 
        // теперь мы вышли из цикла, нужно проверить, была ли обнаружена "правильная"
        // последовательность, и если это так, то счётчик обнаруженных последовательностей
        // необходимо пополнить на единицу.
 
        if ( sequence )
            ++counter;
    }
 
    // теперь давай просто посмотрим, что у нас получилось, и выведем результат на экран.
 
    cout << "We have " << counter << " right sequences." << endl;
    //удаляем двумерный массив он больше не нужен
    for (int i = 0; i < n; i++)
    {
     delete[]mas[i]; // Удаляем каждый элемент
    }
    delete [] mas; // А потом массив
 
    return 0;
}
0
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 20:59  [ТС] #11
Я поняла почему не работала. Я пробовала ввести квадратную матрицу, и она зависала

Добавлено через 2 минуты
я могу только работать с этой программой, когда строк больше чем столбцов
0
Genn55
378 / 225 / 41
Регистрация: 26.12.2012
Сообщений: 744
12.12.2013, 21:14 #12
Замените
C++
1
 if ( mas[ i ][ j ] < mas[ i - 1 ][ j ] )
на
C++
1
if ( mas[ i ][ j ] > mas[ i + 1 ][ j ] )
или покажите свой код
0
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 21:27  [ТС] #13
Всё так же как у вас. Заменила то, о чем вы говорили. 2на 2 работает, 4 на 3 нет
0
Genn55
378 / 225 / 41
Регистрация: 26.12.2012
Сообщений: 744
12.12.2013, 22:06 #14
Это код не мой,я указал на явные ошибки но этот код может работать только с матрицей 2х2.
0
milka495
2 / 2 / 0
Регистрация: 12.12.2013
Сообщений: 73
12.12.2013, 22:33  [ТС] #15
А может зависит от среды программирования? у меня DevC++
0
12.12.2013, 22:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2013, 22:33
Привет! Вот еще темы с ответами:

Найти количество столбцов матрицы, элементы которых упорядочены по убыванию - C++
Matrix43. Дана матрица размера M × N. Найти количество ее столбцов, элемен-ты которых упорядочены по убыванию. Matrix65. Дана матрица...

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

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

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


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

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

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