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

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

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

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


Новичок
*

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

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


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

Очень нужна помощь с их решением. Помогите, плиз.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.10.2006 1:48
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2006 2:05
Сообщение #3


Гость






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

if NOT( (a<c)and(c<b) ) then begin
Знак тоже надо исправить на a<c...
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.10.2006 2:12
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2006 2:38
Сообщение #5


Гость






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


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

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

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


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

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

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2006 4:21
Сообщение #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 не должны быть в двух местах...
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.10.2006 4:26
Сообщение #8


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

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

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


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

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

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

smile.gif


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


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


Гуру
*****

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

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


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


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


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


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

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

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


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

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

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


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


Гуру
*****

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

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


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


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


Профи
****

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

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


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

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

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

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


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

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

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


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


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


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


Гость






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

excl.gif Автору: Давайте будем полностью и корректно приводить задания... Видите, сколько в них недомолвок и неясностей?
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.10.2006 12:11
Сообщение #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 
 К началу страницы 
+ Ответить 
мисс_граффити
сообщение 28.10.2006 12:20
Сообщение #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

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

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


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


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

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

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


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

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

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

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


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


Профи
****

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

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


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

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

а где в таком случае половина ?
2Volvo, задание такое, какое оно есть. Зачем склонять автора к своему варианту ?
Хотя я думаю, что нашим способом тоже можно порядок не нарушить, нужно только добавить еще 1 цикл перестановок по второй части массива. Тогда совсем честно будет, даже честней чем у Volvo, так что мы с мисс_граффити тоже победим smile.gif Попробую сейчас, некогда только - сервер проапгрейдил, перестанавливаю все smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 28.10.2006 13:14
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 28.10.2006 13:23
Сообщение #20


Гость






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

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

 



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