Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Sergeymd
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 45
#1

Как представить в c++ - C++

26.09.2009, 17:48. Просмотров 469. Ответов 7
Метки нет (Все метки)

дана к примеру матрица:
Код
a  b  c  d  e  f
1, 0, 0, 1, 0, 1, a
0, 1, 1, 0, 0, 1, b
0, 1, 1, 0, 0, 0, c
1, 0, 0, 1, 0, 1, d
0, 0, 0, 0, 1, 0, e
1, 1, 0, 1, 0, 1  f

Необходимо найти начальное покрытие ну то есть оно ищется так: построчно просматривается матрица и где есть единица составляется пара из строки и столбца

a,adf - 1-ая строка и 1-ый и 4-ый и 6-ый столбцы

Вот оно найдено: C0={(a,adf),(b,bcf),(c,bc),(d,adf),(e,e),(f,abdf)}

Так вот вопрос как бы мне это оформит в c++ , какой тип данных ,ну то есть я могу сделать массив arr[5][5] и туда это все помещать,но там будут оставаться не заполненные области т.к. эл-ов не равное кол-во.

Мне просто потом нужно работать с этими группами искать их пресечение, объединение и т.д
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2009, 17:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как представить в c++ (C++):

Как можно представить множества как вектора произвольной длины - C++
Собственно в названии всё сказано.. Не совсем понимаю как это можно представить на C++.. если имеется в виду массив, то понятно, но...

Как представить дерево - C++
Как в с++ представить дерево состоящее из 15 вершин и трех внутренних узлов? Добавлено через 3 часа 29 минут Пожалуйста помогите!

Представить Ресурс как Handle - C++
Можно ли представить ресурс встроенный в модуль, как HANDLE hfile, который можно было читать через ReadFile, и получать размер через...

Как представить const из delphi в с++ - C++
Есть код на делфи, надо сделать аналогичный но на с++. Как представить следующую запись в Visual c++. const A $FFFF

Как можно представить дерево - C++
Как можно представить дерево в с.с++?

Как можно представить себе поток? - C++
Как можно представить себе потоки в С++? В книге конечно разъясняют, но ориентируются видимо не на таких гуманитариев, как я. ...

7
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
26.09.2009, 18:47 #2
C++
1
typedef std::vector<std::pair<int, std::vector<int> > > YOU_TYPE
попробуй так, похоже на правду, но не проверял
1
Sergeymd
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 45
26.09.2009, 19:43  [ТС] #3
TanT, замудрено однако ну вектор я еще встречал а че такое pair

