Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
1

Пример в C++ надо перевести на C#. Циклический сдвиг элементов массива вправо

05.12.2016, 22:55. Просмотров 1927. Ответов 9
Метки нет (Все метки)


Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом A1 перейдет в A2, A2 — в A3, …, AN — в A1). Вот пример в C++ надо перевести на C#
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    srand(time(0));
    const int size = 20;
    int arr[size];
    for (int i = 0; i < size; i++)
    {
        arr[i] = rand() % 20;
        std::cout << arr[i] << " ";
    }
    int tmp = arr[size - 1];
    for (int i = size - 1; i >= 0; i--)
        arr[i + 1] = arr[i];
    arr[0] = tmp;
    std::cout << std::endl;
    for (int i = 0; i < size; i++) // выводим получившийся массив
        std::cout << arr[i] << " ";
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2016, 22:55
Ответы с готовыми решениями:

Выполнить циклический сдвиг элементов массива вправо на 1 позицию
Доброго времени суток, решил попросить помощи у вас уважаемые форумчане... Не допускается...

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

Выполнить циклический сдвиг элементов вправо на 1 позицию
заполняет элементы массива X, состоящего из n элементов (n≤20 вводится) случайными...

Осуществить циклический сдвиг элементов квадратной матрицы размером М х N вправо на k элементов
Осуществить циклический сдвиг элементов квадратной матрицы размером М х N вправо на k элементов...

9
0 / 0 / 0
Регистрация: 19.01.2016
Сообщений: 9
06.12.2016, 02:58 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            int size = 20;
            int[] mass = new int[20];
            Random rand = new Random();
            for (int i = 0; i < size;i++ )
            {
                mass[i]=rand.Next(1, 100);
 
            }
            Console.WriteLine("Массив до сдвига");
            for (int i = 0; i < size; i++)
            { Console.Write(mass[i] + " "); }
            int[] mass2 = new int[20];
 
            for (int i = 0; i < size-1; i++)
            {
                mass2[i+1] = mass[i];
            }
            mass2[0] = mass[size-1];
            Console.WriteLine("Массив после сдвига");
            for (int i = 0; i < size; i++)
            { Console.Write(mass2[i] + " "); }
           
                Console.ReadKey();
        }
    }
}
0
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
13.12.2016, 16:52  [ТС] 3
можно как-то сделать чтобы человек вводил на сколько позиций должен производиться сдвиг?

Добавлено через 1 минуту
Николай_39, можно как-то сделать чтобы человек вводил на сколько позиций должен производиться сдвиг?
0
900 / 656 / 318
Регистрация: 23.10.2016
Сообщений: 1,537
13.12.2016, 16:56 4
C#
1
2
3
4
5
6
    var random = new Random();
    int[] array = Enumerable.Range(0, 10).Select(i => random.Next(10)).ToArray();
    Console.WriteLine(string.Join(", ", array));
    int shift = int.Parse(Console.ReadLine());
    array = array.Select((e, i) => array[(i-shift+array.Length)%array.Length]).ToArray();
    Console.WriteLine(string.Join(", ", array));
0
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
13.12.2016, 17:10  [ТС] 5
TopLayer, я так понял это класс, программка не работает
0
900 / 656 / 318
Регистрация: 23.10.2016
Сообщений: 1,537
13.12.2016, 17:20 6
Надеюсь, так понятней
C#
1
2
3
4
5
6
7
8
9
static void Main()
{
    var random = new Random();
    int[] array = Enumerable.Range(0, 10).Select(i => random.Next(10)).ToArray();
    Console.WriteLine(string.Join(", ", array));
    int shift = int.Parse(Console.ReadLine());
    array = array.Select((e, i) => array[(i - shift + array.Length) % array.Length]).ToArray();
    Console.WriteLine(string.Join(", ", array));
}
0
10 / 10 / 5
Регистрация: 28.09.2015
Сообщений: 139
13.12.2016, 17:43 7
TopLayer, чего людей путаешь, говори сразу что Linq надо подключать
0
TopLayer
13.12.2016, 18:09
  #8

Не по теме:

Цитата Сообщение от Glitch Посмотреть сообщение
чего людей путаешь, говори сразу что Linq надо подключать
Уж до этого можно догадаться, тем более Visual Studio подсказки выдаёт при наведении указателя мыши на вызов метода.
А путают сообщения типа "программка не работает". Что значит не работает? Не компилируется, вылетает с ошибкой, даёт неверный результат, загорается компьютер и тд.

0
0 / 0 / 1
Регистрация: 04.10.2016
Сообщений: 48
18.12.2016, 21:57  [ТС] 9
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System;
 
namespace ConsoleApplication1
{
  class Program
  {
    static void Main(string[] args)
    {
      int size = 20;
      int[] mass = new int[20];
      Random rand = new Random();
      for (int i = 0; i < size;i++ )
      {
        mass[i]=rand.Next(1, 100);
 
      }
      Console.WriteLine("Массив до сдвига");
      for (int i = 0; i < size; i++)
      { Console.Write(mass[i] + " "); }
      int[] mass2 = new int[20];
 
      for (int i = 0; i < size-1; i++)
      {
        mass2[i+1] = mass[i];
      }
      mass2[0] = mass[size-1];
      Console.WriteLine("Массив после сдвига");
      for (int i = 0; i < size; i++)
      { Console.Write(mass2[i] + " "); }
     
        Console.ReadKey();
    }
  }
}

Можно ли сделать чтобы человек сам вводил с клавиатуры количество позиций для здвига?
И 2 вариант сделать сдвиг влево
0
411 / 311 / 239
Регистрация: 29.05.2010
Сообщений: 787
Записей в блоге: 1
18.12.2016, 23:55 10
Лучший ответ Сообщение было отмечено Skin_Brit как решение

Решение

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
using System;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            const int size = 10;
            int[] arr = new int[size];
            Random rnd = new Random();
 
            for (int i = 0; i < size; i++)
                 arr[i] = rnd.Next(1, 45);
 
            Console.WriteLine(string.Join(" ",arr) + "\r\n");
 
            //right shift 2
            Console.WriteLine(string.Join(" ", RightShift(arr, 2)) + "\r\n");
 
            // left shift 4
            Console.WriteLine(string.Join(" ",LeftShift(arr,4)));
            
            Console.ReadKey();
 
        }
 
        static int[] LeftShift(int[] arr, int count)
        {
            count = count%arr.Length;
            int[] tmp = new int[arr.Length];
            for (int i = 0; i < arr.Length; i++)
                tmp[i] = arr[(i + count)%arr.Length];
            return tmp;
        }
 
        static int[] RightShift(int[] arr, int count)
        { 
            count = count % arr.Length;
            int[] tmp = new int[arr.Length];
            for (int i = arr.Length - 1; i >= 0; i--)
                tmp[i] = arr[(i - count + arr.Length) % arr.Length];
            return tmp;
        }
    }
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.12.2016, 23:55

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

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

Двумерный массив: Осуществить циклический сдвиг элементов квадратной матрицы размером M * N вправо на k элементов
Помогите пожайлуста написать программу на C#: Осуществить циклический сдвиг элементов квадратной...

Массив: Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз
Условие задачи: Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов...

Осуществить циклический сдвиг элементов матрицы вправо на k элементов
Помогите, плз... Осуществить циклический сдвиг элементов матрицы размерности MxN вправо на k...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.