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

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

Войти
Регистрация
Восстановить пароль
 
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
#1

Задача на сканирование элементов матрицы - C++

28.05.2013, 20:20. Просмотров 265. Ответов 5
Метки нет (Все метки)

В общем условие задание такое:
Дана матрица А, размерности m*n. Сформировать матрицу B, размерности m*n, состоящую только из 0 и 1. Элемент матрицы B равен единице, если элемент того же индекса и соседние к нему равны 0.
Вот начатая работа, я не могу придумать алгоритм для ситуаций, когда одого или двух соседей вообще нет.
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
#include<iostream>
#include<iomanip>
using namespace std;
int main() { 
    int n, m;
    cout<<"Vvedite razmernost' matrici:"<<endl;
    cout<<"Vvedite N:"<<endl;
    cin>>n;
    cout<<"Vvedite M:"<<endl;
    cin>>m;
    int a[n][m], b[n][m];
    cout<<"Vvedite znacheniya elementov matrici:"<<endl;
    for(int i=0; i<n; i++) { 
            cout<<i+1<<" stroka:"<<endl;
            for(int j=0; j<m; j++) { 
                    cin>>a[i][j];
                    b[i][j]=0;}}
     for(int i=0; i<n; i++) { 
            for(int j=0; j<m; j++) { 
                    if(a[i][j]==0) 
                                   if(a[i-1][j]==0) 
                                                    if(a[i+1][j]==0) 
                                                                     if(a[i][j-1]==0) 
                                                                                      if(a[i][j+1]==0)
                  b[i][j]=1;}}
    cout<<"Ishodnaya matrica A:"<<endl;
    for(int i=0; i<n; i++) { 
            cout<<endl; 
            for(int j=0; j<m; j++) { 
                    cout<<setw(3)<<a[i][j];}}
    cout<<endl;
    cout<<"Celevaya matrica B:"<<endl;
     for(int i=0; i<n; i++) { 
            cout<<endl; 
            for(int j=0; j<m; j++) { 
                    cout<<setw(3)<<b[i][j];}}
     cout<<endl;
     system("pause");
     return 0;}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2013, 20:20     Задача на сканирование элементов матрицы
Посмотрите здесь:

Задача на вывод элементов матрицы по спирали - C++
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; #define n 5 void main() { int k,j,i; int imin,jmin,imax,jmax; int a; jmin=0; ...

Задача на матрицы. Найти суммы элементов всех четных и нечётных строк и столбцов - C++
Т.е. иными словами нужно найти суммы элементов в каждой чётной и нечётной строке. И также в каждом чётном и нечётном столбце. Помогите,...

Задача на "закрашивание" некоторых элементов матрицы - C++
Имеется матрица чисел 0 и 1 - это некое изображение 0 - белый 1 - черный цвета. Если единицы образуют собой какую нибудь замкнутую область...

Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В - C++
Даны две матрицы А(mxn)и В(m1xn1).программа находит и распечатывает сумму элементов 5-го столбца матрицы А и сумму элементов последней...

Получить новую матрицу умножением элементов первой матрицы на наибольшее из значений элементов соответствующий строки второй матрицы - C++
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждой строки первой матрицы на...

Получить новую матрицу путем вычитания от элементов каждого столбца первой матрицы суммы элементов соответствующих строк второй матрицы - C++
Даны две целочисленные квадратные матрицы 4-го порядка. Получить новую матрицу путем вычитания от элементов каждого столбца первой матрицы...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kostya-vrn
10 / 10 / 4
Регистрация: 16.03.2013
Сообщений: 30
28.05.2013, 20:29     Задача на сканирование элементов матрицы #2
Воспользуйся ifом, если дошло до края одно значение(m или n), то не учитывать следующий его элемент, а если оба(m и n), то не учитывай оба, а учитывай только предыдущие и все
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
28.05.2013, 20:35  [ТС]     Задача на сканирование элементов матрицы #3
Цитата Сообщение от kostya-vrn Посмотреть сообщение
Воспользуйся ifом, если дошло до края одно значение(m или n), то не учитывать следующий его элемент, а если оба(m и n), то не учитывай оба, а учитывай только предыдущие и все
Этот способ мне был известен, он называется "в лоб". Код получается слишком большим, мне нужен алгоритм, который не будет занимать столько места.
kostya-vrn
10 / 10 / 4
Регистрация: 16.03.2013
Сообщений: 30
28.05.2013, 20:49     Задача на сканирование элементов матрицы #4
Воспользуйтесь функциями. Чтобы не писать 100500 раз if воспользуйтесь логической операцией &
if ((a[i][j]==0) & (...) & (...) & (...)), тоже уменьшит объем кода
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
28.05.2013, 20:54     Задача на сканирование элементов матрицы #5
Как вариант - увеличить размеры массивов на 2, добавив по краям таблицы границу из нулей. Во всем, кроме проверки условия, работать только со внутренней частью. Тогда даже у крайних будут все соседи, причем соседи из границы никак не влияют на результат.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2013, 20:57     Задача на сканирование элементов матрицы
Еще ссылки по теме:

Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали. - C++
Ребят не понимаю я с++ Дали создать программу Помогите пожалуйста Найти среднее арифметическое элементов матрицы и сумму элементов...

Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки - C++
Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки. Найти...

Найти сумму положительных элементов матрицы А, количество нулевых элементов матрицы B - C++
• Даны матрицы A, B. Найти сумму положительных элементов матрицы А, количество нулевых элементов матрицы B. • Упорядочить матрицу А по...

не могу сделать так чтоб я сам вводил матрицы) задача умножения матрицы на вектор - C++
Всем привет. вобщем задача моя такова , что я задал готовое количество элементов в матрицу и в вектор, а программа умножает ее. сами задаем...

Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки. размер матрицы 7х7.заранее спасибо - C++
Найти среднее арифметическое элементов каждой строки матрицы Q (lm) и отнять его от элементов этой строки.. размер матрицы 7х7.заранее...

умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй матрицы - C++
получить новую матрицу умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй...


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

Или воспользуйтесь поиском по форуму:
DIEZEL-man
13 / 13 / 0
Регистрация: 17.02.2013
Сообщений: 54
28.05.2013, 20:57  [ТС]     Задача на сканирование элементов матрицы #6
Цитата Сообщение от Гром Посмотреть сообщение
Как вариант - увеличить размеры массивов на 2, добавив по краям таблицы границу из нулей. Во всем, кроме проверки условия, работать только со внутренней частью. Тогда даже у крайних будут все соседи, причем соседи из границы никак не влияют на результат.
Отличная идея, спасибо. Этот называется "расширь границы мышления" )
Yandex
Объявления
28.05.2013, 20:57     Задача на сканирование элементов матрицы
Ответ Создать тему
Опции темы

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