Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.07.2009, 10:35   #1
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию С++. Операции с массивами

Заданый Логический вектор Х(х1,х2,х3.....хn). Сделать цикличный сдвиг этого вектора
а) влево на одну позицию то есть:
Х=(х2,х3,х4.....хn,х1)ж
б)вправо на две позиции то есть :
Х=(Х к-1,х к-2).
Вывести на екран Исходный вектор и два преобразованые.
Даные к=8; х=(0,4;0,6;0,8;1,4;6,2;8,3;2,1;3,3) .
Надеюсь на вашу помощь...
Сергей Человек вне форума Ответить с цитированием
Старый 09.07.2009, 10:51   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

А логика вектора в чем заключается? По какому принципу пары оцениваются?
puporev вне форума Ответить с цитированием
Старый 09.07.2009, 10:55   #3
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

a)
x[n]=x[1]
for i:=2 to n do
x[i-1]:=x[i]
2)
x[1]:=x[n-1];
x[2]:=x[n];
for i:=1 to n do
x[i+2]:=x[i]
danekne вне форума Ответить с цитированием
Старый 09.07.2009, 11:03   #4
Сергей Человек
Пользователь
 
Регистрация: 06.07.2009
Сообщений: 13
По умолчанию

Ребята забыл сказать что это нужно сделать в с++, а логический всмысле вещественный тип даных(FLOAT)
Сергей Человек вне форума Ответить с цитированием
Старый 09.07.2009, 11:14   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
а логический всмысле вещественный тип даных(FLOAT)
Сам понял, что написал? Ты видно совсем не рубишь в этом. Логический вектор это массив типа boolean, а в массиве записаны сравнения пары чисел, например
const x:array[1..8] of boolean=(0>4,0>6,0>8,1>4,6>2,8>3,2> 1,3>3);
При выводе на экран получишь
false false false false true true true false
С++ не знаю, извини.
Кстати алгоритм сдвига, предложенный товарищем неверный. Нужно менять элементы с использованием буфера.
Здесь что написано
x[n]=x[1] //первый ставим вместо последнего
for i:=2 to n do//сдвигаем на 1 вправо
x[i-1]:=x[i] //вроде как все элементы стали первыми

Последний раз редактировалось puporev; 09.07.2009 в 11:16.
puporev вне форума Ответить с цитированием
Старый 09.07.2009, 11:17   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

1)
Код:
float tmp = x[0];
for(int i=0; i<N-1; i++)
 x[i] = x[i+1];
x[N-1] = tmp;
2)
Код:
float tmp1 = x[N-1], tmp2 = x[N-2];
for(int i=N-1; i>1; i--)
 x[i] = x[i-2];
x[1] = tmp1;
x[0] = tmp2;
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.07.2009, 11:29   #7
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Pupolev, массив 1 2 3 4 5 6
После x[n]=x[1]
1 2 3 4 5 1
Первая итерация:
x[1]:=x[2] (сдвиг влево идет).
Дальше так же. x[2]:=x[3]. И кто же тут станет первым?
danekne вне форума Ответить с цитированием
Старый 09.07.2009, 11:45   #8
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

danekne, и в итоге получаем новый массив: 2 3 4 5 1 1
Явно не то, что нужно.

А вот что у вас получится во втором случае: 5 6 5 6 5 6
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 09.07.2009, 11:48   #9
danekne
Форумчанин
 
Регистрация: 12.02.2007
Сообщений: 360
По умолчанию

Угу... правильно. Нетуть паскаля под рукой((( А лишние переменные приучили не использовать
danekne вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
операции з матрицей, кнопкой и массивами с# Natok Помощь студентам 1 21.05.2009 01:57
Простейщие операции над массивами ZloyGenii2008 Паскаль, Turbo Pascal, PascalABC.NET 0 27.12.2008 14:24
Операции с массивами Stelix Помощь студентам 3 26.03.2008 22:11
Операции с массивами Hakman Помощь студентам 10 19.02.2008 18:36