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

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

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

> Не получается в матрице удалять отдельные элементы.помогите, может другой подход нужен?
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Евгения

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


Требуется разработать алгоритм и программу расчета матрицы содержащей в себе все четные числа другой матрицы. Размер матрицы задан 6*6

У меня получилось только оставить четные числа,а как составить матрицу содержащую только четные другой не могу понять как сделать((




Program lr4;
uses crt;
const n=6;

type matrA = array[1..n, 1..n] of integer;
matrB = array[1..n, 1..n] of string;
matrC = array[1..n, 1..n] of string;
Var
i,j,S:integer;
V:string;
a:matrA;
b:matrB;
c:matrC;

procedure vvod;
var i,j:integer;
begin
textattr:=green;
gotoxy (20,4);
writeln ('Ввведите элемент массива :');
for i:=1 to n do
begin
for j:=1 to n do
begin

textattr:=yellow;
write ('A[',i,',',j,']=');
read (A[i,j]);

S:=A[i,j];
Str (S,V);
C[j,i]:=V;
B[j,i]:=C[j,i];
end;
end;
end;
function chot:integer;
begin
chot:=A[i,j];
end;

begin

clrscr;
vvod;

for i:=1 to n do
begin
for j:=1 to n do
begin
if A[i,j] mod 2 <> 0 then
B[i,j]:=' '
else
begin
A[i,j]:=chot;
S:=A[i,j];
Str(S,V);
B[i,j]:=V;
end;

end;
end;


clrscr;
gotoxy (1,9);
for i:=1 to n do
begin
for j:=1 to n do
begin
write (A[i,j]);
write (' ');
end;
writeln ('');
end;
readln;

gotoxy(1,20);
for i:=1 to n do
begin
for j:=1 to n do
begin
write (B[i,j]:3);
write (' ');
end;
writeln ('');
end;
readln;
end.


Сообщение отредактировано: Евгения141294 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 481
Пол: Мужской
Реальное имя: Федосеев Павел

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


Ну, такую "матрицу" можно "заполнить" очень просто
  for i:=1 to n do
begin
for j:=1 to n do
if NOT Odd(A[i, j]) then
Write(A[i, j]:4);
WriteLn;
end;


Но мы же понимаем, что это не матрица.

Т.к. исходного условия я от тебя не дождался, то могу фантазировать. Давай сформируем результирующую матрицу по следующему принципу:
- просматриваем всю матрицу A и в список EvenList сохраняем только чётные числа из неё
- после завершения просмотра у нас есть список EvenList и количество чётных чисел EvenNum
- если EvenNum=0, то завершаем программу с сответствующим собщением
- У нас есть число EvenNum, и мы можем его перебором всех комбинаций разложить на два множителя Nb и Mb. Эти множители и будут размерностью новой матрицы B. Можно даже постараться отдать приоритет квадратным матрицам, задав критерий не только Nb*Mb=EvenNum, но и (Nb+Mb)->min - очевидно, что сумма сторон квадратной матрицы меньше чем у прямоугольной.
- теперь у нас есть и список чётных и размерность новой матрицы - заполняем её.

Вуаля. Выводим результат - матрицу B.

Для приведённого на твоём скриншоте примера результат будет:
Код
   2   4   6   8
   8   6   4   2
   2   4   6   8
   4   0   2   4


Пробуешь?
Подкину фрагмент для поиска Nb и Mb
  Nb:=1;
Mb:=EvenNum;
for i:=2 to round(sqrt(EvenNum)+1) do
if EvenNum mod i = 0 then
begin
j:=EvenNum div i;
if (i+j)< (Nb+Mb) then
begin
Nb:=i;
Mb:=j;
end;
end;

И ещё, чтобы при отладке не водить матрицу, можно задать её константой
const
n = 6;

type
matrA = array[1..n, 1..n] of integer;

const
A : matrA =
(
(1, 2, 3, 4, 5, 6),
(7, 8, 9, 9, 8, 7),
(6, 5, 4, 3, 2, 1),
(1, 2, 3, 4, 5, 6),
(9, 8, 7, 4, 5, 0),
(1, 2, 3, 5, 4, 7)
);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 5
Пол: Мужской
Реальное имя: Евгения

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


я просто не нашла условие задачи,как в методичке))
так я поняла ))
спасибо большое,я попробую

а если мы сохранили четные числа в список, как заполнить им матрицу В?


Сообщение отредактировано: Евгения141294 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 17.05.2024 7:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name