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

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

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

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


изувер
**

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

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


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

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

wacko.gif

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

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


Знаток
****

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

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


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


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


--------------------
Учусь первый год на программиста в колледже. Учусь на втором курсе в школе программирования при научно-исследовательском институте математики и информатики.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
кучаТрупов
сообщение 15.12.2008 20:07
Сообщение #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 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 15.12.2008 20:16
Сообщение #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 
 К началу страницы 
+ Ответить 
кучаТрупов
сообщение 15.12.2008 20:21
Сообщение #5


изувер
**

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

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


хмм..тяжко.не въеду никак.
спасибо за содействие)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 15.12.2008 20:24
Сообщение #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 - 15.12.2008 20:26
 К началу страницы 
+ Ответить 
Айра
сообщение 15.12.2008 20:25
Сообщение #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: опередил)))

Сообщение отредактировано: Айра - 15.12.2008 20:32
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 15.12.2008 20:31
Сообщение #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 
 К началу страницы 
+ Ответить 
кучаТрупов
сообщение 15.12.2008 20:42
Сообщение #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 - 15.12.2008 23:04
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Unconnected
сообщение 15.12.2008 20:46
Сообщение #10


mea culpa
*****

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

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


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

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

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

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


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


Профи
****

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

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


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

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

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

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


Гость






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


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


изувер
**

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

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


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

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

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

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

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

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

 



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