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

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

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

 
 Ответить  Открыть новую тему 
> Замена элементов матрицы
сообщение
Сообщение #1


Гость






Нужно решить задачу :

Даны целые числа a1,..,a10 , целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с четной суммой индексов, для которых имеются равные среди a1,..,a10 .

Заранее спасибо.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гуру
*****

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

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


ZanakZ
А что не понятно в этой задаче?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Цитата(Ozzя @ 17.12.2007 12:57) *

ZanakZ
А что не понятно в этой задаче?

Непонятно, как заменить эти самые элементы и что такое 'равные среди a1,..,a10'.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

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

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


Цитата
Заменить нулями в матрице

a[i,j]:=0;
Цитата
'равные среди a1,..,a10'.

допусти последовательность у тебя: 1,2,3,4,5,6,7,8,9,10, а элемент матрицы 2.. он равен одному из элементов последовательноти, значит заменяем его на 0 (если еще и индексы подходящие), а если эл-т матрицы =11, то, т.к. числа 11 в пол-ти нет, оставляем его в покое))

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


Гость






Цитата(Айра @ 17.12.2007 13:40) *

a[i,j]:=0;

допусти последовательность у тебя: 1,2,3,4,5,6,7,8,9,10, а элемент матрицы 2.. он равен одному из элементов последовательноти, значит заменяем его на 0 (если еще и индексы подходящие), а если эл-т матрицы =11, то, т.к. числа 11 в пол-ти нет, оставляем его в покое))

А как это выглядит на примере? Объясните, пожалуйста, хотя бы в общих словах, как это делать, а то что-то непонятно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


Основной цикл должен выглядить примерно так:

var posl: array[1..n] of integer; //поcледовательность символов
l: boolean; // true, если элемент матрицы не равен эл-т посл-ти, false в противном случае
...
for i:=1 to n do
for j:=1 to n do
begin
l:=true;
k:=1;
if not odd(i+j) then
begin
while (k<=n) and l do
begin
if m[i,j]=posl[k] then
begin
m[i,j]:=0;
l:=false;
end;
inc(k);
end;
end;
end;


А если описать последовательность как множество, то цикл будет намного проще:

for i:=1 to n do
for j:=1 to n do
if (not odd(i+j)) and (m[i,j] in posl) then m[i,j]:=0; //если сумма индексов четная и эл-т входит в множество, то..


Правда у меня возникла проблема с описанием множества (я их еще не проходила wink.gif) - не получается включить в него отрицательные числа.. надо покопаться в FAQ'е..

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


Гость






Цитата
не получается включить в него отрицательные числа
Это невозможно... Множества могут хранить только значения в диапазоне 0 .. 255
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

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

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


Цитата
Это невозможно...

Жаль.. А еще я так поняла, что вывести элементы множества тоже нельзя?

to ZanakZ: значит при использовании множества числа последовательности могут быть только в диапазоне 0..255

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


Гость






Можно, кто мешает поэлементно проверять наличие во множестве и вывод элемента, если он там есть? Почитай вот тут: Множества
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата(Айра @ 17.12.2007 23:30) *

Жаль.. А еще я так поняла, что вывести элементы множества тоже нельзя?

to ZanakZ: значит при использовании множества числа последовательности могут быть только в диапазоне 0..255

Понятно. У меня ещё один вопрос: а какую(ие) переменную(ые) мы выводим на экран в самом конце программы?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Цитата
У меня ещё один вопрос: а какую(ие) переменную(ые) мы выводим на экран в самом конце программы?

Ну, по идее, мы выводим нашу матрицу, только уже измененную..

..если делать первым способом, когда последовательность представлена массивом, можно вывести и его, для наглядности)))

добавлено: в принципе и при использовании множества можно вывести последовательность измененных элементов, почитай ссылку volvo..

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


Гость






Цитата(Айра @ 19.12.2007 6:46) *

Ну, по идее, мы выводим нашу матрицу, только уже измененную..

..если делать первым способом, когда последовательность представлена массивом, можно вывести и его, для наглядности)))

добавлено: в принципе и при использовании множества можно вывести последовательность измененных элементов, почитай ссылку volvo..

У меня почему-то всегда выводится 0. :-((
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Цитата
У меня почему-то всегда выводится 0.
Почему-то программы, при запуске которой "всегда выводится 0" не видно...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

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

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


Цитата
У меня почему-то всегда выводится 0. :-((

К сожалению мои телепатические способности сейчас на нуле..
Выложи весь свой код smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость







program pr5;
var posl: array[1..255] of integer;
m:array [1..25,1..25] of integer;
l: boolean;
i,j,k,n:integer;
begin
writeln ('vvedite elementy');
readln (n);
for i:=1 to n do
begin
writeln ('vvedite element posled n',i);
readln (posl[i]);
end;
for i:=1 to n do
for j:=1 to n do
begin
writeln ('vvedite elementy matritzy');
readln (m[i,j]);
l:=true;
k:=1;
if not odd(i+j) then
begin
while (k<=n) and l do
begin
if m[i,j]=posl[k] then
begin
m[i,j]:=0;
l:=false;
end;
inc(k);
end;
end;
end;
writeln (m[i,j],' ');
end.

.
Прошу строго не судить, я ещё новичок в Паскале.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Ноль у тебя выводится по одной простой причине: ты распечатываешь значение m[i, j] ПОСЛЕ того, как циклы и по I и по J уже закончились (вот они, проблемы неправильного форматирования исходников... Была бы "лесенка" - увидел бы сам сразу же, или вообще не совершил бы такой ошибки), при этом значения I и J считаются неопределенными, кстати...

Выводи матрицу ПОСЛЕ цикла заполнения полностью (а не один элемент).

Еще один совет: компилируй программы с {$R+} в первой строке, это поможет тебе выявлять некоторые ошибки...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Всё запускается! Большое спасибо! rolleyes.gif
 К началу страницы 
+ Ответить 

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

 





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