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

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

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

 
 Ответить  Открыть новую тему 
> .одномерный массив_вектора, из одного массива получить другой.
сообщение
Сообщение #1


изувер
**

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

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


тема-одномерные масивы_веkтора

задача- из вектора х(х1,х2,...,xn) получить вектор y(x1,x3,x5,...,x6,x4,x2) компоненты которого перенумерованы также от 1 до n.

wacko.gif

ну как всегда-мысли,идеи,пожелания. [jnz dtlm ghjcnfz pflfxf((

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


Знаток
****

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

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


мне кажется тут очень сперва все числа делим на два эти числа х1,х2,...,xn и тогда сортируются которые неделятся без остатка (x1,x3,x5,..) и которые делятся и остатка нету( ...,x6,x4,x2) потом эти числа дописать в конец (x1,x3,x5,..) этим и все кажется.


если я так понел правильно а если нет то извините меня


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


изувер
**

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

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


ну да. все так. сначала нечетные по возрастанию.потом четные по убыванию. смысл задачи то понятен. мне интересно реализацию в паскале. в ней и загвоздка.

Добавлено через 7 мин.
что то вначале типо:
for i:=1 to n do
if i mod 2 >0 then write(a[i],' ');
for j:=n to 1 do
if i mod 2 = 0 then write(a[j],' ' );

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


mea culpa
*****

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

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


const n=20;
var mas1,mas2:array[1..n] of integer;
a,b:integer;
begin
b:=1;
for a:=1 to n do
begin
mas1[a]:=a;
end;
for a:=1 to n do
begin
if (mas1[a] mod 2 = 0) then begin
mas2[b]:=mas1[a];
inc(b);
end;
end;
for a:=1 to n do
begin
if (mas1[n+1-a] mod 2 = 1) then begin
mas2[b]:=mas1[n+1-a];
inc(b);
end;
end;
for a:=1 to n do
begin
write(mas2[a],' ');
end;
readln;
end.



--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


изувер
**

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

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


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


Гость






Цитата
мне интересно реализацию в паскале. в ней и загвоздка.
Идея понятна? smile.gif
const
n = 10;
x: array[1 .. n] of integer = (
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
);
var
y: array[1 .. n] of integer;
i, evens, odds: integer;

begin
for i := 1 to n do write(x[i]:5);
writeln;

evens := n; odds := 1;
for i := 1 to n do
if odd(i) then begin
{ если текущий индекс массива X нечетный - то записываем число спереди (слева направо) в массив Y }
y[odds] := x[i]; inc(odds);
end
else begin
{ если текущий индекс массива X четный - то число пишется в массив Y справа налево }
y[evens] := x[i]; dec(evens);
end;

for i := 1 to n do write(y[i]:5);
writeln;

end.


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


Профи
****

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

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


Что-то такое пришло в глову:
  
i:=1; //для заполнения y с начала
j:=n; //для заполнения y с конца
for k:=1 to n do //проходим по исходному массиву
begin
if (k mod 2 <> 0) then //если повторение цикла нечетное
begin
y[i]:=x[k]; //то выполняем присваивание по i
inc(i); //и увеличиваем i на 1
end
else //а если четное
begin
y[j]:=x[k]; //то присваиваем по j
dec(j); //и уменьшаем j на 1
end;
end;


to volvo: опередил)))

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


mea culpa
*****

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

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


const n=20; {Кол-во элементов каждого из массивов}
var mas1,mas2:array[1..n] of integer;
a,b:integer;
begin
b:=1; {<=переменная-счётчик для добавления элементов во 2ой массив}
for a:=1 to n do {<=Заполнение первого массива числами от 1 до 20}
begin
mas1[a]:=a;
end;
for a:=1 to n do
begin
if (mas1[a] mod 2 = 0) then begin {<=проверка элемента на чётность и добавление его в ячейку массива 2 с индексом b}
mas2[b]:=mas1[a];
inc(b); {<=увеличиваем счётчик на 1}
end;
end;
for a:=1 to n do
begin
if (mas1[n+1-a] mod 2 = 1) then begin{<=проходим массив с конца,т.к. нечётные эл-ты нужно расположить по убыванию.Проверка на НЕчётность}
mas2[b]:=mas1[n+1-a];
inc(b);
end;
end;
for a:=1 to n do
begin
write(mas2[a],' ');
end;
readln;
end.


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


изувер
**

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

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


блин..здорово)

ну а нельзя как нибудь попримитивнее,например:

program;
uses crt;
var a:array[1..n] of integer; i,n,j,k:integer;
BEGIN
clrscr;
write('n='); readln(n);
randomize;
for i:=1 to n do begin
a[i]=random(10)-5;
write(a[i],' ');
end;writeln;
for i:=1 to n do begin
if(iMOD2<>0)then write(a[i],' ');end;
for i:=n downto 1 do begin
if(iMOD2=0)then write(a[i],' ');end;
readln;
END.


такое работает? у меня паскаль не запускается(

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


mea culpa
*****

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

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


Не компилировал, но мне кажется, что можно. Здесь элементы 1го массива не "раскладываются" по ячейкам 2го, а просто выводятся в нужном порядке.

Только добавь название программы , просто "Program" нельзя.

И код нужно заключать в теги [cоde=pas][/cоde] {Здесь он не работает, я в нём букву О русскую написал smile.gif}

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


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

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

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


Цитата
Не компилировал, но мне кажется, что можно. Здесь элементы 1го массива не "раскладываются" по ячейкам 2го, а просто выводятся в нужном порядке.

А вот мне кажется, что нельзя.. потому что в задании сказано получить верктор, а не вывести элементы массива x в таком-то порядке..

и еще, кучаТрупов, как ты думаешь, что выполнится быстрее один цикл или два? чем тебе вариант с одним циклом не нравится? ))

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


Гость






Цитата
Здесь элементы 1го массива не "раскладываются" по ячейкам 2го, а просто выводятся в нужном порядке.
А теперь поднимаем глаза и внимательно читаем задание:
Цитата
задача- из вектора х(х1,х2,...,xn) получить вектор y(x1,x3,x5,...,x6,x4,x2)


Диагноз: такое решение не удовлетворяет условию задачи...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


изувер
**

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

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


дада.я осознала свою ошибку. все понятно.

Добавлено через 2 мин.
Цитата(Айра @ 15.12.2008 20:58) *

А вот мне кажется, что нельзя.. потому что в задании сказано получить верктор, а не вывести элементы массива x в таком-то порядке..

и еще, кучаТрупов, как ты думаешь, что выполнится быстрее один цикл или два? чем тебе вариант с одним циклом не нравится? ))

ну естественно один)мне всем нравится вариант)мне просто интересно будет ли работать то что у меня в голове)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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