Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 122
#1

массив, сдвиг влево - C++

23.11.2013, 00:03. Просмотров 352. Ответов 9
Метки нет (Все метки)

нужен код программы, которая сдвигает элементы массива на 1 влево, тоесть было 1 5 6 8 9, стало 5 6 8 9 1 ...
через функцию(в main только вызов функции, одномерный массив с использованием указателей)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 00:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос массив, сдвиг влево (C++):

Одномерный массив. Циклический сдвиг влево - C++
Дан массив A размера N и целое число K (1 ≤ K ≤ 4, K < N). Осущест- вить циклический сдвиг элементов массива влево на K позиций (при этом...

Квадратный массив N×N по диагонали влево вниз (циклический сдвиг) - C++
Эта программа выполняет циклический сдвиг по диагонали влево вверх, а надо по диагонали влево вниз. Код: #include<iostream.h> ...

Где и когда уместно применять операции << (сдвиг влево) и >> (сдвиг вправо)? - C++
Кто может привести пример , когда нужно использовать операции: 1) &lt;&lt; сдвиг влево 2) &gt;&gt; сдвиг вправо

Сдвиг влево - C++
Напишите программу, которая циклически сдвигает элементы массива влево (0-й элемент становится последним, 1-й становится 0-м, ...,...

Циклический сдвиг влево - C++
Помогите написать программу которая будет осуществлять циклический сдвиг влево введённого числа на N разрядов (например, при сдвиге числа...

Логический сдвиг влево - C++
unsigned __int64 number = 239176053778592; ClongNumber c(number); c.print(); for(int i = 0; i &lt; 18; i++) { unsigned...

9
Abram_TA
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 9
23.11.2013, 00:28 #2
Вот как пример:

#include<iostream>

using namespace std;

int main()
{
const int size=10;
int arr[size]={0,1,2,3,4,5,6,7,8,9};
cout<<"Our array:"<<endl;
for(int i=0;i<size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
int a=arr[0];
for(int i=0;i<size;i++){
if(i==size-1){
arr[i]=a;
break;
}
arr[i]=arr[i+1];
}
cout<<"Our new array:"<<endl;
for(int i=0;i<size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}

Добавлено через 3 минуты
Сорри, забыл что вам надо в виде функции.

тогда вот как будет выглядеть функция:
void to_left(int arr[],int size){
int a=arr[0];
for(int i=0;i<size;i++){
if(i==size-1){
arr[i]=a;
break;
}
arr[i]=arr[i+1];
}
}

Вот пример вызова:
to_left(arr,10);
0
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 122
23.11.2013, 00:29  [ТС] #3
Да вроде то, но нужна функция...
0
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 00:34 #4
Была и у меня такая лабораторная работа. Сдал я ее в таком виде. Был вариант попроще но я его потерял.
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
#include <iostream>
#include <stdlib.h>
using namespace std;
 
int main()
{
    setlocale(0,"");
    int a,k,d,*m,n;
    cout<<"Введите длинну массива - "; 
    cin>>a; 
    cout<<"Введите сдвиг - ";
    cin>>k;
    nap:
    cout<<"Направление:"<<endl<<"1. Лево"<<endl<<"2. Право"<<endl;
    cin>>n;
    if (!(n==1 || n==2))
        goto nap;
    m=(int*) malloc (a*sizeof(int));
    for (int i = 0; i<a; i++)
    {cout<<i+1<<"-й элемент - ";
        cin>>m[i];}
    for (int i=0; i<k; i++)
        {if (n == 1)
            {d = m[0];
         for (int j = 0; j<a-1; j++)
            swap(m[j],m[j+1]);
         m[a-1]=d;}
        else
        {d = m[a-1];
         for (int j = a-1; j>0; j--)
            swap(m[j],m[j-1]);
         m[0]=d;}
    }
    for (int i = 0; i<a; i++)
        cout<<m[i]<<" ";
    cout<<endl;
    system("pause");
    free(m);
    return 0;
}
0
Abram_TA
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 9
23.11.2013, 00:35 #5
так вот она в низу я ее добавил
0
gray_fox
What a waste!
1522 / 1227 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
23.11.2013, 00:35 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <iterator>
#include <algorithm>
 
 
int main() {
   std::size_t const arraySize = 10;
   int array[arraySize] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
 
   std::rotate(array, array + 1, array + arraySize);
 
   std::copy(array, array + arraySize, std::ostream_iterator<int>(std::cout, " "));
   std::cout << std::endl;
}
одна функция
0
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 00:42 #7
Извиняюсь. Тоже забыл про функции. Вот:
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
#include <iostream>
#include <stdlib.h>
using namespace std;
void input(int *m,int n)
{
    for (int i = 0; i<n; i++)
    {
        cout<<i+1<<"-й элемент - ";
        cin>>m[i];
    }
}
void left(int *m,int n,int k)
{
    int d;
    for (int i=0; i<k; i++)
        {
        d = m[0];
         for (int j = 0; j<n-1; j++)
            swap(m[j],m[j+1]);
         m[n-1]=d;
        }
 
}
void output(int *m,int n)
{
    for (int i = 0; i<n; i++)
        cout<<m[i]<<" ";
}
int main()
{
    setlocale(0,"");
    int *m,n,k;
    cout<<"Введите длинну массива - "; 
    cin>>n; 
    cout<<"Введите сдвиг - ";
    cin>>k;
    m=(int*) malloc (sizeof(int)*n);
    input(m,n);
    left(m,n,k);
    output(m,n);
    system("pause>void");
    free(m);
    return 0;
}
1
Abram_TA
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 9
23.11.2013, 00:44 #8
Вот так допустим она может выглядеть полностью(вся программа):

#include<iostream>
using namespace std;

void to_left(int arr[],int size); //прототип функции

int main()
{
const int size=10;
int arr[size]={0,1,2,3,4,5,6,7,8,9};
cout<<"Our array:"<<endl;
for(int i=0;i<size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;

to_left(arr,10); //собственно вызов этой функции

cout<<"Our new array:"<<endl;
for(int i=0;i<size;i++){
cout<<arr[i]<<" ";
}
cout<<endl;
}

void to_left(int arr[],int size){ //сама функция
int a=arr[0];
for(int i=0;i<size;i++){
if(i==size-1){
arr[i]=a;
break;
}
arr[i]=arr[i+1];
}
}

Добавлено через 2 минуты
Так интерестно , сообщения не обновляются пока ты не пошлешь. Так я думал что вы ничего не написали а оказывается написали =) Ну в общем вродебы мы разобрались!
0
cHuVbaka
0 / 0 / 0
Регистрация: 09.11.2013
Сообщений: 122
23.11.2013, 00:50  [ТС] #9
Abram_TA, о спасибо) теперь кажись то...и ещё в задании было использовать MAIN только для вызова, это ничего не меняет?))
0
Abram_TA
1 / 1 / 0
Регистрация: 22.11.2013
Сообщений: 9
24.11.2013, 05:04 #10
нет, наверное это значило что функция должна вызываться из главной функции - main()
0
24.11.2013, 05:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 05:04
Привет! Вот еще темы с ответами:

Сдвиг символа влево - C++
Помогите осуществить сдвиг символа (буквы) из циклического алфавита на n влево. То есть, например, на вход методу дается буква 'A' и число...

Сдвиг слов влево - C++
В переменной a есть строка из 5 слов. Как в цикле сделать сдвиг каждого слова влево и вывести каждый измененный результат? Например...

Циклический сдвиг массива влево - C++
условие: задан массив целочисленный состоящий из 10 элементов нужно сделать циклический сдвиг влево так чтобы первый максимум стал на...

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


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

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

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