![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
ZanakZ |
![]()
Сообщение
#1
|
Гость ![]() |
Нужно решить задачу :
Даны целые числа a1,..,a10 , целочисленная квадратная матрица порядка n. Заменить нулями в матрице те элементы с четной суммой индексов, для которых имеются равные среди a1,..,a10 . Заранее спасибо. |
Ozzя |
![]()
Сообщение
#2
|
![]() Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 220 Пол: Мужской Репутация: ![]() ![]() ![]() |
ZanakZ
А что не понятно в этой задаче? |
Гость |
![]()
Сообщение
#3
|
Гость ![]() |
|
Айра |
![]()
Сообщение
#4
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата Заменить нулями в матрице a[i,j]:=0; Цитата 'равные среди a1,..,a10'. допусти последовательность у тебя: 1,2,3,4,5,6,7,8,9,10, а элемент матрицы 2.. он равен одному из элементов последовательноти, значит заменяем его на 0 (если еще и индексы подходящие), а если эл-т матрицы =11, то, т.к. числа 11 в пол-ти нет, оставляем его в покое)) Сообщение отредактировано: Айра - |
ZanakZ |
![]()
Сообщение
#5
|
Гость ![]() |
a[i,j]:=0; допусти последовательность у тебя: 1,2,3,4,5,6,7,8,9,10, а элемент матрицы 2.. он равен одному из элементов последовательноти, значит заменяем его на 0 (если еще и индексы подходящие), а если эл-т матрицы =11, то, т.к. числа 11 в пол-ти нет, оставляем его в покое)) А как это выглядит на примере? Объясните, пожалуйста, хотя бы в общих словах, как это делать, а то что-то непонятно... |
Айра |
![]()
Сообщение
#6
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Основной цикл должен выглядить примерно так:
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; //если сумма индексов четная и эл-т входит в множество, то..
Правда у меня возникла проблема с описанием множества (я их еще не проходила ![]() Сообщение отредактировано: Айра - |
volvo |
![]()
Сообщение
#7
|
Гость ![]() |
Цитата не получается включить в него отрицательные числа Это невозможно... Множества могут хранить только значения в диапазоне 0 .. 255 |
Айра |
![]()
Сообщение
#8
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата Это невозможно... Жаль.. А еще я так поняла, что вывести элементы множества тоже нельзя? to ZanakZ: значит при использовании множества числа последовательности могут быть только в диапазоне 0..255 Сообщение отредактировано: Айра - |
volvo |
![]()
Сообщение
#9
|
Гость ![]() |
Можно, кто мешает поэлементно проверять наличие во множестве и вывод элемента, если он там есть? Почитай вот тут: Множества
|
ZanakZ |
![]()
Сообщение
#10
|
Гость ![]() |
Жаль.. А еще я так поняла, что вывести элементы множества тоже нельзя? to ZanakZ: значит при использовании множества числа последовательности могут быть только в диапазоне 0..255 Понятно. У меня ещё один вопрос: а какую(ие) переменную(ые) мы выводим на экран в самом конце программы? |
Айра |
![]()
Сообщение
#11
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата У меня ещё один вопрос: а какую(ие) переменную(ые) мы выводим на экран в самом конце программы? Ну, по идее, мы выводим нашу матрицу, только уже измененную.. ..если делать первым способом, когда последовательность представлена массивом, можно вывести и его, для наглядности))) добавлено: в принципе и при использовании множества можно вывести последовательность измененных элементов, почитай ссылку volvo.. Сообщение отредактировано: Айра - |
ZanakZ |
![]()
Сообщение
#12
|
Гость ![]() |
Ну, по идее, мы выводим нашу матрицу, только уже измененную.. ..если делать первым способом, когда последовательность представлена массивом, можно вывести и его, для наглядности))) добавлено: в принципе и при использовании множества можно вывести последовательность измененных элементов, почитай ссылку volvo.. У меня почему-то всегда выводится 0. :-(( |
volvo |
![]()
Сообщение
#13
|
Гость ![]() |
Цитата У меня почему-то всегда выводится 0. Почему-то программы, при запуске которой "всегда выводится 0" не видно... |
Айра |
![]()
Сообщение
#14
|
Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 731 Пол: Женский Репутация: ![]() ![]() ![]() |
Цитата У меня почему-то всегда выводится 0. :-(( К сожалению мои телепатические способности сейчас на нуле.. Выложи весь свой код ![]() |
ZanakZ |
![]()
Сообщение
#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 |
![]()
Сообщение
#16
|
Гость ![]() |
Ноль у тебя выводится по одной простой причине: ты распечатываешь значение m[i, j] ПОСЛЕ того, как циклы и по I и по J уже закончились (вот они, проблемы неправильного форматирования исходников... Была бы "лесенка" - увидел бы сам сразу же, или вообще не совершил бы такой ошибки), при этом значения I и J считаются неопределенными, кстати...
Выводи матрицу ПОСЛЕ цикла заполнения полностью (а не один элемент). Еще один совет: компилируй программы с {$R+} в первой строке, это поможет тебе выявлять некоторые ошибки... |
ZanakZ |
![]() ![]()
Сообщение
#17
|
Гость ![]() |
Всё запускается! Большое спасибо!
![]() |
![]() ![]() |
![]() |
Текстовая версия | 12.04.2025 5:49 |