Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/56: Рейтинг темы: голосов - 56, средняя оценка - 4.86
7 / 7 / 5
Регистрация: 17.02.2012
Сообщений: 119

Поиск одинаковых элементов в строке матрицы

28.03.2014, 02:16. Показов 11736. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Подскажите пожалуйста, мне нужно найти количество одинаковых элементов в строке матрицы.
Я попытался написать программу, но она не работает так как надо.
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
#include <iostream>
#include <time.h>
using namespace std;
const int n = 3, m = 4;
int main()
{
    int mas[n][m];
    int kol;
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            mas[i][j] = rand()%10;
    }
 
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << mas[i][j] << " ";
        cout << endl;
    }
    
    for (int i = 0; i < n; i++)
    {
        kol = 0;
        for (int j = 0; j < m; j++)
            for (int k = j; k < m; k++)
            {
                if (mas[i][j] == mas[i][k]) kol++;
            }
        cout << "Кол-во в " << i << "= " << kol << endl;
    }
    system("pause");
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.03.2014, 02:16
Ответы с готовыми решениями:

Количество одинаковых элементов в одномерном массиве (строке матрицы)
Надо найти кол-во одинаковых элементов в строке матрицы или одномерном массиве , без разницы, самое главное алгоритм и принцип , ОТВЕТ: 6]....

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

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

7
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
28.03.2014, 06:44
А если так:
C++
1
2
3
4
5
6
7
8
9
10
for (int i = 0; i < n; i++)
    {
        kol = 0;
        for (int j = 0; j < m; j++)
        for (int k = 0; k < m; k++)
        {
                if (mas[i][j] == mas[i][k] && j!=k) kol++;
        }
        cout << "Кол-во в " << i << "= " << kol << endl;
    }
НО такой способ сработает только, если цифра будет попадаться не более двух раз.
0
7 / 7 / 5
Регистрация: 17.02.2012
Сообщений: 119
31.03.2014, 10:33  [ТС]
как вариант конечно можно но...в строке то может и больше двух раз встречаться одна цифра.
0
 Аватар для Anton_Kretov
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
31.03.2014, 13:00
Лучший ответ Сообщение было отмечено Koshachek как решение

Решение

Предположим, есть ряд: 5, 4, 2, 5, 5, 5, 2
Программа должна вывести 4? (4 пятерки) 2? (2 разных числа одинаковы) 6? (сумма 4-х пятерок и 2-х двоек)

Добавлено через 21 минуту
Если вас интересует ответ 2 (два разных числа одинаковые (т.е. в ряду есть такая последовательность - "...5...2..25..2...2 (как пример))), то вот вам рабочий код:
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int NUMBER_OF_COLUMNS = 10, NUMBER_OF_FIELDS = 3;
 
int main()
{
    int mas[NUMBER_OF_FIELDS][NUMBER_OF_COLUMNS];
    int *arrayOfEqualNumbers = new int[NUMBER_OF_COLUMNS / 2];
    srand(time(NULL));
     for (int i = 0; i < NUMBER_OF_FIELDS; i++)
    {
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++)
            mas[i][j] = rand() %10;
    }
 
    for(int i = 0; i < NUMBER_OF_FIELDS; i++) {
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            cout << mas[i][j] << " ";
        }
        cout << "\n";
    }
 
    int numberOfEqualElements = 0;
    int numberOfField;
    cout << "Choose Field. Min - 0, Max - " << NUMBER_OF_FIELDS - 1 << ": "; cin >> numberOfField;
 
    bool firstTime = true;
    int a = 0;
    for(int i = 0; i < NUMBER_OF_COLUMNS; i++) {
        for(int j = i + 1; j < NUMBER_OF_COLUMNS; j++) {
                if((mas[numberOfField][i] == mas[numberOfField][j]) && firstTime) {
                    arrayOfEqualNumbers[a] = mas[numberOfField][j];
                    a++;
                    firstTime = false;
                }
                if(mas[numberOfField][i] == mas[numberOfField][j]) {
                    for(int k = 0; k <= a; k++) {
                        if(mas[numberOfField][j] == arrayOfEqualNumbers[k]) break;
                        if((k == a) && mas[numberOfField][j] != arrayOfEqualNumbers[k]) {
                            arrayOfEqualNumbers[a] = mas[numberOfField][j];
                            a++;
                            break;
                        }
                    }
                }
            }
        }
 
    cout << "\n" << "NumberOfEqualElements = " << a;
    return 0;
}
Добавлено через 1 минуту
Код непонятен - прокомментирую.

Добавлено через 18 минут
Дописал подсчет кол-ва повторений каждого числа в строке. Все прекрасно работает.
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
const int NUMBER_OF_COLUMNS = 10, NUMBER_OF_FIELDS = 3;
 
