Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2010, 12:57   #1
~Annie~
Пользователь
 
Аватар для ~Annie~
 
Регистрация: 21.10.2010
Сообщений: 14
По умолчанию Найти похожие строки в матрице. C#

Добрый день! Не подскажите, как в С# найти количество строк матрицы (двумерного массива), похожих на 1 строку.
Вот код, только он не очень работает.
Код:
	const int m = 4, n = 4;
            int[,] a = new int[m, n]{
                {9,9,9,9},
                {1,1,1,1},
                {9,9,9,9},
                {9,9,9,9},};
            Console.WriteLine("Ishodnyi massiv");
            for (int i = 0; i < m; ++i)
            {    for (int j = 0; j < n; ++j)  
            		Console.Write("\t" + a[i, j]);
            		Console.WriteLine();   }
            
            int c=0;
            for(int i=1;i<m;++i)
            {for(int j=0;j<n;++j)
            		 if (a[1,j]==a[i,j]) c++;}
            Console.WriteLine("Kol-vo strok, pohojih na 1 stroku= "+c);
            Console.ReadKey();
Уже где только не искала. Может кто знает?
~Annie~ вне форума Ответить с цитированием
Старый 10.11.2010, 13:05   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Код:
{
                {9,9,9,9},
                {1,1,1,1},
                {9,9,9,9},
                {9,9,9,9},};
Вы уверены, что здесь должны быть фигурные скобки, а не обычные? Честно говоря, сам недавно начал учить C#, поэтому точно не знаю.
_-Re@l-_ вне форума Ответить с цитированием
Старый 10.11.2010, 13:09   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

скобки верны, хотя меня смущает немного запятая после 4 строки(не знаю нужна ли)

а вообще что значит не очень работает?
да и кстати какой критерий похожести?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.11.2010, 13:22   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
           
int c2=0;
for(int i=1;i<m;++i)  { c=0;
  for(int j=0;j<n;++j) if (a[1,j]==a[i,j]) c++;
  c2+=(c==n-1)?1:0;
}
с2 - кол-во строк.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2010, 17:17   #5
~Annie~
Пользователь
 
Аватар для ~Annie~
 
Регистрация: 21.10.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
скобки верны, хотя меня смущает немного запятая после 4 строки(не знаю нужна ли)

а вообще что значит не очень работает?
да и кстати какой критерий похожести?
Cо скобками и запятыми все правильно. Выводится матрица 4х4 ))
Строки считаются похожими, если совпадает множество их элементов.
Ошибка где-то в if или во втором цикле.
~Annie~ вне форума Ответить с цитированием
Старый 10.11.2010, 17:30   #6
~Annie~
Пользователь
 
Аватар для ~Annie~
 
Регистрация: 21.10.2010
Сообщений: 14
По умолчанию

Stilet, ваш код не работает ((
~Annie~ вне форума Ответить с цитированием
Старый 10.11.2010, 18:47   #7
Casper-SC
Форумчанин
 
Регистрация: 04.07.2007
Сообщений: 549
По умолчанию

Так сойдёт =) ? Только у меня не похожие строки, а полностью совпадающие.
Код:
    class Program
    {
        static void Main(string[] args)
        {
            const int m = 8, n = 4;
            int[,] a = new int[m, n]{ //матрица увеличена для наглядности
                {9,9,9,9},
                {1,1,1,1},
                {1,1,3,2},
                {5,9,9,9},
                {0,9,5,9},
                {9,9,9,0},
                {9,9,9,9},
                {9,9,9,9}}; //последняя запятая вообще не нужна была

            Console.WriteLine("Исходный массив");
            for (int i = 0; i < m; ++i)
            {
                for (int j = 0; j < n; ++j)
                    Console.Write("\t" + a[i, j]);
                Console.WriteLine();
            }

            bool flag = false;
            int c = 0;
            for (int z = 1; z < m; z++) //начинаем проверку с второй строки (первая строка под индексом 0)
            {
                flag = false; //сбрасываем значение флага, для проверки следующей строки
                for (int f = 0; f < n; f++) //проходимся по каждому эл-ту строки слева направо
                {
                    if (a[0, f] == a[z, f]) //если все элементы совпадут, то flag так и останется true
                        flag = true;
                    else //если хоть один символ не совпал, то прерываем 
                         //дальнейшую проверку и flag'у присваиваем false
                    {
                        flag = false;
                        break; 
                    }
                }
                if (flag) //если в цикле все элементы совпали, значит flag не переключался в false
                    c++; //прибавим 1 к кол-ву совпавших строк
            }
            Console.WriteLine("Кол-во полностью совпадающих строк в матрице со строкой 1 = {0}", c);
            Console.ReadKey();
        }
    }

Последний раз редактировалось Casper-SC; 10.11.2010 в 19:36.
Casper-SC вне форума Ответить с цитированием
Старый 11.11.2010, 17:19   #8
~Annie~
Пользователь
 
Аватар для ~Annie~
 
Регистрация: 21.10.2010
Сообщений: 14
По умолчанию

Casper-SC, спасибо вам большое )))
Все работает.
Еще раз спасибо ))
~Annie~ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В матрице упорядочить строки по возрастанию максимальных элементов. Помогите найти ошибку. amerhant Помощь студентам 3 16.01.2010 19:39
Как найти абсолютно одинаковые строчки и удалить их, и объединить очень похожие? dronkailp Microsoft Office Excel 4 28.10.2009 16:59
Похожие строки матрицы Kolianno Общие вопросы C/C++ 1 01.06.2009 19:10
Найти номера(индексы) в матрице хотябы одной строки или хотя бы одного столбца не содержащих еденицы Сергей Попов Паскаль, Turbo Pascal, PascalABC.NET 1 28.11.2008 08:59
удалить похожие строки ZORRO2005 Microsoft Office Excel 0 28.11.2006 22:03