IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> [Pascal]Матрица
fly
сообщение 18.04.2007 17:20
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 24
Пол: Мужской

Репутация: -  0  +


Хелпаните с задачкой плз...Задание такое:
Дан массив целых чисел MxM.Вводится произвольный массив чисел KxK.Известно ,что K существенно меньше, чем M.Определить,сколько раз второй массив всречается в первом.

Вот пытался кое что делать.Что я не так делаю?
Код
var k:array[1..100,1..100] of integer;
    m:array[1..100,1..100] of integer;
n,h,i,j:byte;
begin
writeln('vv kol strok');
readln(n);
writeln('vv kol stolbcov');
readln(h);
for i:=1 to h do
end;
begin
writeln('vv',h,'chisel);
for j:=1 to m do
read(a[i,j]);
end;
begin
  even:=true;
  for i:=1 to K do
  for j:=1 to K do
     if M[i+x,j+y]<>K[x,y] then begin even:=false; break;end;
end;
count,i,j:byte;
begin
  count:=0;
  for i:=0 to M-K do
  for j:=0 to M-K do
  if even(i,j) then inc(count);
  writeln(count)
end.


Сообщение отредактировано: fly - 18.04.2007 17:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
Lapp
сообщение 24.04.2007 2:47
Сообщение #2


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(fly @ 18.04.2007 18:20) *

Вот пытался кое что делать.Что я не так делаю?

Ты очень многое делаешь не так, трудно перечислить.. smile.gif
Но кое-что ты делаешь все же так. Например, последний цикл, а также следы от функции Even (кстати, почему такое название?..).
Короче, я восстановил программу по твоему тексту (ответь честно - твой он или не твой? странно просто, вроде есть умные мысли, но есть и совершенно глупые ошибки..). Смотри, что получилось:
var
A:array[1..100,1..100] of integer;
B:array[1..100,1..100] of integer;
m,k,i,j:integer;
count:integer;

function Even(x,y:integer):boolean;
var
i,j:integer;
begin
even:=true;
for i:=0 to k-1 do for j:=0 to k-1 do begin
if A[i+x,j+y]<>B[x,y] then begin
even:=false;
break
end
end
end;

begin
m:=4;
k:=2;
{ ... here you input the arrrays}
count:=0;
for i:=1 to M-K+1 do for j:=1 to M-K+1 do if even(i,j) then inc(count);
writeln(count)
end.

Массив я бы либо считывал из файла, либо задавл случайным образом из узкого диапазона (скажем, 0 и 1), тогда вероятность вхождения будет не такая маленькая. Попробуй, если будут сложности - спрашивай. В моем примере матрицы (4х4 и 2х2) получается обе нулевые, так что результат - 9 вхождений, что соответствует истине, как я прикинул.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 1.05.2007 17:33
Сообщение #3


Гость






Цитата(Lapp @ 24.04.2007 2:47) *

Короче, я восстановил программу по твоему тексту (ответь честно - твой он или не твой? странно просто, вроде есть

Текст не мой а,собранный из разных текстов в один единственный.
В моём случае массив из файла считывать нельзя,мы работу с файлами ещё не изучали.
Я правильно понял что в твоём тексте m-это количество столбцов и строк в массиве "A", а k-это количество столбцов и строк в массиве "B"?


 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 18:41
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"