Добавлено через 48 минут
эй люди неужели нету еще вариантов
0
TanT
эволюционирую потихоньку
466 / 464 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
26.09.2009, 20:30 #4
C++
1
2
3
4
struct{
int numb;                          
int one[ширина матрицы];
}YOU_STRUCT;
будешь заполнять массив не до конца, можешь изначально проинициализировать его любой отдичной от единицы цифрой и как накнёшься на неё в процессе обработки остановишь перебор.
Это алтернативный вариант без динамического выделения памяти при нахождении единицы
P.S. pair - Пара —это просто шаблонная структура, которая содержит два по-
ля, возможно, различных типов. Поля имеют названия first и second.
1
Sergeymd
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 45
26.09.2009, 20:56  [ТС] #5
вот сделал вот так заношу наши отображения в массив c построчно образуя пары {(0,035);(1,125) } и т.д. то только у меня в некоторых местах -1 которым я про инициализировал присутствует.
вопрос:Как в общем удалить из двумерного массива int c[6][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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <set>
#include <algorithm>
#include <vector> 
using namespace std;
 
int main()
{
    
//начальная матрица
     int m[6][6]={0, 1, 1, 0, 1, 0,
                  1, 0, 0, 1, 1, 0,
                  1, 0, 0, 1, 1, 1,
                  0, 1, 1, 0, 1, 0,
                         1, 1, 1, 1, 0, 1,
                         0, 0, 1, 0, 1, 0};
 
     int c[6][7]; //тут будет наше отображение
     int i,j,x,y,flag=0;
      
//инициализируем все '-1'-ми
  for(i=0;i<6;i++)
      for(j=0;j<7;j++)
          c[i][j]=-1;
//инвертируем матрицу
  for(i=0;i<6;i++)
      for(j=0;j<6;j++)
       if(m[i][j]==1) m[i][j]=0;
       else if(m[i][j]==0) m[i][j]=1;
 
//создаем начальное покрытие C
   for(i=0;i<6;i++)
      for(j=0;j<6;j++)
      {
                 if(m[i][j]==1)
                   {
            if(flag==0)
            {
                c[i][j]=i;
                c[i][j+1]=j;
                flag++;
            }
                                  else c[i][j+1]=j;
           if(j==5) flag=0;
                      }
       if(j==5)flag=0;
      }
 
 
      //вывод
 for(i=0;i<6;i++)
      for(j=0;j<7;j++)
          cout<<c[i][j]<<endl;
return 0;
}
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
26.09.2009, 21:17 #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
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <cstdlib>
#include <ctime>
 
#define SIDE 6
    
using namespace std;
 
int main(){
    int m[SIDE][SIDE];
    int i,j;
    
    srand(time(NULL));
    
    for ( i = 0; i < SIDE; i++ )
        for ( j = 0; j < SIDE; j++ )
            m[i][j] = rand() % 2;
    
    cout << "Array:" << endl;
    cout << "  ";
    for ( i = 0; i < SIDE; i++ )
        cout << ((char)(i + 'a')) << ' ';
    cout << endl;
    for ( i = 0; i < SIDE; i++ ){
        cout << ((char)(i + 'a')) << ' ';
        for ( j = 0; j < SIDE; j++ )
            cout << m[i][j] << ' ';
        cout << endl;
    }
    
    cout << "Non zero cells:" << endl;
    for ( i = 0; i < SIDE; i++ )
        for ( j = 0; j < SIDE; j++ )
            if ( m[i][j] )
                cout << '[' << ((char)(i + 'a')) << "][" << ((char)(j + 'a')) << ']' << endl;
    
    return 0;
}
а, не так чуть-чуть. вывод щас подправлю...
1
Sergeymd
0 / 0 / 0
Регистрация: 13.09.2009
Сообщений: 45
26.09.2009, 21:35  [ТС] #7
easybudda, спасибо оригинальненько, но мне бы это куда то в массив загнать )) или куда то еще а то ведь надо еще пресечение объединение этих пар мутить
0
easybudda
Модератор
Эксперт CЭксперт С++
9698 / 5648 / 964
Регистрация: 25.07.2009
Сообщений: 10,863
26.09.2009, 21:49 #8
Sergeymd, Ну Вы определитесь как-нибудь, а пока немного мудрёно, но примерно, как в задании:
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>
 
#define SIDE 6
    
using namespace std;
 
int main(){
    int m[SIDE][SIDE];
    int i,j;
    bool flag, rows_befor;
        
    srand(time(NULL));
    
    for ( i = 0; i < SIDE; i++ )
        for ( j = 0; j < SIDE; j++ )
            m[i][j] = rand() % 2;
    
    cout << "Array:" << endl;
    cout << "  ";
    for ( i = 0; i < SIDE; i++ )
        cout << ((char)(i + 'a')) << ' ';
    cout << endl;
    for ( i = 0; i < SIDE; i++ ){
        cout << ((char)(i + 'a')) << ' ';
        for ( j = 0; j < SIDE; j++ )
            cout << m[i][j] << ' ';
        cout << endl;
    }
    
    cout << "Non zero cells:" << endl;
    rows_befor = false;
    for ( i = 0; i < SIDE; i++ ){
        flag = false;
        for ( j = 0; j < SIDE; j++ ){
            if ( m[i][j] ){
                if ( !flag ){
                    if ( rows_befor ){
                        cout << ',';
                    }
                    cout << '(' << ((char)(i + 'a')) << ',';
                    flag = true;
                }
                cout << ((char)(j + 'a'));
            }
        }
        if ( flag ){
            cout << ')';
            rows_befor = true;
        }
    }
    
    return 0;
}
1
26.09.2009, 21:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.09.2009, 21:49
Привет! Вот еще темы с ответами:

Игра на С++. Как лучше представить дорогу? - C++
Пишу игру,если это так можно назвать) Все алгоритмы вобщем то готовы, но вот некоторые как по мне, не очень. -КАРТА. То что я сделал...

Как одномерный массив представить двумерным? - C++
Я загрузил изображение. И есть указатель на его однобайтные пиксели: BYTE *pixels; Пиксель считываю так: pixels; А как сделать, чтоб...

Как представить многомерный массив в одномерный? - C++
Задана матрица размерностью h*w. Как представить многомерный массив в одномерный? Напишите пожалуйста программу для visual studio

Как представить byte в виде строки? - C++
Имеем переменную типа byte. В переменной значение &quot;0х80&quot;. необходимо в переменную типа CString записать значение переменной byte в...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.