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

Найти номер строки матрицы, в которой находится самая длинная серия одинаковых элементов

04.05.2012, 14:00. Показов 22865. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот полное задание:
1) количество столбцов, содержащих хотя бы один нулевой элемент;
2) номер строки, в которой находится самая длинная серия одинаковых элементов.

с первым я разобрался, а со второй частью проблема, как нужно задать массив m[i]...

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
#include "stdafx.h"
#include <iostream.h>
#include <windows.h>
 
char bufRus[256];
 
char* Rus(const char* text) {
CharToOem(text, bufRus);
return bufRus;
}
 
void main()
{
int const n = 3;
int mas[n][n], c = 0;
cout << Rus("Введите матрицу\n");
 
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
cout << Rus("Введите элемент массива[")<<i+1<<("][")<<j+1<<("]:");
cin >> mas[i][j];
}
 
for (i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
if (mas[j][i] == 0)
{
c++;
break;
}
 
}
 
}
 
cout << Rus("Количество столбцов содержащих нулевой элемент: ") << c << endl;
 
for (i = 0; i < n; i++)
{
int m[i]; // собственно вот та самая проблема
for (int j = 0; j < n; j++)
{
if(mas[i][j] == mas[i][j+1])
{
m[i]++;
}
}
}
 
int max = m[0];
int numstr;
 
for (int i = 0; i < 5; i++)
{
if(m[i] > m[0])
{
max = m[i];
numstr = i;
}
else
{
max = m[0];
numstr = 0;
}
 
}
cout << Rus("Строка с самой длинной серией одинаковых элементов: ") << numstr << endl;
}
заранее благодарю за помощь!)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.05.2012, 14:00
Ответы с готовыми решениями:

Найти номер строки матрицы, в которой находится самая длинная серия одинаковых элементов
2.Данная прямоугольная целочисленная матрица. Определить: 1)сколько столбцов,которые содержат хотя б один нулевой элемент 2)номер...

Найти номер строки, в которой находится самая длинная серия одинаковых элементов
Доброго времени суток.Дана целочисленная прямоугольная матрица. Определить: 1.количество столбцов, содержащих хотя бы один нулевой...

Определить номер строки, в которой находится самая длинная серия одинаковых элементов
помогите студенту с решением ... 1)в целочисленной квадратной матрице определить номер строки, в которой находиться самая длинная...

9
2 / 2 / 2
Регистрация: 03.05.2012
Сообщений: 26
04.05.2012, 14:54
вот код второго пункта твоей задачи
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
int *mas1 = new int [m];
    for (int i=0;i<m;i++)
        mas1[i]=1;
 
    int k=0,k1=0;
    for (int i=0;i<n;i++)
    {
        for (j=0;j<m;j++)
        {
            if (mas[i][j]==mas[i][j+1])
                mas1[i]++;
        }
    }
    cout<<endl<<endl;
    for (i=0;i<m;i++)
        cout<<mas1[i]<<" ";
 
    int max=mas1[0],index=0;
    for (int i=1;i<m;i++)
    {
        if (max<mas1[i])
        {
                max=mas1[i];
                index=i;
        }
    }
    cout<<endl<<"count: "<<max<<endl<<"length: "<<index+1<<endl;
но тут не учтен случай когда ни в одной строке нет цепочки одинаковых символов. В случае когда в двух или более строках будет одинаковая цепочка, он выдаст первую которую встретит.

P.S. массив лучше задавать динамически
C++
1
2
3
int **mas = new int *[m];
    for (int i = 0; i < m; i++) 
    mas[i] = new int [n];
0
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
04.05.2012, 15:36  [ТС]
а возможно задать массив не динамически?
0
2 / 2 / 2
Регистрация: 03.05.2012
Сообщений: 26
04.05.2012, 17:37
можешь не динамически, просто это более лучше, не захламляешь память ненужной информацией. Вобщем дело твое как тебе легче так и делай.
0
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
04.05.2012, 18:27  [ТС]
Подскажи еще одну вещь я ввожу матрицу 112 222 331, и следующий код мне выдает что самая длинная последовательность в 1 строке, хотя ей является вторая, в остальных случаях все работает правильно, вот код:

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
int m[n];
        for (i = 0; i < n; i++)
        {
            m[i] = 0;
            for (int j = 0; j < n; j++)
            {
                if(mas[i][j] == mas[i][j+1])
                {
                    m[i]++;
                }
            }
        }
 
        int max = m[0];
        int numstr = 0;
 
        for (i = 0; i < n; i++)
        {
            if(max < m[i])
            {
                max = m[i];
                numstr = i;
            }
            else if(m[i] == 0)
            {
                cout << Rus("Â ñòðîêå oäèíàêîâûõ ýëåìåíòîâ íåò!\n");
            }
        }
 
        cout << Rus("Ñòðîêà ñ ñàìîé äëèííîé ñåðèåé îäèíàêîâûõ ýëåìåíòîâ: ") << numstr << endl;
}
Добавлено через 4 минуты
хотя нет, и при вводе 112 334 444 выдает что самая длинная во 2 строке...

