Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 13.03.2011
Сообщений: 25
1

Найти количество элементов, для которых все соседи a[i,j] меньше самого a[i,j]

25.04.2011, 07:18. Показов 1458. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
1.В одномерном числовом массиве все отрицательные элементы заменить нулями.
2.Будем называть соседями элемента с индексами i, j такие элементы матрицы, соответствующие индексы которых отличаются от i и j на 1. Найти количество элементов, для которых все соседи a[i,j] меньше самого a[i,j].
3.Определить номера строк прямоугольной матрицы, содержащих только положительные элементы.
4.Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: умножением элементов каждой строки первой матрицы на наибольшее из значений элементов соответствующей строки второй матрицы.
5.Дана прямоугольная матрица. Все элементы, лежащие на главной диагонали, заменить на сумму элементов соответствующей строки
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2011, 07:18
Ответы с готовыми решениями:

Проверить, что все соседи соответствующего элемента матрицы A меньше его самого
Для заданной целочисленной матрицы A размерностью N  M сформировать матрицу B такой же...

Обнулить элементы матрицы, для которых все соседние не меньше его самого
Здравствуйте! Нужна ваша помощь, без нее никак. Обнулить элементы матрицы, для которых все...

Найти для каждого массива количество элементов, значение которых меньше среднего между минимальным...
• Для выполнения всех расчетов использовать несколько функций, каждая из которых выполняет...

Найти все слова соседи которых содержат букву Z
Вот что мне только удалось сделать, выводит слова где буква находиться между символами Z и Z ...

2
610 / 135 / 132
Регистрация: 15.04.2010
Сообщений: 554
25.04.2011, 07:44 2
Лучший ответ Сообщение было отмечено Calter как решение

Решение

4
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
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
Const
  cMaxIndex = 100;                           { Максимальный размер матрицы }
 
Type
  PArray = ^TArray;
  TRange = 1..cMaxIndex;                     { Диапазон индекса матрицы }
  TArray = array [TRange, TRange] of Real;   { Максимальная матрица }
  TFile  = file of Real;                     { Типизированный файл для сохранения матрицы }
 
{
  Процедура записи матрицы в файл
  Параметры:
    f - типизированный файл, открытый для записи
    a - записываемая матрица
    n - размер матрицы
}
Procedure SaveArray (var f : TFile; a : PArray; n : TRange);
var
  i, j : TRange;
  r : Real;
 
begin
  r := n;
  write (f, r);
  for i := 1 to n do
    for j := 1 to n do
      write (f, a^ [i, j]);
end;
 
{
  Процедура считывания матрицы из файл
  Параметры:
    f - типизированный файл, открытый для чтения
    a - считываемая матрица
    n - размер матрицы
}
Procedure LoadArray (var f : TFile; a : PArray; var n : TRange);
var
  i, j : TRange;
  r : Real;
 
begin
  read (f, r);
  n := round (r);
  for i := 1 to n do
    for j := 1 to n do
      read (f, a^ [i, j]);
end;
 
{
  Процедура ручного ввода матрицы
  Параметры:
    a - матрица
    n - размер матрицы
}
Procedure InputArray (a : PArray; n : TRange);
var
  i, j : TRange;
 
  s : string;
 
