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

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

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

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


Гость






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

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

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


Гуру
*****

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

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


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


Гость






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

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

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


Профи
****

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

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


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

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

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

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


Гость






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

a[i,j]:=0;

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

А как это выглядит на примере? Объясните, пожалуйста, хотя бы в общих словах, как это делать, а то что-то непонятно...
 К началу страницы 
+ Ответить 
Айра
сообщение 17.12.2007 23:01
Сообщение #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'е..

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


Гость






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


Профи
****

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

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


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

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

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

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


Гость






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


Гость






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

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

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

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


Профи
****

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

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


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

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

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

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

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


Гость






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

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

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

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

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


Гость






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


Профи
****

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

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


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

К сожалению мои телепатические способности сейчас на нуле..
Выложи весь свой код smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
ZanakZ
сообщение 19.12.2007 13:37
Сообщение #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.

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


Гость






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

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

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


Гость






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

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

 



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