Добавлено через 23 минуты
сейчас посмотрел твой вариант, у тебя тоже самое выдает...
0
2 / 2 / 2
Регистрация: 03.05.2012
Сообщений: 26
04.05.2012, 18:47
проверил у меня эти примеры работают, все мои примеры работают вот короче код полностью сам проверь
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
#include <iostream>
#include <cstdlib>
#include <time.h>
 
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    int n=5,m=5,j=0,i=0;
    int a=0,b=5;
    srand(time(0));
 
    int **mas = new int *[m];
    for (int i = 0; i < m; i++) 
    mas[i] = new int [n];
 
    for (int i=0;i<n;i++)
        for (int j=0;j<m;j++)
        {
            mas[i][j]=a+rand()%(b-a);
            //cin>>mas[i][j];
        }
 
    for (int i=0;i<n;i++)
        for (j=0;j<m;j++)
        {
            cout<<mas[i][j]<<" ";
            if (j==n-1)
                cout<<endl;
        }
 
    int *mas1 = new int [m];
    
    for (int i=0;i<m;i++)
        mas1[i]=1;
 
    //int k=0,k1=0;
    for (int i=0;i<n;i++)
        for (j=0;j<m;j++)
        {
            if (mas[i][j]==mas[i][j+1])
                mas1[i]++;
        }
 
    cout<<endl<<endl;
 
    for (i=0;i<m;i++)
        cout<<mas1[i]<<" ";
 
    int max=mas1[0],index=0;
    for (int i=1;i<m;i++)
    {
        if (max<mas1[i])
        {
                max=mas1[i];
                index=i;
        }
    }
    cout<<endl<<"count: "<<max<<endl<<"length: "<<index+1<<endl;
 
    system ("PAUSE");
    return 0;
}
0
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
04.05.2012, 20:05  [ТС]
я доделал, только чуть по другому)) но все ровно спасибо, помоги еще в последнем, вот код:

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
int const l = n - 1;
        int m[l];
        for (i = 0; i < l; i++)
        {
            m[i] = 0;
            for (int j = 0; j < l; j++)
            {
                if(mas[i][j] == mas[i][j+1])
                {
                    m[i]++;
                }
            }
        }
 
        int max = m[0];
        int numstr = 0;
 
        for (i = 0; i < n; i++)
        {
            if(max < m[i])
            {
                max = m[i];
                numstr = i;
            }
        }
 
        cout << Rus("Строка с самой длинной последовательностью: ") << numstr << endl;
        
        int sum = 0;
        for (i = 0; i < l; i++)
        {
            sum += m[i];
        }
 
        if(sum == 0)
        {
            cout << Rus("Последовательностей с одинаковыми элементами нет!\n");
        }
}
а как сделать так, когда ввожу 123456789, т.е. нет одинаковых, что бы не выдавало numstr = 2, чтобы если их нет, то ничего не выводить...
0
2 / 2 / 2
Регистрация: 03.05.2012
Сообщений: 26
04.05.2012, 21:44
ну самый простой способ когда делаешь вот это действие
C++
1
2
3
{
 if(mas[i][j] == mas[i][j+1])
 {
вставь флаг
C++
1
2
3
4
5
6
7
8
9
10
bool flag=false;
{
 if(mas[i][j] == mas[i][j+1])
flag=true;
.......
if (!flag)
cout << Rus("Последовательностей с одинаковыми элементами нет!\n");
else
cout << Rus("Строка с самой длинной последовательностью: ") << numstr << endl;
 {
0
1 / 1 / 0
Регистрация: 11.11.2011
Сообщений: 49
04.05.2012, 22:24  [ТС]
черт, точно) тупонул))
0
0 / 0 / 0
Регистрация: 11.09.2013
Сообщений: 8
11.09.2013, 17:25
Здравствуйте, подниму старую тему, либо я не понял задания, либо алгоритма, но код предложенный выше не будет работать верно: например

0 0 1 1 0 0 0 0 3 4 1 2 3 2 значение m[0]=5
1 1 1 2 1 3 2 2 0 0 5 5 7 7 значение m[1]=6

но самая длинная серия в первой строке
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.09.2013, 17:25
Помогаю со студенческими работами здесь

Дана целочисленная прямоугольная матрица. Определить номер строки, в которой находится самая длинная серия одинаковых элементов
Дана целочисленная прямоугольная матрица. Определить номер строки, в которой находится самая длинная серия одинаковых элементов.

Номер столбца, в которой находится самая длинная серия одинаковых элементов.
Дана целочисленая прямоугольная матрица. Определить: 1)количество строк,содержащих хотя бы один нулевой элемент: 2)Номер столбца,в...

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

Номер строки, в которой самая длинная серия одинаковых злементов
Написать программу, определяющую, в какой строке целочисленной матрицы m x n находится самая длинная серия одинаковых злементов. Под серией...

Двумерный массив: строка, в которой находится самая длинная серия одинаковых элементов
Дана целочисленная прямоугольная матрица. Определить: 1) Количество столбцов, содержащих хотя бы один нулевой элемент. 2)Номер...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru