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

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

Войти
Регистрация
Восстановить пароль
 
_Лето_
1 / 1 / 0
Регистрация: 03.11.2013
Сообщений: 68
#1

Массивы: переворот, сдвиг вправо, перестановка - C++

28.11.2013, 23:05. Просмотров 351. Ответов 1
Метки нет (Все метки)

Здравствуйте. Не могу разобраться с задачками. Пожалуйста, помогите.
1) 12345 - 54321
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
int main()
{ // 1234 - 4321
    const int size=5;
    int mas[size]={1,2,3,4,5};
    int a;
    for(int i=0;i<size/2+1;i++)
    {
        a=mas[i];
        mas[i]=mas[size-1-i];
        mas[size-1-i]=a;
    }
    for(int i=0;i<size;i++)
    {
        cout<<mas[i]<<" ";
    }
return 0;
}
С эти вроде все более менее понятно, но если я ставлю size = 4, то он почему то выводит 4231...

2) 1234 - 3412
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 const int size=4;
    int mas[size]={1,2,3,4};
    int a;
    for(int i=0;i<(size-1)/2;i++)
    {
        a=mas[i];
        mas[i]=mas[size-2-i];
        mas[size-2-i]=a;
        mas[i]=mas[size];
        mas[size]=a;
 
 
 
    }
    for(int i=0;i<size;i++)
    {
        cout<<mas[i]<<" ";
    }
return 0;
}
Не могу найти ошибку. Пожалуйста, подскажите.

3) 1234 - 2341 - ?


4) 1234 - 4123
{


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  {
  int mas[] = { 1, 2, 3, 4, 5 }, n = sizeof(mas) / sizeof(mas[0]);
    for (int i = 0; i < n; ++i) 
         cout << mas[i] << ' ';
 
    for (int i = n - 1; i > 0; --i) 
         mas[i] = mas[i - 1];
         mas[0] = 5;
 
    cout << '\n';
    for (int i = 0; i < n; ++i) 
         cout << mas[i] << ' ';
    return 0;
}
Как эта программа работает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.11.2013, 23:05
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массивы: переворот, сдвиг вправо, перестановка (C++):

Массивы. Вначале заполнить элементами с четными индексами, а затем — с нечетными. Осуществить сдвиг вправо на k позиций - C++
При выполнении задания элементы массива генерировать с помощью генератора случайных чисел. 1. Дан массив A. Заполнить массив В...

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

Циклический сдвиг вправо - C++
Нужно сделать цеклический сдвиг машинного слова на 1 байт влево, через union и через побитовые операции. Вот так я пишу побитовый сдвиг ...

Сдвиг числа вправо - C++
Помогите, мне нужно реализовать машинный алгоритм умножения чисел. Первое число нужно сдвигать постоянно вправо и выводить на экран. Данный...

Сдвиг строки вправо - C++
Нужно написать программу по наследованию которая измеряет длину строки и сдвигает строку в право на один символ. Программа выдает следующую...

Сдвиг массива вправо на K позиций - C++
Даны натуральные числа N, K и массив из N целых чисел. Требуется, не используя дополнительные массивы, циклически сдвинуть элементы...

1
ValeryS
Модератор
6709 / 5118 / 482
Регистрация: 14.02.2011
Сообщений: 17,213
28.11.2013, 23:18 #2
Цитата Сообщение от _Лето_ Посмотреть сообщение
for(int i=0;i<(size-1)/2;i++)
* * {
* * * * a=mas[i];
* * * * mas[i]=mas[size-2-i];
* * * * mas[size-2-i]=a;
* * * * mas[i]=mas[size];
* * * * mas[size]=a;
}
ну ты и накрутил
Цитата Сообщение от _Лето_ Посмотреть сообщение
mas[i]=mas[size-2-i];
думаешь это последний элемент
Цитата Сообщение от _Лето_ Посмотреть сообщение
mas[i]=mas[size];
выход за пределы массива
вот тебе функция переворота
C++
1
2
3
4
5
6
7
8
9
void Reverse(int * arr, int sz)
 {
   for(int i=0;i<sz/2;i++)
    {
     int tmp=arr[i];
     arr[i]=arr[sz- i-1];
     arr[sz- i-1]=tmp;
   }
 }
а вообще посмотри тему
Функция сдвига массива
может что возьмешь для себя
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.11.2013, 23:18
Привет! Вот еще темы с ответами:

Циклический сдвиг массива вправо - C++
дан двумерный массив MxN нужно осуществить поэлементный сдвиг вправо на 1 элемент

Побитовый сдвиг влево и вправо - C++
Что выполнится быстрее - сдвиг влево или сдвиг вправо? И как замерить время выполнения каждой из операций в коде? Добавлено через 2...

круговой сдвиг массива вправо - C++
Напишите программу которая принимает двухмерный массив целых чисел и количество сдвигов и выполняет круговой сдвиг массива вправо. ...

Сдвиг элементов массива вправо - C++
Добрый вечер всем. У меня возник такой вопрос. Можно ли сдвинуть элементы массива вправо на одну позицию, при это цикл начинать не с...


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

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

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