Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
#1

Вырезать из матрицы всё лишнее, чтобы осталась только закрашенная часть - C++

10.01.2010, 13:36. Просмотров 695. Ответов 13
Метки нет (Все метки)

Как можно вырезать из матрицы всё лишнее, чтобы осталась только закрашенная часть?
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2010, 13:36
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вырезать из матрицы всё лишнее, чтобы осталась только закрашенная часть (C++):

C/C++ вырезать часть данных с файла
Здравствуйте. Есть ли в C/C++ функции, которые помогут вырезать часть данных...

Какую именно часть кода заменить, чтобы организовать ручное заполнение матрицы?
Подсказали, чтобы мы самим вводить матрицу, нужно вот этот код: for (int...

Определить, сколько раз нужно переложить карты, чтобы осталась только одна?
Мужчина любит раскладывать карточный пасьянс. Правила таковы: если в колоде...

Макрос на директорию, убирающий всё лишнее и выстраивающий данные в одну строчку
Всем здрасти! Всех с весной, студентов с сессией! В директории есть...

Требуется, чтобы часть функции Main выполнялась только единожды
Требуется, чтобы часть функции Main выполнялась только единожды. using...

Как сделать, чтобы GoldenDict загружал только часть страницы?
Кто нибудь знает, как в этом GoldenDict сделать, чтобы он не просто страницу...

13
mikhail2704
39 / 39 / 10
Регистрация: 18.11.2009
Сообщений: 115
10.01.2010, 13:45 #2
Если я правильно понял, то ненужное надо обнелить.
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 13:47  [ТС] #3
Цитата Сообщение от mikhail2704 Посмотреть сообщение
Если я правильно понял, то ненужное надо обнулить.
Можно и так.
0
Radjuk
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 15:01 #4
вот цыкл на обнуление елементов выше главной диагонали :

C
1
2
3
4
5
6
7
   for(i=0;i<n;i++)
    {
     for(j=0;j<n-i;j++)
      {
       a[i][j]=0;
      }
   }
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 15:02  [ТС] #5
Цитата Сообщение от Radjuk Посмотреть сообщение
вот цыкл на обнуление елементов выше главной диагонали :

C
1
2
3
4
5
6
7
   for(i=0;i<n;i++)
    {
     for(j=0;j<n-i;j++)
      {
       a[i][j]=0;
      }
   }
А зачем обнулять то что выше главной диагонали?
0
IN21
2 / 2 / 0
Регистрация: 10.01.2010
Сообщений: 12
10.01.2010, 15:05 #6
а тебе ж надо вырезать, вот всё остальное и обнуляется(PS здраствуй Сергей)
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 15:06  [ТС] #7
Цитата Сообщение от IN21 Посмотреть сообщение
а тебе ж надо вырезать, вот всё остальное и обнуляется(PS здраствуй Сергей)
Щас попробую.
P.S. Не узнал))
0
Radjuk
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 15:07 #8
ну вот если есть матрица
1 2 3
4 5 6 тебе надо по условию оставить только 6
7 8 9

токда обнуляем все что выше главной диагонали
0 0 0
0 0 6
0 8 9
а дальше все что ниже второй диагонали
0 0 0
0 0 6
0 0 0
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 17:09  [ТС] #9
а если берём матрицу
1 2 3 4 5 6
7 8 9 7 6 5
1 2 3 4 5 6
он обнуляет слишком круто, до
0 0 0 0 0 0
0 0 0 0 0 5
0 0 0 0 5 6

Добавлено через 10 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int u=0;
    if (y>x)
    {
        u=y-x;
    }
     for(int i=0;i<x;i++)
    {
         for(int j=0;j<y-i-u;j++)
          {
             dop_mass2[i][j]=0;
          }
   }
вот подправил чтобы он правильно обнулял что выше диагонали. помогите сделать тоже для элементов, которые ниже диагонали.
0
Radjuk
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 17:23 #10
там ниже боковой диагонали теперь надо
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 17:24  [ТС] #11
Цитата Сообщение от Radjuk Посмотреть сообщение
там ниже боковой диагонали теперь надо
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
int u=0;
    if (y>x)
    {
        u=y-x;
    }
     for(int i=0;i<x;i++)
    {
         for(int j=0;j<y-i-u;j++)
          {
             dop_mass2[i][j]=0;
          }
   }
     int p=0;
      for(int i=x-1;i>=0;i--)
    {
         for(int j=0;j<y-p-u;j++)
          {
             dop_mass2[i][j]=0;
          }
         p++;
   }
     for (int i=0; i<x; i++)
     {
         for (int j=0; j<y; j++)
         {
             cout<<dop_mass2[i][j]<<" ";
             if (j==y-1)
             {
                 cout<<endl;
             }
         }
     }
у меня так получилось. dop_mass2 и есть массив который обнуляем. Проверь, а?
0
Radjuk
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 17:40 #12
кинь целый код что бы были все переменые и заполнение масива ..
0
Kemsit
4 / 4 / 4
Регистрация: 07.06.2009
Сообщений: 62
10.01.2010, 17:42  [ТС] #13
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
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Russian");
    int x, y, mass[256][256], count=0, temp=0, dop_mass[256], dop_mass1[256][256], dop_mass2[256][256], y1;
    cout<<"Введите количество строк массива"<<endl;
    cin>>x;
    cout<<"Введите количество столбцов массива"<<endl;
    cin>>y;
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            cout<<"Введите элемент ["<<i<<','<<j<<"] -> ";
            cin>>mass[i][j];
        }
    }
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            cout<<mass[i][j]<<"        ";
            if (j==y-1)
            {
                cout<<endl;
            }
        }
    }
    //task 2
    temp=1;
    int m=0;
    cout<<"Матрица, с удалёнными по правилу элементами"<<endl;
    for (int i=0; i<x; i++)
    {
        for (int j=0; j<y; j++)
        {
            dop_mass2[i][j]=mass[i][j];
        }
    }
    int u=0;
    if (y>x)
    {
        u=y-x;
    }
     for(int i=0;i<x;i++)
    {
         for(int j=0;j<y-i-u;j++)
          {
             dop_mass2[i][j]=0;
          }
   }
     int p=0;
      for(int i=x-1;i>=0;i--)
    {
         for(int j=0;j<y-p-u;j++)
          {
             dop_mass2[i][j]=0;
          }
         p++;
   }
     for (int i=0; i<x; i++)
     {
         for (int j=0; j<y; j++)
         {
             cout<<dop_mass2[i][j]<<" ";
             if (j==y-1)
             {
                 cout<<endl;
             }
         }
     }
    system ("pause");
    return 0;
}
0
Radjuk
135 / 69 / 12
Регистрация: 10.10.2009
Сообщений: 187
10.01.2010, 17:50 #14
нормально роботает)
1
10.01.2010, 17:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2010, 17:50
Привет! Вот еще темы с решениями:

чтобы было видно только какую то определенную часть картинки в pictureBox
Всем привет. Подскажите как сделать, чтобы было видно только какую то...

Вырезать всё, что внутри url()
Добрый день ув. пользователи! Подскажите пожалуйста, как достать только то, что...

Как сделать так, чтобы по гипперссылке менялась не вся страница а только ее внутренняя часть!
Помогите пожалуйста! Как сделать так, чтобы по гипперссылке менялась не вся...

Определите длину введённого слова,вырезать два символа слева и справа,вырезать часть слова с третей позиции два символа
Определите длину введённого слова,вырезать два символа слева и справа,вырезать...


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

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

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