Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
1

Одномерные массивы (циклический сдвиг всех элементов массива на одну позицию влево)

22.12.2013, 17:12. Просмотров 1137. Ответов 14
Метки нет (Все метки)

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

Буду очень благодарен тому, кто поможет. Спасибо...
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 17:12
Ответы с готовыми решениями:

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

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

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

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

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

14
Ev_Hyper
Заблокирован
22.12.2013, 17:17 2
Цитата Сообщение от вано55 Посмотреть сообщение
Написать программу, которая делает циклический сдвиг всех элементов массива а1, а2, ..., аn на одну позицию влево, то-есть будет получен новый массив а2, а3,..,аn, а1.
нужно получить новый массив или изменить старый?
1
palva
3190 / 2301 / 471
Регистрация: 08.06.2007
Сообщений: 8,311
Записей в блоге: 4
22.12.2013, 17:25 3
Цитата Сообщение от вано55 Посмотреть сообщение
то-есть будет получен новый массив а2, а3,..,аn, а1.
Да, вы правы. Только индексация в си начинается с нуля и кончается n-1.
C++
1
2
3
temp=a[0];
for(i=1; i<n; i++) a[i-1]=a[i];
a[n-1]=temp
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
22.12.2013, 17:26  [ТС] 4
Нужно изменить старый
0
palva
3190 / 2301 / 471
Регистрация: 08.06.2007
Сообщений: 8,311
Записей в блоге: 4
22.12.2013, 17:27 5
Цитата Сообщение от вано55 Посмотреть сообщение
будет получен новый массив а2, а3,..,аn, а1.
Мой код делает новый массив на месте старого.
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
22.12.2013, 17:29  [ТС] 6
Ты можешь показать?
0
palva
3190 / 2301 / 471
Регистрация: 08.06.2007
Сообщений: 8,311
Записей в блоге: 4
22.12.2013, 17:35 7
Цитата Сообщение от вано55 Посмотреть сообщение
Ты можешь показать?
Если это мне, то я не понял вопроса.
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
22.12.2013, 17:38  [ТС] 8
Да, тебе. Можешь показать свой код?
0
palva
3190 / 2301 / 471
Регистрация: 08.06.2007
Сообщений: 8,311
Записей в блоге: 4
22.12.2013, 17:41 9
Код, про который я говорил, я выложил выше в #4.

Только я его не проверял на компиляторе, поскольку это фрагмент.
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
22.12.2013, 17:45  [ТС] 10
Значит это я не увидел, спасибо большое)
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
22.12.2013, 17:51  [ТС] 11
Можете написать полный код, потому что я запутался.
0
malfoi
50 / 50 / 61
Регистрация: 17.12.2013
Сообщений: 333
23.12.2013, 15:35 12
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
int main() {
    const int n = 10;
    int arr[n];
    int tmp;
 
    for (int i = 0; i < n; i++)
        std::cin >> arr[i];
    tmp = arr[0];
    for (int i = 0; i < n - 1; i++)
        arr[i] = arr[i + 1];
    arr[n - 1] = tmp;
    for (int i = 0; i < n; i++)
        std::cout << arr[i] << " ";
 
    return 0;
}
1
Ev_Hyper
Заблокирован
26.12.2013, 01:33 13
Цитата Сообщение от вано55 Посмотреть сообщение
Можете написать полный код, потому что я запутался.
Примерно вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main(int argc, char* argv[])
{
    int a[6]={0,1,2,3,4,5};
    int n=6;
int temp=a[0];
for(int i=1; i<n; i++) a[i-1]=a[i];
a[n-1]=temp;
 
for(int i=0;i<n;i++)
    cout<<a[i]<<" ";
return 0;
}
Или вам нужен динамический массив?
0
вано55
0 / 0 / 0
Регистрация: 22.12.2013
Сообщений: 10
26.12.2013, 15:48  [ТС] 14
Да, если можно динамический массив, буду очень признателен.
0
outoftime
║XLR8║
840 / 738 / 223
Регистрация: 25.07.2009
Сообщений: 3,695
Записей в блоге: 5
26.12.2013, 16:15 15
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <iterator>
#include <algorithm>
 
int main()
{
    std::vector<int> v = {0,1,2,3,4,5,6,7,8,9};
    std::rotate(v.begin(), std::next(v.begin()), v.end());
    std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
    
    return EXIT_SUCCESS;
}
Bash
1
2
3
4
5
D:\Projects\c++\help>make
g++ cyberforum.cpp -o run.exe -std=c++11
 
D:\Projects\c++\help>run.exe
1 2 3 4 5 6 7 8 9 0
1
26.12.2013, 16:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2013, 16:15

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

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

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


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

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

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