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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Janat
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 17
25.03.2012, 10:21     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #1
помогите докончить Matrix42. Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию.
C++
1
2
3
4
5
6
7
8
9
 #include<iostream.h>
 #include<math.h>
 #define m 5
 #define n 5
 int main()
 {int a[m][n],i,j; 
 for(i=0;i<m;i++)
 for(j=0;j<n;j++)
 cin>>a[i][j];
помогите кто знает!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 10:21     Найти количество строк матрицы, элементы которых упорядочены по возрастанию.
Посмотрите здесь:

Вычислить количество строк матрицы, элементы которых упорядочены по возрастанию C++
C++ Найти количество столбцов матрицы, элементы которых упорядочены по убыванию
Найти количество строк матрицы, элементы которых упорядочены по возрастанию. C++
Найти и вывести на экран: количество и номера строк, у которых элементы упорядочены по убыванию C++
Дана матрица размера M × N. Найти количество ее строк, элементы которых упорядочены по возрастанию. C++
C++ Найти количество строк матрицы, элементы которых упорядочены по возрастанию
C++ Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
14347 / 9178 / 1324
Регистрация: 24.12.2010
Сообщений: 16,803
25.03.2012, 11:04     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #2
C
1
2
3
4
5
for(i=s=0; i<m; i++) {
 for(j=1; j<n; j++) if (a[i][j]<a[i][j-1])  break;
 if (j==n) s++;
}
cout<<s;
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 11:27     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #3
Байт, все правильно только сдесь выходишь за пределы массива
Цитата Сообщение от Байт Посмотреть сообщение
if (j==n)
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
#include "iostream"
#include "ctime"
using namespace std;
 
int main()
{
    srand(time(0));
    int  s = 0;
    int m, n;
    int a[100][100] = {0};
    cin >> m >> n;
 
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cin >> a[i][j]; //cout << (a[i][j] = rand() % 10) << "\t");
        }
        //cout << endl;
    }
    
     for(int i = 0; i < m; i++) 
     {
        for(int j = 1; j < n; j++)
        {
            if (a[i][j] < a[i][j-1])
            {
                break;
            }
            else if (j == n - 1)
            {
                s++;
            }
        }
    }
    cout << "\nNumber of lines ordered in ascending - " << s;      
    system("pause >> null");
    return 0;
}
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 11:33     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #4
Результат
Миниатюры
Найти количество строк матрицы, элементы которых упорядочены по возрастанию.  
Байт
 Аватар для Байт
14347 / 9178 / 1324
Регистрация: 24.12.2010
Сообщений: 16,803
25.03.2012, 11:34     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #5
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Байт, все правильно только сдесь выходишь за пределы массива
Сообщение от Байт
if (j==n)
Чего это вдруг? Никуда я не выхожу. Условие j==n означает, что цикл прокрутился до конца и закончился именно потому, что условие j < n не выполняется, а не по Бреку.
У тебя тоже правильно, но я долго смотрел, прежде чем это понял. Мой способ более "классический", что ли.
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 11:48     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #6
Цитата Сообщение от Байт Посмотреть сообщение
Чего это вдруг? Никуда я не выхожу. Условие j==n означает, что цикл прокрутился до конца и закончился именно потому, что условие j < n не выполняется, а не по Бреку.
У тебя тоже правильно, но я долго смотрел, прежде чем это понял. Мой способ более "классический", что ли.
Допустим массив 5х5, получается что n = 5;

соответсвенно номера столбцов j = 0 - первый столбец
j = 1 - второй
j = 2 - третий
j = 3 - четвертый
j = 4 - пятый

то есть j не будет равен (в данном случае) 5, то есть n

поэтому условие

C++
1
if (j==n) s++;
ни когда не будет выполняться,

это тоже саммое что

C++
1
if (j == 5) s++;
Тоже саммое будет происходить и при других размерах массива!
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 11:51     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #7
Infinity3000,
C
1
2
for(j=1; j<n; j++) if (a[i][j]<a[i][j-1])  break;
 if (j==n) s++;
цикл должен когда-либо закончиться и это очевидно
а когда он закончится? когда j < n станет false
а это будет когда j >= n, а поскольку j увеличивается равномерно на 1, то цикл кончится когда j == n
Infinity3000
25.03.2012, 11:53
  #8

Не по теме:

ок! не будем оффтопить, просто попробуйте приведенный выше мой код скомпилировать с мойм условие, а потом условием уважаемого Байт

sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 11:54     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #9
код товарища Байт

Infinity3000, вы не понимаете что ваше условие стоит внутри цикла и там всегда j < n?
а у товарища Байт после и это меняет дело
Миниатюры
Найти количество строк матрицы, элементы которых упорядочены по возрастанию.  
Байт
 Аватар для Байт
14347 / 9178 / 1324
Регистрация: 24.12.2010
Сообщений: 16,803
25.03.2012, 11:56     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #10
Infinity3000, рассмотрим ситуацию
C
1
2
3
int aa[5] = { 1,3,5,8,12 };
for(j=1; j<5; j++) if (aa[j] < aa[j-1]) break;
printf("j=%d\n", j);

Не по теме:

Из двух спорящих один - дурак, другой - подлец. Придется нам разыграть эти роли

Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 12:04     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #11
sandye51, посмотрите, условие один в один с вашим! (если я не где на запоролся)
Миниатюры
Найти количество строк матрицы, элементы которых упорядочены по возрастанию.   Найти количество строк матрицы, элементы которых упорядочены по возрастанию.  
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 12:05     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #12
Infinity3000, еще раз повторяю - ваше условие внутри цикла, у Байт - вне
в этом вся соль!
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 12:10     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #13
Цитата Сообщение от sandye51 Посмотреть сообщение
Infinity3000, еще раз повторяю - ваше условие внутри цикла, у Байт - вне
в этом вся соль!
ну это ж не оптимальный вариант
какой смысл
C++
1
i, j;
оюбявлять как "глобальные" для цикла? если можно сделать что бы они существовали только внутри цикла? тогда код Байт'а не подойдет!

ну а вообще да сорри погарячился, код уважаемого Байт был изначально рабочий
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 12:12     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #14
Цитата Сообщение от Infinity3000 Посмотреть сообщение
оюбявлять как "глобальные" для цикла? если можно сделать что бы они существовали только внутри цикла? тогда код Байт'а не подойдет!
ну это уже другой вопрос и тут претензии не к Байт, а к автору темы
так как у него изначально счетчики объявлены как глобальные для main
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 12:15     Найти количество строк матрицы, элементы которых упорядочены по возрастанию.
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Infinity3000
 Аватар для Infinity3000
1057 / 576 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 12:15     Найти количество строк матрицы, элементы которых упорядочены по возрастанию. #15
Думаю целесообразно выложить два варианта!

Версия Байт (точнее только циклы)

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
#include "iostream"
#include "ctime"
using namespace std;
 
int main()
{
    srand(time(0));
    int  s = 0, i, j;
    int m, n;
    int a[100][100] = {0};
    cin >> m >> n;
 
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < n; j++)
        {
            cin >> a[i][j]; //cout << (a[i][j] = rand() % 10) << "\t");
        }
        //cout << endl;
    }
    
     for(i = s = 0; i < m; i++) 
     {
        for(j = 1; j < n; j++)
        
            if (a[i][j] < a[i][j-1])
                break;
            if (j == n)
                s++;
    }
    cout << "\nNumber of lines ordered in ascending - " << s;   
    system("pause >> null");
    return 0;
}
Версия infinity3000

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
#include "iostream"
#include "ctime"
using namespace std;
 
int main()
{
        srand(time(0));
        int  s = 0;
        int m, n;
        int a[100][100] = {0};
        cin >> m >> n;
 
        for(int i = 0; i < m; i++)
        {
                for(int j = 0; j < n; j++)
                {
                        cin >> a[i][j]; //cout << (a[i][j] = rand() % 10) << "\t");
                }
                //cout << endl;
        }
        
     for(int i = 0; i < m; i++) 
         {
                for(int j = 1; j < n; j++)
                {
                        if (a[i][j] < a[i][j-1])
                        {
                                break;
                        }
                        else if (j == n - 1)
                        {
                                s++;
                        }
                }
        }
        cout << "\nNumber of lines ordered in ascending - " << s;      
        system("pause >> null");
        return 0;
}
Yandex
Объявления
25.03.2012, 12:15     Найти количество строк матрицы, элементы которых упорядочены по возрастанию.
Ответ Создать тему
Опции темы

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