begin
  writeln (\'Введите элементы матрицы:\');
  for i := 1 to n do
    for j := 1 to n do
    begin
      write (\'Элемент a [\', i, \', \', j, \'] --> \');
      readln (a^ [i, j]);
  end;
end;
 
{
  Процедура ручного ввода матрицы
  Параметры:
    a     - матрица
    aName - обозначение матрицы
    n     - размер матрицы
}
Procedure PrintArray (a : PArray; aName : string; n : TRange);
var
  i, j : TRange;
 
begin
  writeln (\'Матрица \', aName, \':\');
  for i := 1 to n do
  begin
    for j := 1 to n do
      write (\' \', a^ [i, j]:12:4);
    writeln;
  end;
end;
 
{
  Процедура нахождения минимального элемента заданной строки матрицы
  Параметры:
    a - матрица
    i - номер строки
    n - размер матрицы
}
Function FindMin (a : PArray; i : TRange; n : TRange) : Real;
var
  j : TRange;
  m : Real;
 
begin
  m := a^ [i, 1];
  for j := 2 to n do
    if a^ [i, j] < m then m := a^ [i, j];
 
  FindMin := m;
end;
{
  Процедура формирования результирующей матрицы
  Параметры:
    a - первая матрица
    b - вторая матрица
    c - результирующая матрица    
    n - размер матрицы
}
Procedure CreateArray (a : PArray; b : PArray; c : PArray; n : TRange);
var
  i, j : TRange;
  min : Real;
 
begin
  for j := 1 to n do
  begin
    min := FindMin (b, j, n);
    for i := 1 to n do
      c^ [i, j] := a^ [i, j] * min;
  end;
end;
 
Var
  a : PArray;
  b : PArray;
  c : PArray;
  n : TRange;
  s : string;
  f : TFile;
 
Begin
  New (a); New (b);
  write (\'Введите имя файла для считывания или "-" для ручного ввода матриц: \');
  readln (s);
  if s [1] = \'-\' then begin
    Repeat
      write (\'Введите размер матрицы (1-100): \'); readln (n);
    Until n in [1..100];
 
    InputArray (a, n);
    InputArray (b, n);
 
    write (\'Введите имя файла для сохранения или "-" для продолжения: \');
    readln (s);
 
    if s [1] <> \'-\' then begin
      {$I-}
      Assign (f, s); Rewrite (f);
      {$I+}
      if IOResult <> 0 then writeln (\'Ошибка при создании файла! Продолжение работы без сохранения ввода!\')
      else begin
        SaveArray (f, a, n);
        SaveArray (f, b, n);
        Close (f);
      end;
    end;
  end
  else begin
    {$I-}
    Assign (f, s); Reset (f);
    {$I+}
    if IOResult <> 0 then begin
      writeln (\'Ошибка открытия файла! Работа завершена!\');
      halt (1);
    end;
 
    LoadArray (f, a, n);
    LoadArray (f, b, n);
 
    Close (f);
  end;
 
  PrintArray (a, \'A\', n);
  PrintArray (b, \'B\', n);
 
  New (c);
  CreateArray (a, b, c, n);
 
  PrintArray (c, \'C\', n);
End.
1
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
25.04.2011, 09:11 3
2. Погоняй, может где ошибся...
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
uses crt;
const nmax=20;
type matr=array[1..nmax,1..nmax] of integer;
function LokMax(i,j:integer;a:matr;m,n:integer):boolean;
begin
LokMax:=
{углы}
((i=1)and(j=1)and((a[i,j])>a[i+1,j+1])and(a[i,j]>a[i,j+1])and(a[i,j]>a[i+1,j]))
or((i=1)and(j=n)and((a[i,j])>a[i+1,j-1])and(a[i,j]>a[i,j-1])and(a[i,j]>a[i+1,j]))
or((i=m)and(j=1)and((a[i,j])>a[i-1,j+1])and(a[i,j]>a[i-1,j])and(a[i,j]>a[i,j+1]))
or((i=m)and(j=n)and((a[i,j])>a[i-1,j-1])and(a[i,j]>a[i,j-1])and(a[i,j]>a[i-1,j]))
{периметр}
or((i=1)and(j in [2..n-1])and((a[i,j])>a[i+1,j-1])and(a[i,j]>a[i+1,j+1])
and(a[i,j]>a[i+1,j])and(a[i,j]>a[i,j+1])and(a[i,j]>a[i,j-1]))
or((i=m)and(j in [2..n-1])and((a[i,j])>a[i-1,j-1])and(a[i,j]>a[i-1,j+1])
and(a[i,j]>a[i-1,j])and(a[i,j]>a[i,j+1])and(a[i,j]>a[i,j-1]))
or((j=1)and(i in [2..m-1])and((a[i,j])>a[i-1,j])and(a[i,j]>a[i-1,j+1])
and(a[i,j]>a[i,j+1])and(a[i,j]>a[i+1,j])and(a[i,j]>a[i+1,j+1]))
or((j=n)and(i in [2..m-1])and((a[i,j])>a[i-1,j-1])and(a[i,j]>a[i-1,j])
and(a[i,j]<a[i,j-1])and(a[i,j]>a[i+1,j-1])and(a[i,j]>a[i+1,j]))
{остальное}
or((i<>1)and(i<>m)and(j<>1)and(j<>n)
and(a[i,j]>a[i+1,j+1])and(a[i,j]>a[i-1,j-1])and(a[i,j]>a[i-1,j+1])and(a[i,j]>a[i+1,j-1])
and(a[i,j]>a[i-1,j])and(a[i,j]>a[i+1,j])and(a[i,j]>a[i,j+1])and(a[i,j]>a[i,j-1]));
end;
 
var a,b:matr;
    m,n,i,j,k:integer;
begin
clrscr;
randomize;
repeat
write('Количество строк до ',nmax,' m=');
readln(m);
until m in [1..nmax];
repeat
write('Количество столбцов до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    a[i,j]:=random(50);
    write(a[i,j]:4);
   end;
  writeln;
 end;
writeln('Матрица локальных максимумов:');
k:=0;
for i:=1 to m do
 begin
  for j:=1 to n do
   begin
    if LokMax(i,j,a,m,n) then
     begin
      b[i,j]:=1;
      k:=k+1;
     end
    else b[i,j]:=0;
    write(b[i,j]:4);
   end;
  writeln;
 end;
write('Всего локальных максимумов=',k);
readln
end.
0
25.04.2011, 09:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2011, 09:11
Помогаю со студенческими работами здесь

Найти количество ненулевых элементов и сумму элементов, значения которых меньше 2
Найти кол-во ненулевых элементов и сумму элементов , значения которых меньше 2 .Вывести...

Найти количество элементов, значение которых меньше 0
Помогите пожалуйста с задачей в VBA Excel, В диапазоне A1,D4 имеются числовые данные. Найти...

Найти и вывести количество элементов, значение которых меньше среднего арифметического элементов массива
Дан массив A из N элементов. Требуется найти и вывести количество элементов, значение которых...

Функция: подсчитать количество элементов кольцевого двунаправленного списка L, у которых равные соседи
Пусть L обозначает двунаправленный список с заглавным звеном. Описать функцию или процедуру,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru