Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/75: Рейтинг темы: голосов - 75, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 42
1

Циклический сдвиг элементов массива влево на одну позицию

03.04.2018, 09:14. Показов 15277. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дан массив размера N. Осуществить циклический сдвиг элементов массива влево на одну позицию (при этом AN перейдет в AN-1, AN-1 - в AN-2, ., A1 - в AN). Помогите пожалуйста выполнить в С++
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.04.2018, 09:14
Ответы с готовыми решениями:

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

Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево)
Написать программу, которая делает циклический сдвиг всех элементов массива а1, а2, ..., аn на одну...

Осуществить циклический сдвиг элементов массива вправо на одну позицию
4Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при...

Циклический сдвиг элементов массива влево
Совершить циклический сдвиг элементов массива влево так, чтобы первый максимальный элемент был на...

11
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
03.04.2018, 09:31 2
Лучший ответ Сообщение было отмечено stepanych_iz_84 как решение

Решение

Наверное так
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
#include <iostream>
#include <cstdlib>
#include <ctime>
 
int main()
{
    setlocale(LC_ALL, "Russian");
    srand(time(NULL));
    int n;
    std::cout<<"Введте длинну массива: ";
    std::cin>>n;
    int x[n]={},y[n]={};
 
    for (int i=0; i<n; ++i)
    {
        x[i]=rand() %201-100;
        std::cout<<x[i]<<" ";
    }
 
    std::cout<<"\n";
 
    int t=x[0];
    for (int i=0; i <= n; i++)
    {
        x[i]=x[i+1];
    }
    x[n-1]=t;
 
    std::cout<<"\nМассив со сдвигом\n";
    for (int i=0; i<n; i++)
    {
        std::cout<<x[i]<<" ";
    }
    return 0;
}
1
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 42
03.04.2018, 09:45  [ТС] 3
LemurDC, код с массой каких либо ошибок, в общем не идет.
0
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
03.04.2018, 09:46 4
=) на чем запускаете?)
0
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 42
03.04.2018, 09:48  [ТС] 5
LemurDC, Visual Studio 2015
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
03.04.2018, 09:53 6
У меня это правильно работает в MinGW. При компиляции только предупреждает, что переменная y объявлена, но не используется.
0
17 / 17 / 13
Регистрация: 06.02.2014
Сообщений: 114
03.04.2018, 09:53 7
а если закоментируете строки 10-11 и в 9 напишите
C++
1
int n=10;
ну и 12 заменить на
C++
1
int x[10]={},y[10]={};
palva, забыл удалить ее..(
P.S. нет под рукой вижуала, чтобы нормально подогнать
0
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 42
03.04.2018, 10:05  [ТС] 8
LemurDC,
Ошибка C2679 бинарный "=": не найден оператор, принимающий правый операнд типа "int" (или приемлемое преобразование отсутствует)
Вот что выдает.
0
4240 / 2937 / 687
Регистрация: 08.06.2007
Сообщений: 9,817
Записей в блоге: 4
03.04.2018, 10:13 9
stepanych_iz_84, вы можете посмотреть, какая версия языка у вас включена?
На какую строчку ругается при компиляции?
0
0 / 0 / 0
Регистрация: 20.03.2018
Сообщений: 42
03.04.2018, 10:21  [ТС] 10
palva, на 9 строчку, когда написал int n=10

Добавлено через 4 минуты
LemurDC, пасиб большое, я разобрался))
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
03.04.2018, 17:23 11
LemurDC, идея верна но реализация имеет минусы. 1. не факт что массив целочисленный. 2. массив y[n] не нужен. 3. массив x[n] задаёте не по стандарту. 4. выход за пределы массива 2 раза при i=n-1 и при i=n т.е. переставляете значения не принадлежащие массиву.

stepanych_iz_84,

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
#include <iostream>
#include <ctime>
using namespace std;
 
int main()
{
    srand((int)time(0));
    int N;
    cout <<"Enter N: "; cin >>N;
 
    double*a = new double[N];
 
    for (int i = 0; i < N; i++)
      {
      a[i]=rand()%9 + 1;
      cout <<a[i]<<" ";
      }
    cout <<endl;
    
    double temp=a[0];
    for (int i=0; i <N-1; i++)
    a[i]=a[i+1];    
    a[N-1]=temp;
    
    for (int i=0; i<N; i++)    
    cout<<a[i]<<" ";    
    
    delete[]a;
 
return 0;
}
1
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
15.04.2018, 14:30 12
stepanych_iz_84, здравствуйте! Можно, также, использовать встроенную функцию rotate():

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <bits/stdc++.h>
 
    using namespace std;
 
int main() {
    int n;
    cout << "Enter an array size:\n";
    cout << "n = ";
    cin >> n;
    double* arr = new double[n];
    cout << "Enter an array:\n";
    for (int i = 0; i < n; i++) {
        cin >> arr[i];
    }
    rotate(arr, arr + 1, arr + n);
    cout << "Target array:\n";
    for (int i = 0; i < n; i++) {
        cout << arr[i] << " ";
    }
    delete [] arr;
    system("pause");
    return 0;
}
0
15.04.2018, 14:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.04.2018, 14:30
Помогаю со студенческими работами здесь

Функция: циклический сдвиг элементов массива влево
нужен код программы, которая сдвигает элементы массива на 1 влево, тоесть было 1 5 6 8 9, стало 5 6...

Циклический сдвиг элементов массива по диагонали влево вниз
Квадратный массив N×N по диагонали влево вверх. ...

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

Циклический сдвиг массива влево
Дан массив y1, ... , y20. Сформировать массив Z1, ... , Z20, элементы которого соответствуют...


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

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