int main()
{
    int mas[NUMBER_OF_FIELDS][NUMBER_OF_COLUMNS];
    int **arrayOfEqualNumbers = new int*[NUMBER_OF_COLUMNS / 2];
    for(int i = 0; i < NUMBER_OF_COLUMNS / 2; i++)
        arrayOfEqualNumbers[i] = new int[2];
 
    srand(time(NULL));
     for (int i = 0; i < NUMBER_OF_FIELDS; i++)
    {
        for (int j = 0; j < NUMBER_OF_COLUMNS; j++)
            mas[i][j] = rand() %10;
    }
 
    for(int i = 0; i < NUMBER_OF_FIELDS; i++) {
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            cout << mas[i][j] << " ";
        }
        cout << "\n";
    }
 
    int numberOfEqualElements = 0;
    int numberOfField;
    cout << "Choose Field. Min - 0, Max - " << NUMBER_OF_FIELDS - 1 << ": "; cin >> numberOfField;
 
    bool firstTime = true;
    int numberOfEqualities = 0;
    for(int i = 0; i < NUMBER_OF_COLUMNS; i++) {
        for(int j = i + 1; j < NUMBER_OF_COLUMNS; j++) {
                if((mas[numberOfField][i] == mas[numberOfField][j]) && firstTime) {
                    arrayOfEqualNumbers[numberOfEqualities][0] = mas[numberOfField][j];
                    numberOfEqualities++;
                    firstTime = false;
                }
                if(mas[numberOfField][i] == mas[numberOfField][j]) {
                    for(int k = 0; k <= numberOfEqualities; k++) {
                        if(mas[numberOfField][j] == arrayOfEqualNumbers[k][0]) break;
                        if((k == numberOfEqualities) && mas[numberOfField][j] != arrayOfEqualNumbers[k][0]) {
                            arrayOfEqualNumbers[numberOfEqualities][0] = mas[numberOfField][j];
                            numberOfEqualities++;
                            break;
                        }
                    }
                }
            }
        }
 
    cout << "\n" << "NumberOfEqualElements = " << numberOfEqualities;
    cout << "\n" << "Now we will count each element...";
    for(int i = 0; i <= numberOfEqualities; i++) {
            int temp = 0;
        for(int j = 0; j < NUMBER_OF_COLUMNS; j++) {
            if(arrayOfEqualNumbers[i][0] == mas[numberOfField][j]) {
                temp++;
                arrayOfEqualNumbers[i][1] = temp;
            }
        }
    }
 
    for(int i = 0; i < numberOfEqualities; i++) {
        cout << "\n\n" << "So, number of " << arrayOfEqualNumbers[i][0] << " in this field is " << arrayOfEqualNumbers[i][1];
    }
 
    for (int i = 0; i < NUMBER_OF_COLUMNS / 2; i++)
        delete []arrayOfEqualNumbers[i];
 
    return 0;
}
0
7 / 7 / 5
Регистрация: 17.02.2012
Сообщений: 119
31.03.2014, 22:22  [ТС]
Здравствуйте! Спасибо большое за Ваш труд; меня интересовало следующее: есть матрица, в ее строках встречаются одинаковые числа. Мне надо было подсчитать кол-во одинаковых цифр в каждой строке. Допустим есть строка: 5 6 5 4 1 надо было вывести 2 (2 пятерки). Если можно прокомментируйте код пожалуйста. Очень хочется глубже разобраться, а то я всю голову сломал этой задачей - не смог придумать алгоритм.
0
 Аватар для Anton_Kretov
89 / 51 / 15
Регистрация: 26.06.2013
Сообщений: 179
31.03.2014, 22:26
Koshachek, спасибо, будет сложно, конечно, все это еще раз описать и разобрать: потребуется время. Если оно будет завтра, то напишу.
1
7 / 7 / 5
Регистрация: 17.02.2012
Сообщений: 119
31.03.2014, 22:33  [ТС]
Благодарю
0
0 / 0 / 0
Регистрация: 11.12.2017
Сообщений: 24
05.05.2018, 13:19
А для столбцов как можно переделать этот код?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
05.05.2018, 13:19
Помогаю со студенческими работами здесь

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

Поиск одинаковых элементов в строке
Добрый день! Помогите, пожалуйста, с решением задачи. Есть задача. Посчитать сколько раз в строке встречается каждый её элемент. ...

Поиск одинаковых элементов матрицы
1)В таблице из 20 чисел,лежащих в промежутке от -50 до 50,заменить все отрицательные числа на их абсолютные значения. 2)матрица...

Матрицы. Поиск одинаковых элементов в матрице
Дана матрица А(nxn).Написать программу поиска одинаковых элементов в этой матрице

Упорядочить строки матрицы по возрастанию количества одинаковых элементов в строке
Дана целочисленная матрица A. Получить целочисленную матрицу B путём упорядовачиния строк исходной матрицы по возрастанию количества...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru