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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.11.2010, 21:24   #11
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

можно узнать? каким образом узнать, сколько раз каждая строка матрицы повторяется в двумерном массиве?
имеется в виду следующее
1 5 0 0 0
1 2 3 0 0
1 2 3 0 0
1 5 0 0 0
1 2 3 0 0
1 2 5 0 0
1 ая = 2 раза
2 ая = 3 раза
3 ая = 3 раза
4 ая = 2 раза
5 ая = 3 раза
6 ая = 1 раз
Помогите, чем можете
Lodyr вне форума Ответить с цитированием
Старый 24.11.2010, 22:32   #12
LeBron
Форумчанин
 
Регистрация: 10.10.2009
Сообщений: 680
По умолчанию

Вот видите, а уже говорили, что чуть ли не вешаться хотите, так как ничего не понимаете и не получается) Идею поняли правильно. А по поводу подсчета количества равных - можно даже просто за куб проверить - каждую строку сравнивать с каждой полностью, если хоть одна пара чисел на соответствующих позициях не совпадает, то строки не совпадают. Можно завести массив булей 2мерный, и если есть неподходящая пара в строках a,b, то в массиве эл (a,b) делать 1 и эл (b,a) тоже.
Потом для каждой строки ответом будет количество нолей в "ее" строке в матрице булей.

Если надо быстрее - можете поразрядкой посортировать строки)
LeBron вне форума Ответить с цитированием
Старый 25.11.2010, 13:55   #13
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Спасибо за отзывчивость, только мне показалось это все слишком сложным.
Давайте я сегодня вечером покажу свой кусок кода, который ищет количество повторений для каждой строки матрицы, ищет то ищет да неправильно...Думаю отредактировать в человеческом виде.
Lodyr вне форума Ответить с цитированием
Старый 25.11.2010, 20:40   #14
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Код:
j=0;int kol=0;
do
{for (i=n-1; i>=0; i--)
for (t=2; t<n; t++)
{
    if (matrix[i][t]==matrix[j][t])
    {
        kol=kol+1;
    }
}
cout<<j<<" "<<"stroka povtoraetsa"<<" "<<kol/(n/2)<<" "<<"raz"<<endl;
j++; kol=0;
}
while (j<n);
это продолжение к моей программе по нахождению повторений каждой строки в матрице
проблема в том, что подсчет неправильный, не знаю где ошибка....
Lodyr вне форума Ответить с цитированием
Старый 26.11.2010, 21:07   #15
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

задачу решил, осталась самая малая часть
нахождение максимальной неизменяющейся длины элементов массива
имеется в виду следующее:
12 1 2 3
45 1 3 5
55 1 5 11
18 1 2 3
=======
на месте единичек пишу количество повторений каждой строки матрицы
12 2 2 3
45 1 3 5
55 1 5 11
18 2 2 3
потом сортирую элементы 1 и 2 столбца по возрастанию числа повторений, а именно
45 1 3 5
55 1 5 11
12 2 2 3
18 2 2 3
вот сейчас нужно найти максимальное неизменяющееся подмножество по числу сравнений, есть какие-нибудь предложения? знаю, что метод тупой, обещаю привести программу в божеский вид.
Lodyr вне форума Ответить с цитированием
Старый 27.11.2010, 21:38   #16
Lodyr
Пользователь
 
Регистрация: 15.12.2009
Сообщений: 69
По умолчанию

Код:
#include <iostream>
#include <cmath>
using namespace std;

bool isSimple(int a)
{for (int i=2; i<=a/2; ++i)
    {
        if (a%i==0) return false;
    }
return true;
}

bool isProst(int a)
{short r; int d;
if (a<2) return false;
else if (a==2) return true;
else if (a%2==0) return false;
else
{
    r=sqrt(a);
    d=3;
    while ((a%d!=0)&&(d<=r)) {d=d+2;}
    if (d>r) return true;
    else return false;
}
}

int main()
{int a,j,p,n,i,k,t;
double matrix[10][10];
cout<<"vvedite n"<<endl;
cin>>n;
for (k=0; k<n; k++)
for (p=0; p<n; p++)
{
    matrix[k][p]=0;
}
k=0;
for (j=1; j<=n; j++)
{cout<<"vvedite"<<" "<<j<<" "<<"element"<<endl; cin>>a;
t=0; matrix[k][t]=a;
for (i=1; i<=a/2; ++i)
{
    if (a%i==0 && isSimple(i))
    {cout<<i<<" "; t=t+1; matrix[k][t]=i;}
}
if (isProst(a)==true)
{cout<<a; t=t+1; matrix[k][t]=a;}
k=k+1;
cout<<endl;
}
for (k=0; k<n; ++k)
{
for (t=0; t<n; ++t)
cout<<matrix[k][t]<<" ";
cout<<endl;
}
j=0; int kol=0;
 while (j<n)
 {for (i=0; i<n; i++)
 {
bool bo=true;
for (t=2; t<n; t++)
{if (matrix[i][t]!=matrix[j][t]) bo=false;}
if (bo) kol++;
}
cout<<j<<" "<<"stroka povtoraetsa"<<" "<<kol<<" "<<"raz"<<endl;
matrix[j][1]=kol;
kol=0; j++;
}
for (k=0; k<n; ++k)
{
for (t=0; t<n; ++t)
cout<<matrix[k][t]<<" ";
cout<<endl;
}
for(int i=n-1; i>0; i--)
for(int j=0; j<i; j++)
if (matrix[j][1]>matrix[i][1])
{
    swap(matrix[j][1],matrix[i][1]);
    swap(matrix[j][0],matrix[i][0]);
}
cout<<endl;
for (k=0; k<n; ++k)
{
for (t=0; t<n; ++t)
cout<<matrix[k][t]<<" ";
cout<<endl;
}
kol=0; int c=0;
int kmax=1;
for (i=0; i<n-1; i++)
if (matrix[i][1]!=0)
{
    kol=1; for (j=i+1; j<n; j++)
    if (matrix[i][1]==matrix[j][1])
    {
        matrix[j][1]=0;
        kol++;
        if (kmax<kol)
        {
        kmax=kol;
        }
        if (matrix[i][1]>1)
        c=matrix[i][1];
        }
    cout<<c<<":"<<kol<<endl;
}
cout<<endl;
cout<<c<<":"<<kmax<<endl;
cout<<"maximalnoe podmnoshestvo"<<endl;
==================вот тут решается неправильно =>=====
int z=0;
do
{
    if (matrix[z][1]==c)
    {cout<<matrix[z][0]<<" ";}
    z++;
}
while (z<n);
return 0;
}
ошибка в последнем выводе...
пример 4 элемента = 12 6 18 и 55
выдать должен 12 6 18, а выдает только одну цифру = 12
подскажите, в чем ошибка?
Lodyr вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нахождение максимального подмножества Lodyr Общие вопросы C/C++ 0 10.11.2010 23:09
Поиск по БД jaxik БД в Delphi 8 08.09.2010 03:41
поиск spree Microsoft Office Excel 22 16.11.2009 15:08
Поиск Volkogriz Общие вопросы Delphi 5 22.04.2008 10:59
Помогите! Множества, подмножества в Bisual C++ 6 VBlond Помощь студентам 1 28.11.2007 20:00