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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> массивы, преоброзование, заполнение, сжатие массивов
сообщение
Сообщение #1


Новичок
*

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

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


Есть такие задачи:
1. Сжать массив, удалив из него все элементы, модуль которых
находится в интервале [a, b]. Освободившиеся в конце массива элементы
заполнить нулями.
2. Преоброзовать массив таким образом, чтобы в первой его половине
распологались элементы, стоявшие в нечетных позициях, а во второй
половине-элементы, стоявшие в четных позициях.
3. Заполнить массив из пятнадцати элементов случайным образом
вещественными значениями х (0<х<105).

Очень нужна помощь с их решением. Помогите, плиз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


Цитата(jenka @ 28.10.2006 1:48) *
1. Сжать массив, удалив из него все элементы, модуль которых
находится в интервале [a, b]. Освободившиеся в конце массива элементы
заполнить нулями.

Словами сказано - интервал, а обозначено как отрезок. Дальнейшее сделано для отрезка - примерно так, но я не проверял.
var 
a,b,c:tElement;
w:array[1..n] of tElement;
.............
j:=0;
for i:=1 to n do begin
c:=w[i]
if (a>c)and(c<b) then begin
Inc(j);
w[j]:=c
end
end;
for i:=j+1 to n do w[i]:=0;


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


Гость






no1.gif Почти... Нужно обратное действие:

if NOT( (a<c)and(c<b) ) then begin
Знак тоже надо исправить на a<c...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


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

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

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


Недремлющий volvo всегда на посту smile.gif. Спасибо!
Сначала я использовал конструкция с NOT, потом решил ее упростить, но забыл сменить and на or sad.gif.
Исправленная версия:
var 
a,b,c:tElement;
w:array[1..n] of tElement;
.............
j:=0;
for i:=1 to n do begin
c:=w[i]
if (a>c)or(c<b) then begin
Inc(j);
w[j]:=c
end
end;
for i:=j+1 to n do w[i]:=0;


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


Гость






Так... А вот теперь у меня вопрос: кто-нибудь сможет написать программу, выполняющую второе задание, без использования доп. массива (если ответ "Да" - то просьба тоже скрывать программу, теги [ SPOILER ] [ /SPOILER ], дайте подумать остальным)... Мое решение:
Спойлер (Показать/Скрыть)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


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

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

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


Цитата(volvo @ 28.10.2006 3:38) *

написать программу, выполняющую второе задание, без использования доп. массива

Вот мое решение.
Пара оговорок:
1. предполагаю, что длина массива четная;
2. сохраняю порядок внутри четных/нечетных групп (в задании это требование отсутствует, но я счел его логичным).
Спойлер (Показать/Скрыть)


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


Гость






lapp, если ты добавишь в самом конце программы:
  for i := 1 to n do
write(w[i]:4);
writeln;
, то у тебя распечатается вот такой массив:
Цитата
1 3 5 7 8 11 13 15 17 2 4 6 8 11 12 14 16 18
, а значит, он запорчен, ибо 8-ка и 11 не должны быть в двух местах...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


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

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

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


volvo, в твоем решении используется рекурсия.. Ничего особенно против нее не имею, но..

1. Если идет речь о неиспользовании массива, то это скорее всего экономия памяти. Рекурсия же использует память очень активно.

2. Последовательными вызовами рекурсивной процедуры возможно сохранить в памяти весь массив, не организуя его.

smile.gif


С твоим замечанием согласен.
Вот исправленная версия..
Спойлер (Показать/Скрыть)


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


Гуру
*****

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

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


Вот мой вариант.
Спойлер (Показать/Скрыть)


Сообщение отредактировано: volvo -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


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

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

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


Цитата(Bokul @ 28.10.2006 5:27) *

Вот мой вариант.

Bokul, для n=12 у тебя непорядок.. sad.gif
При n=10 тоже не очень здорово - не сохраняется порядок. Это, правда, не требуется в задаче..


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


Гуру
*****

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

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


Да, такой способ не идет при количестве кратном 4-ом. unsure.gif


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Профи
****

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

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


Цитата(volvo @ 28.10.2006 3:38) *

Так... А вот теперь у меня вопрос: кто-нибудь сможет написать программу, выполняющую второе задание, без использования доп. массива (если ответ "Да" - то просьба тоже скрывать программу, теги

Может я чего не понял, но вроде все просто:
Спойлер (Показать/Скрыть)

Хотя можно еще стек заиспользовать для хранения вместо массива..
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


раз сохранение порядка необязательно:
Спойлер (Показать/Скрыть)


Сообщение отредактировано: volvo -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






Цитата
раз сохранение порядка необязательно:
, что значит, необязательно? Смысл-то какой в этом тогда? Единственно логичной была бы такая перестановка, после которой массив
<1 2 3 4 5 6 7 8 9 10>
становится таким:
<1 3 5 7 9 2 4 6 8 10>...

excl.gif Автору: Давайте будем полностью и корректно приводить задания... Видите, сколько в них недомолвок и неясностей?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


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

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

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


Цитата(мисс_граффити @ 28.10.2006 12:55) *

раз сохранение порядка необязательно:

Что-та не таво-та...
sad.gif
Running "c:\home\home\ak\pas\th\th014\th014-miss-gr.exe "
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 15 3 13 5 11 7 8 9 10 6 12 4 14 2


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


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


в задании про это ни слова.
бывают ситуации, когда порядок неважен....
может, это массив победителей лотереи, где приз получает каждый второй - вот их и надо в начало массива собрать.
не будем фантазировать. ждем автора.

Malice, проверь при нечетной длине массива...

Цитата(lapp @ 28.10.2006 13:11) *

Что-та не таво-та...
sad.gif
Running "c:\home\home\ak\pas\th\th014\th014-miss-gr.exe "
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
1 15 3 13 5 11 7 8 9 10 6 12 4 14 2

сорри.
разбираюсь...

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


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

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

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


Цитата(мисс_граффити @ 28.10.2006 13:20) *

в задании про это ни слова.
...
Malice, проверь при нечетной длине массива...

А что такое первая и вторая половины массива при нечетной его длине?
В задании про это ни слова.. Будем фантазировать или подождем автора? smile.gif

Хотя, сумлеваюсь я, что автор что-то прояснит.. smile.gif


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


Профи
****

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

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


Цитата(мисс_граффити @ 28.10.2006 13:20) *

Malice, проверь при нечетной длине массива...

а где в таком случае половина ?
2Volvo, задание такое, какое оно есть. Зачем склонять автора к своему варианту ?
Хотя я думаю, что нашим способом тоже можно порядок не нарушить, нужно только добавить еще 1 цикл перестановок по второй части массива. Тогда совсем честно будет, даже честней чем у Volvo, так что мы с мисс_граффити тоже победим smile.gif Попробую сейчас, некогда только - сервер проапгрейдил, перестанавливаю все smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


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

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

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


Цитата(Malice @ 28.10.2006 14:06) *

даже честней чем у Volvo,

?????????? ? ? ?? blink.gif
Цитата(Malice @ 28.10.2006 14:06) *

так что мы с мисс_граффити тоже победим smile.gif

Победит, как обычно дружба! smile.gif smile.gif smile.gif


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


Гость






Цитата
задание такое, какое оно есть
А его никакого нет... Пока Автор не соизволит написать, что ИМЕННО ему нужно...
 К началу страницы 
+ Ответить 

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

 





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