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

Нахождение одинаковых строк - C++

Восстановить пароль Регистрация
 
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
29.04.2011, 19:39     Нахождение одинаковых строк #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
#include <iostream>
#include <conio.h>
#include <locale>
using namespace std;
 
void main()
{
    setlocale(LC_ALL, "Russian");
    int i,j,t;
    int mass1[4][4]={
        {4,8,9,1},
        {5,8,4,3},
        {1,7,6,4},
        {5,8,4,3}
    };
    int mass2[]={5,8,4,3};
    cout<<"Целочисленная квадратная матрица А: \n";
    for(i=0;i<4;i++){
        for(j=0;j<4;j++){
    cout << mass1[i][j]<<"  ";
        }
    cout<<"\n\n";
    }
    cout<<"\n";
 
    cout<<"Массив D: \n";
    for(t=0;t<4;t++)
        cout<<mass2[t]<<"  ";
 
    cout<<"Совпадающие строки: \n";
?????

И я не понимаю как это сделать? Каким образом можно сравнить массив и матрицу для нахождения одинаковых строк. Подскажите плиз!

 Комментарий модератора 
Используйте теги форматирования кода.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.04.2011, 19:39     Нахождение одинаковых строк
Посмотрите здесь:

Нахождение в массиве двух одинаковых чисел C++
Нахождение в структуре одинаковых элементов C++
Нахождение всех четырехзначных натуральных чисел, в записи которых нет одинаковых цифр». C++
C++ Нахождение номера столбца с максимальной серией одинаковых элементов в двумерном массиве
Написать программу, использующую стандартную функцию сравнения строк для определения среди трех строк, вводимых пользователем, одинаковых. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
29.04.2011, 19:45     Нахождение одинаковых строк #2
например так:
C++
1
2
3
4
5
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        if (a[i][j] == b[i])
}
Принцип такой, осталось только модернизировать, добавить некоторый флаг проверки на несовпадение элементов по индексу, можно заменить цикл for на while...etc

Добавлено через 15 секунд
например так:
C++
1
2
3
4
5
for (int i = 0; i < n; i++)
{
    for (int j = 0; j < m; j++)
        if (a[i][j] == b[i])
}
Принцип такой, осталось только модернизировать, добавить некоторый флаг проверки на несовпадение элементов по индексу, можно заменить цикл for на while...etc
babazoya
 Аватар для babazoya
7 / 7 / 3
Регистрация: 28.12.2010
Сообщений: 39
29.04.2011, 19:50     Нахождение одинаковых строк #3
.1234
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
29.04.2011, 23:51  [ТС]     Нахождение одинаковых строк #4
С помощью двух циклов и условия я делал, но не получалось. А что за флаги я понятия не имею. Можешь показать как будет выглядеть код на поиск строк часть программы?
Mиxaил
 Аватар для Mиxaил
530 / 435 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
30.04.2011, 00:24     Нахождение одинаковых строк #5
Вот в блокноте накатал:
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 0; i < n; i++)
{
    flag = true;
    j = 0;
    while ((j < m) && (flag))
    {
        a[i][j] != b[i] ? flag = false : j++;           
    }
    if flag
        std::cout << i << std::endl;
}
Флаг - это переменная логического типа, которая контролирует определенное действие...
В данном случае, я ее использовал во внутреннем цикле (по столбцам), дабы не делать лишние итерации...
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
30.04.2011, 00:34     Нахождение одинаковых строк #6
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
#include <iostream>
#include <algorithm>
 
int main()
{
    const int n = 5;
    int matr[n][n] =
    { 
        {1,2,3,4,5},
        {5,4,3,2,1},
        {3,2,1,4,5},
        {1,2,3,4,5},
        {4,3,2,5,1}
    };
    int arr[n] = {1,2,3,4,5};
    for(int i=0; i<n; ++i)
    {
        if(std::equal(matr[i], matr[i] + n, arr))
        {
            std::cout << "row " << i+1 << " is equal to array\n";
            std::copy(matr[i], matr[i] + n, std::ostream_iterator<int>(std::cout, " "));
            std::cout << '\n';
        }
    }
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.04.2011, 23:41     Нахождение одинаковых строк
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
Jaksn
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 114
30.04.2011, 23:41  [ТС]     Нахождение одинаковых строк #7
Спасибо всем!
Yandex
Объявления
30.04.2011, 23:41     Нахождение одинаковых строк
Ответ Создать тему
Опции темы

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