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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Janat
0 / 0 / 0
Регистрация: 20.03.2012
Сообщений: 17
#1

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

25.03.2012, 10:21. Просмотров 1457. Ответов 14
Метки нет (Все метки)

помогите докончить 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];
помогите кто знает!
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.03.2012, 10:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Найти количество строк матрицы, элементы которых упорядочены по возрастанию. (C++):

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

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

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

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

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

Найти и вывести на экран: количество и номера строк, у которых элементы упорядочены по убыванию - C++
uses crt; const n = 10; var mas : array of string; i, j, num : integer; begin clrscr; writeln('Введите массив:'); for...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Байт
Эксперт C
16056 / 10325 / 1540
Регистрация: 24.12.2010
Сообщений: 19,446
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;
2
Infinity3000
1058 / 577 / 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;
}
0
Infinity3000
1058 / 577 / 24
Регистрация: 03.12.2009
Сообщений: 1,255
25.03.2012, 11:33 #4
Результат
0
Миниатюры
Найти количество строк матрицы, элементы которых упорядочены по возрастанию.  
Байт
Эксперт C
16056 / 10325 / 1540
Регистрация: 24.12.2010
Сообщений: 19,446
25.03.2012, 11:34 #5
Цитата Сообщение от Infinity3000 Посмотреть сообщение
Байт, все правильно только сдесь выходишь за пределы массива
Сообщение от Байт
if (j==n)
Чего это вдруг? Никуда я не выхожу. Условие j==n означает, что цикл прокрутился до конца и закончился именно потому, что условие j < n не выполняется, а не по Бреку.
У тебя тоже правильно, но я долго смотрел, прежде чем это понял. Мой способ более "классический", что ли.
1
Infinity3000
1058 / 577 / 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++;
Тоже саммое будет происходить и при других размерах массива!
0
sandye51
программист С++
684 / 586 / 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
1
Infinity3000
25.03.2012, 11:53
  #8

Не по теме:

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

0
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 11:54 #9
код товарища Байт

Infinity3000, вы не понимаете что ваше условие стоит внутри цикла и там всегда j < n?
а у товарища Байт после и это меняет дело
1
Миниатюры
Найти количество строк матрицы, элементы которых упорядочены по возрастанию.  
Байт
Эксперт C
16056 / 10325 / 1540
Регистрация: 24.12.2010
Сообщений: 19,446
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);

Не по теме:

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

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

ну а вообще да сорри погарячился, код уважаемого Байт был изначально рабочий
1
sandye51
программист С++
684 / 586 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
25.03.2012, 12:12 #14
Цитата Сообщение от Infinity3000 Посмотреть сообщение
оюбявлять как "глобальные" для цикла? если можно сделать что бы они существовали только внутри цикла? тогда код Байт'а не подойдет!
ну это уже другой вопрос и тут претензии не к Байт, а к автору темы
так как у него изначально счетчики объявлены как глобальные для main
1
Infinity3000
1058 / 577 / 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;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.03.2012, 12:15
Привет! Вот еще темы с ответами:

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

Определить количество строк матрицы, которые упорядочены по возрастанию - C++
В матрице А(n x n) определить количество строк ,которые упорядочены по возрастанию.Использовать подпрограмму проверки упорядоченности...

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

Файл: Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию - C++
помогите написать программу Для заданной в файле матрицы A (n на m) определить количество строк, которые упорядочены по возрастанию


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.03.2012, 12:15
Ответ Создать тему
Опции темы

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