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

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

Восстановить пароль Регистрация
 
cFuser
Сообщений: n/a
27.12.2013, 12:30     Соседи элементов матрицы #1
Соседом элемента a[i][j] матрицы называется другой элемент a[i][k] этой же матрицы, если каждый из индексов l и k отличается соответственно от i и j не более, чем на единицу. Дана вещественная матрица M x N. Построить матрицу B такого же размера, чтобы каждый элемент b[i][j] этой матрицы был равен наименьшему значению среди соседей элемента a[i][j].

Помогите пожалуйста перенести код с Паскаля на C++. Получается совсем не то, что нужно.

Вот код на Паскале:
Pascal
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
program PROGMatrix;
uses crt;
const n=4;m=5;
var a,b:array[1..m,1..n] of real;
    min:real;
    i,j,k,l,p,t,p1,t1:integer;
Begin
  clrscr;
 
{создаем массив чисел}
  randomize; 
  writeln('Исходный массив');
  for i:=1 to m do
   begin
    for j:=1 to n do
      begin
        a[i,j]:=random(50)/11;
        write(a[i,j]:0:2,'  ');
      end;
       writeln;
   end;
 
   for i:=1 to m do
    for j:=1 to n do
     begin
      min:=maxint;
    for k:=i-1 to i+1 do
      for l:=j-1 to j+1 do
 
    if ((k>=1) and (k<=m)) and ((l>=1)and (l<=n)) and ((i<>k) xor (j<>l))then
         begin
           if (a[k,l]<min) and (a[k,l]<>a[i,j]) then
             begin
               min:=a[k,l];
             end;
           b[i,j]:=min;
           end;
      end;
 
 
         writeln;
         writeln('полученный массив');
         for i:=1 to m do
           begin
             for j:=1 to n do write(b[i,j]:0:2,'  ');
             writeln;
           end;
         readln;
 
end.
А вот на C++:
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
#include <iostream>
#include <cmath>
#include <iomanip>
#include <ctime>
#include <cstdlib>
using namespace std;
 
void main()
{
    system("cls");
    setlocale(0,"");
    srand(time(NULL));
    int m,n;
    int i,j,k,l;
    float min;
    cout << "Количество строк матрицы: "; cin >> m;
    cout << "Количество столбцов матрицы: "; cin >> n;
    float **a = new float *[m];
    float **b = new float *[m];
    for (int i=0; i<m; i++)
    {
        a[i] = new float[n];
        b[i] = new float[n];
    }
 
    cout << endl << "Исходная матрица:\n\n";
    for (i=0; i<m; i++)
    {
        for (j=0; j<n; j++)
        {
            a[i][j] = rand()/(float)32767*20-10; //(double)rand() / ((double)rand() + 0.1) 
            cout << setw(7) << setprecision(3) << a[i][j] << setprecision(3) << setw(7);
            //cout << "A[" << i << "][" << j << "] = "; cin >> a[i][j];
        }
        cout << endl << endl;
    }
    
    min = a[0][0];
 
    for (i=0; i<m; i++)
    {
        for (j=0; j<n; j++)
        {
            for (k=(i-1); k<(i+1); k++)
            {
                for (l=(j-1); l<(j+1); l++)
                {
                                       // тут , я как понимаю нужна операция XOR, но вдруг ошибаюсь
                    if ( ( (k>=1) && (k<=m) ) && ( (l>=1) && (l<=n) ) && ( (i!=k) ^ (j!=l) ) )
                    {
                        if ((a[k][l]<min) && (a[k][l] != a[i][j]))
                        {
                            min = a[k][l];
                        }
                        b[i][j] = min;
                    }
                }
            }
        }
    }
 
    cout << endl;
 
    for (int i=0; i<m; i++)
    {
        for (int j=0; j<n; j++)
        {
            cout << setw(7) << setprecision(3) << b[i][j] << setprecision(3) << setw(7); 
        }
        cout << endl << endl;
    }
 
    system("pause>>void");
}
Добавлено через 1 час 18 минут
Народ , помогите пожалуйста, срочно нужно
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.12.2013, 12:30     Соседи элементов матрицы
Посмотрите здесь:

C++ Соседи элемента массива
C++ Для заданной матрицы размера NхN найти такие k и n, что сумма элементов k- столбца матрицы совпадает с суммой элементов n- го строки
Получить новую матрицу умножением элементов первой матрицы на наибольшее из значений элементов соответствующий строки второй матрицы C++
Разные соседи (Судоку) C++
Матрицы. Найти и распечатать сумму элементов 5-го столбца матрицы А и сумму элементов последней строки матрицы В C++
Массив: Найти среднее арифметическое элементов матрицы и сумму элементов тех строк матрицы, в которых отрицателен элемент главной диагонали. C++
C++ Найти сумму положительных элементов матрицы А, количество нулевых элементов матрицы B
C++ Получить новую матрицу путем вычитания от элементов каждого столбца первой матрицы суммы элементов соответствующих строк второй матрицы

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru