Форум программистов, компьютерный форум CyberForum.ru

Сдвиг влево - C++

Восстановить пароль Регистрация
 
rewq
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 5
02.11.2012, 14:41     Сдвиг влево #1
Напишите программу, которая циклически сдвигает элементы массива влево (0-й элемент становится последним, 1-й становится 0-м, ..., последний становится предпоследним). Сначала задано число n - количество элементов в массиве ( не превышает 100). Далее через пробел записаны n чисел - элементы массива. Выведите элементы получившегося массива
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петр1
 Аватар для Петр1
3 / 1 / 1
Регистрация: 09.10.2012
Сообщений: 25
02.11.2012, 15:00     Сдвиг влево #2
Как вариант.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    srand(time(NULL));
    const int n=10;
    int arr[n];
    for(int i=0; i<n; i++){
        arr[i]=rand()%5+5;
        cout<<arr[i]<<" ";
    }
    for(int i=0; i<n-1; i++){
        arr[n-i-1]=arr[n-i-1]+arr[n-i-2];
        arr[n-i-2]=arr[n-i-1]-arr[n-i-2];
        arr[n-i-1]=arr[n-i-1]-arr[n-i-2];
    }
    cout<<"\n";
    for(int i=0; i<n; i++){
        cout<<arr[i]<<" ";
    }
cout<<"\n";
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
02.11.2012, 15:35     Сдвиг влево #3
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
#include "stdafx.h"
#include "iostream"
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL, "Russian");
 
    const int n = 10;
    int A[n];
 
    // заполнение массива
    cout << "Введите через пробел " << n << " чисел: ";
    for (int i=0; i<n; i++)
        cin >> A[i];
 
    // сдвиг влево
    int tmp = A[0];
    for (int i=1; i<n; i++)
        A[i-1] = A[i];
    A[n-1] = tmp;
 
    // печать массива
    for (int i=0; i<n; i++)
        cout << A[i] << ' ';
    cout << endl;
 
    system("pause");
    return 0;
}
DiffEreD
 Аватар для DiffEreD
1420 / 757 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.11.2012, 15:55     Сдвиг влево #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
#include <array>
 
int main()
{
    setlocale (LC_ALL, "Russian");
    std::array<int, 10> ar;
    int i = 0;
    std::cout<<"Массив до:                 ";
    for (int& x : ar) {x = i++; std::cout<<x<<" ";}
    std::cout<<"\nСдвиг влево на 2 позиции:  ";
    std::rotate(ar.begin(), ar.begin()+2, ar.end());
    for (const int& x : ar) std::cout<<x<<" ";
    std::cout<<"\nСдвиг вправо на 4 позиции: ";
    std::rotate(ar.rbegin(), ar.rbegin()+4, ar.rend());
    for (const int& x : ar) std::cout<<x<<" ";
    std::cout<<std::endl;
    system("pause");
    return 0;
}
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
02.11.2012, 16:00     Сдвиг влево #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
   std::vector<int> v = {1,2,3,4,5,6,7,8,9};
   std::rotate(v.begin(), v.begin() + 1, v.end());
   std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
http://liveworkspace.org/code/c29f53...64be2aea160529
Yandex
Объявления
02.11.2012, 16:00     Сдвиг влево
Ответ Создать тему
Опции темы

Текущее время: 15:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru