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

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

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

Для данной целочисленной матрицы A (aij) размером m*m найти матрицу B - C++

06.06.2013, 13:58. Просмотров 443. Ответов 3
Метки нет (Все метки)

Будем называть соседями элемента с индексами i,j некоторой матрицы такие элементы, соответствующие индексы которых отличаются от i,j не более чем на единицу. Для данной целочисленной матрицы A (aij) размером m*m найти матрицу B, состоящую из нулей и единиц, элемент которой bij равен единице, когда:
среди соседей aij есть не менее двух элементов, совпадающих с aij


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
//---------------------------------------------------------------------------
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
#include <iostream.h>
#include <cmath>
#include <conio.h>
 
 
int main()
{ const int m=4;
  int A[m][m];
  int B[m][m];
  int i,j,k,i1,i2,j1,j2,n1,n2;
   for (i=1;i<=m;i++)
  { for (j=1;j<=m;j++)
        {A[i][j]= abs(random(10));
 
         cout<<A[i][j]<<' ';
         }
         cout<<endl;
      }
  cout<<endl;
 
      for (i=1;i<=m;i++)
        { for (j=1;j<=m;j++)
        {k=0;
         i1=i-1;
         i2=i+1;
         j1=j-1;
         j2=j+1;
         if (i1==0 ) i1=1;
         if (i2==m+1 ) i2=m;
         if (j1==0 ) j1=1;
         if (j2==m+1 ) j2=m;
    
         for (n1=i1;n1<=i2;n1++)
                {for (n2=j1;n2<=j2;n2++)
                 {if (A[i][j]==A[n1][n2]){k++;
               
                 }
                 }
 
            }
             if (k<3) B[i][j]=0;
                 else B[i][j]=1;
 
        cout<<B[i][j]<<' ';
 
         }
         cout<<endl;
      }
        getch ();
        return 0;
}
вот код...но он работает как то криво, не совсем верно выводит матрицу В...
а еще нужно оформить с использованием функции....
помоги плз
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2013, 13:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Для данной целочисленной матрицы A (aij) размером m*m найти матрицу B (C++):

Из заданной матрицы A размером N*M получить матрицу В размером K*3 по правилу: первый столбец состоит из полож - C++
Из заданной матрицы A размером N*M получить матрицу В размером K*3 по правилу: первый столбец состоит из положительных элементов, второй...

Из заданной матрицы A размером получить матрицу В размером по правилу: первый столбец состоит из положительных элементов, второй – из отрицате - C++
1. Из заданной матрицы A размером получить матрицу В размером по правилу: первый столбец состоит из положительных элементов, второй –...

Для заданной матрицы размером 8 ны 8 найти такие k, что k-ая строка матрицы совпадает с k-ым столбцом - C++
Для заданной матрицы размером 8 ны 8 найти такие k, что k-ая строка матрицы совпадает с k-ым столбцом.

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

Для целочисленной квадратной матрицы найти число элементов, кратных k и наибольший из них - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; using namespace std; int main() { int i, j,k,count =...

Получить матрицу, путем вычеркивания с данной матрицы, Н-ой строки и М-го столбика - C++
Ребят, напишите плиз прогу на с++. Условие: Получить матрицу, путем вычеркивания с данной матрицы, Н-ой строки и М-го столбика. Очень...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Seemann92
5 / 5 / 0
Регистрация: 12.04.2013
Сообщений: 45
06.06.2013, 14:08 #2
А почему здесь:
C++
1
2
3
4
5
6
7
for (i=1;i<=m;i++){
  for (j=1;j<=m;j++){
    A[i][j]= abs(random(10));
    cout<<A[i][j]<<' ';
  }
  cout<<endl;
}
оба цикла начинают свою работу с единицы? У массивов адресация с 0 идёт.
0
Eternal123
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 52
06.06.2013, 14:15  [ТС] #3
Seemann92, особо ничего не изменилось от этого)
0
Seemann92
5 / 5 / 0
Регистрация: 12.04.2013
Сообщений: 45
06.06.2013, 15:13 #4
Цитата Сообщение от Eternal123 Посмотреть сообщение
Seemann92, особо ничего не изменилось от этого)
Возможно. Просто попутное замечание.

Добавлено через 46 минут
Вышло не очень красиво, но работает, а это уже результат. =)

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
#include <vcl.h>
#pragma hdrstop
#include <iostream.h>
#include <cmath>
#include <conio.h>
 
//---------------------------------------------------------------------------
 
#pragma argsused
 
int proverka(int, int);
 
const int m=4;
int A[m][m]={{1,2,3,4},{2,3,2,5},{6,3,1,9},{3,6,1,2}};
 
int main(int argc, char* argv[])
{
int B[m][m];
  randomize();
  for (int i=0; i<m; i++){
    for (int j=0; j<m; j++){
      A[i][j]=random(10);
      cout<<A[i][j]<<' ';
    }
    cout<<endl;
  }
  cout<<endl;
 
  for (int i=0; i<m; i++){
    for (int j=0; j<m; j++){
      if (proverka(i,j)>=2)
        B[i][j]=1;
      else
        B[i][j]=0;
      cout<<B[i][j]<<' ';
    }
    cout<<endl;
  }
        getch ();
        return 0;
}
//---------------------------------------------------------------------------
 
int proverka(int _i, int _j){
int k=0;
  if ((A[_i][_j]==A[_i][_j+1])&&(_j+1<m-1))
    k++;
  if ((A[_i][_j]==A[_i+1][_j+1])&&(_i+1<m)&&(_j+1<m))
    k++;
  if ((A[_i][_j]==A[_i+1][_j])&&(_i+1<m))
    k++;
  if ((A[_i][_j]==A[_i+1][_j-1])&&(_i+1<m)&&(_j-1>=0))
    k++;
  if ((A[_i][_j]==A[_i][_j-1])&&(_j-1>=0))
    k++;
  if ((A[_i][_j]==A[_i-1][_j-1])&&(_i-1>=0)&&(_j-1>=0))
    k++;
  if ((A[_i][_j]==A[_i-1][_j])&&(_i-1>=0))
    k++;
  if ((A[_i][_j]==A[_i-1][_j+1])&&(_i-1>=0)&&(_j+1<m))
    k++;
  return k;
}
Добавлено через 7 минут
Затупил впопыхах. В 46 строке вместо
C++
1
(_j+1<m-1)
должно быть
C++
1
(_j+1<m)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 15:13
Привет! Вот еще темы с ответами:

Для матрицы а(n, n) найти обратную матрицу - C++
Помогите пожалуйста с решением этих задач, а то я уже не знаю что с ними делать.... Задача 1 Для матрицы а(n, n) найти обратную...

Ввод с клавы размера целочисленной матрицы, а затем самой матрицы. Найти наибольший элемент. Разрешается использовать только один оператор цикла - C++
С клавиатуры вводится размерность целочисленной матрицы, затем сама матрица. Найти наибольший элемент. Разрешается при этом использовать...

Получить новую матрицу, элементы которой есть сумма элементов данной матрицы - C++
4 2 3 4 0 7 5 -2 -4 3 2 8 4 -2 8 3 Получить новую матрицу, элементы которой есть сумма элементов данной матрицы с наименьшим...

Среди строк матрицы целых чисел размером 5х4 найти то, для которого сумма нечетных элементов будет минимально - C++
Среди строк матрицы целых чисел размером 54 найти то, для которого сумма нечетных элементов будет минимальной, и построить с этой строки...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.06.2013, 15:13
Ответ Создать тему
Опции темы

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