0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 16
1

Переписать алгоритм смещения элементов массива на две позиции вправо

29.11.2012, 00:12. Показов 2456. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ниже представлен алгоритм массива со смещением элементов массива влево на 1 позицию. Помогите переделать этот алгоритм и сделать смещение вправа на 2 позиции!
алгоритм тут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Console.Write("Введите размерность массива N=");
            int N = int.Parse(Console.ReadLine());
            int i = 0;
            int[] A, B;
            A = new int[N];
            B = new int[N];
            while (i <= N - 1)
            {
                Console.Write("A[" + i + "]=");
                A[i] = int.Parse(Console.ReadLine());
                ++i;
            }
            for (i = 0; i <= N - 2; ++i) B[i] = A[i + 1];
            B[N - 1] = A[0];
            i = 0;
            do
            {
                Console.WriteLine("B[" + i + "]=" + B[i]);
                ++i;
            }
            while (i < N);
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2012, 00:12
Ответы с готовыми решениями:

Сделать перемещение массива В вправо на две позиции
Помогите с массивами/строками плз ... Задан массив A(n), n&lt;= 12. Сделать массив В с элементов...

Циклически сдвинуть элементы массива на две позиции вправо
Доброго времени суток уважаемые форумчане! Совсем недавно я начал изучать программирование и...

Дан линейный массив из N целых чисел (N=10). Циклически сдвинуть элементы этого массива на две позиции вправо
Дан линейный массив из N целых чисел (N=10). Циклически сдвинуть элементы этого массива на две...

Осуществить циклический сдвиг элементов массива влево/вправо на k позиции
Дан массив размера N и число k (0&lt;k&lt;5,k&lt;N).Осуществить циклический сдвиг элементов массива...

7
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
29.11.2012, 01:07 2
C#
1
2
3
4
5
6
7
8
9
            int[] A = { 6, 34, 2, 3, 665, 69, 1, 2332 };
            int length = A.Length;
            int[] B = new int[length];
            int shift = 2;
            shift %= length;
            for (int i = 0; i < length; i++)
                B[(i + length - shift) % length] = A[i];
            for (int i = 0; i < length; i++)
                Console.WriteLine("B[{0}]: {1}", i, B[i]);
1
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 16
29.11.2012, 22:29  [ТС] 3
Цитата Сообщение от Necronomicron Посмотреть сообщение
C#
1
2
3
            
            int length = A.Length;
            int[] B = new int[length];
скажите что означают эти строки?
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
29.11.2012, 22:45 4
Мазурик,
  1. Присваиваем переменной размер массива.
  2. Создаём новый массив, по длине равный исходному.
1
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 16
29.11.2012, 23:45  [ТС] 5
Как вписать туда ввод размерности массива и присвоению массиву своего числа (А[0]=1, A[1]=2, A[2]=3..A[i]=N)?
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
30.11.2012, 00:01 6
Мазурик, ничего не понял.
Это?
C#
1
2
3
            int[] A = new int[Int32.Parse(Console.ReadLine())];
            for (int i = 0; i < A.Length; i++)
                A[i] = i + 1;
Добавлено через 5 минут
Если есть вероятность ввода какого-то мусора вместо числа, то используй TryParse.
0
0 / 0 / 0
Регистрация: 07.11.2012
Сообщений: 16
30.11.2012, 00:11  [ТС] 7
Цитата Сообщение от Necronomicron Посмотреть сообщение
Мазурик, ничего не понял.
.
Надо что бы работало как
тут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Console.Write("Введите размерность массива N=");
            int N = int.Parse(Console.ReadLine());
            int i = 0;
            int[] A, B;
            A = new int[N];
            B = new int[N];
            while (i <= N - 1)
            {
                Console.Write("A[" + i + "]=");
                A[i] = int.Parse(Console.ReadLine());
                ++i;
            }
            for (i = 0; i <= N - 2; ++i) B[i] = A[i + 1];
            B[N - 1] = A[0];
            i = 0;
            do
            {
                Console.WriteLine("B[" + i + "]=" + B[i]);
                ++i;
            }
            while (i < N);

только со смещением 2 вправо
0
65 / 50 / 7
Регистрация: 09.11.2012
Сообщений: 219
30.11.2012, 00:33 8
C#
1
2
3
4
5
6
7
8
9
            int[] A = { 6, 34, 2, 3, 665, 69, 1, 2332 };
            int length = A.Length;
            int[] B = new int[length];
            int shift = 2;
            shift %= length;
            for (int i = 0; i < length; i++)
                B[(i + length + shift) % length] = A[i];
            for (int i = 0; i < length; i++)
                Console.WriteLine("B[{0}]: {1}", i, B[i]);
length — это и есть N.
Кстати, лучше просто ввести строку (не указывая величину массива), затем сплитнуть строку и создать массив с размером, равным количеству элементов.
Либо, если вводить по одному, то использовать не массив, а список List<T>, а затем, при необходимости, перевести его уже в массив.
1
30.11.2012, 00:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.11.2012, 00:33
Помогаю со студенческими работами здесь

Дан массив А из n элементов. Произведите сдвиг элементов исходного массива на две позицию вправо
Дан массив А из n элементов. Произведите сдвиг элементов исходного массива на две позицию вправо ...

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

Осуществить циклический сдвиг компонент заданного вектора вправо на две позиции
Осуществить циклический сдвиг компонент заданного вектора A(N) вправо на две позиции, то есть...

Осуществите циклический сдвиг компонент заданного вектора A(N) вправо на две позиции
Осуществите циклический сдвиг компонент заданного вектора A(N) вправо на две позиции, то есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru