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

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

Войти
Регистрация
Восстановить пароль
 
cFuser
Сообщений: n/a
#1

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

27.12.2013, 12:30. Просмотров 283. Ответов 0
Метки нет (Все метки)

Соседом элемента 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++
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждой строки первой матрицы на...

Соседи элемента массива - C++
Соседями элемента Аij в матрице назовем элементы Аkl c i-1 ≤ k ≤ i+1, j -1 ≤ l ≤ j+1, (к, 1) ≠ (i, j). Операция сглаживания матрицы дает...

Соседи и двумерный массив из файла - C++
Здравствуйте, не могу переделать программу под двумерный массив, чтобы она считывала с файла весь массив и считала соседей с верху, снизу и...

Поменять местами первый элемент заданной матрицы с наименьшим из отрицательных элементов этой же матрицы - C++
уважаемые форумчане,помогите разобраться с задачкой:создать двумерный массив 3x3,найти min из отрицательных элементов,поменять min c...

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

Функция: получить две матрицы и вернуть номер матрицы, среднее арифметическое элементов которой максимально - C++
нужна помощь в этой задаче!!! Написать функцию, получающую в качестве параметров два массива целого типа произвольного размера и...

Программа с матрицами. Найти минимальное значение среди четных элементов матрицы и сумму положительных элемен-тов матрицы - C++
Дана целочисленная матрица 5x7. Найти минимальное значение среди четных элементов матрицы и сумму положительных элемен-тов матрицы.

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

В матрицы A (m, n) каждый элемент aij заменить минимальным среди элементов подматрицы A '(i, j), которая расположена в верхнем левом углу матрицы A - C++
В матрицы A (m, n) каждый элемент aij заменить минимальным среди элементов подматрицы A '(i, j), которая расположена в верхнем левом углу...

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


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

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

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