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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
#1

Очередное "Сдвинуть циклически на M элементов вправо" - C++

26.10.2010, 00:42. Просмотров 1454. Ответов 5
Метки нет (Все метки)

Нашёл примеры на форуме, сделал вроде как надо а вы бивает чтот оне понятное!

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
# include <iostream.h>
# include <stdlib.h>
# include <conio.h>
 
void main()
{
clrscr();
int a[100], b[100];
int i, n,m ;
 
cout << "\nEnter the size of array: ";
cin >> n;
     for (i=0;i<n;i++)
     {
      a[i]=rand()%100-50;
      cout << a[i] <<" ";
     }
cout << endl;
 
cout<<"Vvedite M: "<<endl;
cin>>m;
for (i=0; i<m; i++)
    b[i]=a[n-1-m];
for (i=n-1;i>m;--i)
    a[i]=a[i-m];
for (i=0; i<m;++i)
    a[i]=b[i];
 
for (i=0; i<n; i++)
cout << a[i] << " ";
getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.10.2010, 00:42     Очередное "Сдвинуть циклически на M элементов вправо"
Посмотрите здесь:

Сдвинуть элементы массива циклически на n позиций вправо. C++
Сдвинуть массив циклически на К элементов вправо C++
Сдвинуть в двухмерном массиве все ряды циклически вправо... C++
Биты, байты. Циклически сдвинуть на 4 разряда вправо четное число. C++
Задан массив из k чисел. Сдвинуть элементы массива циклически на n позиций вправо C++
C++ Сдвинуть циклически на К слов вправо
Одномерный массив, Сдвинуть элементы массива циклически на n позиций вправо C++
Сдвинуть элементы массива вправо циклически на 1 шаг C++
C++ Элементы одномерного массива из n элементов циклически сдвинуть на к мест вправо
Все нечетные строки матрицы сдвинуть циклически на К элементов влево C++
Циклически сдвинуть числовую последовательность на заданное количество элементов C++
Сдвинуть массив А циклически на m элементов вправо C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Andrew_Lvov
Эксперт С++
259 / 189 / 5
Регистрация: 19.08.2010
Сообщений: 758
Записей в блоге: 1
26.10.2010, 01:21     Очередное "Сдвинуть циклически на M элементов вправо" #2
Можете внятно сформулировать вопрос/проблему ?
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
26.10.2010, 01:35  [ТС]     Очередное "Сдвинуть циклически на M элементов вправо" #3
Цитата Сообщение от Andrew_Lvov Посмотреть сообщение
Можете внятно сформулировать вопрос/проблему ?
задание сдвинуть массив циклически на М элементов вправо!

я нашёл на форуме здесь примеры и по одному из них написал но оно не сдвигает ничего!
вот собственно и вся проблема!
МаксимМВ
C/C++
90 / 90 / 5
Регистрация: 01.07.2010
Сообщений: 281
26.10.2010, 09:23     Очередное "Сдвинуть циклически на M элементов вправо" #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
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
#include <cstdlib>
#include <ctime>
 
const int sizemass=20,
    minnum=-50,
    maxnum=50;
 
void sdvmass(int *mass,int sizem,int sdvs)
{
    int newmass[sizem];
    if (sdvs>sizem)
        std::cout<<"Ошибка! Сдвиг не может быть больше количеств элементов"
            <<" в массиве."<<std::endl;
    for (int i=0;i<sizem;i++)
    {
        int newi=i+sdvs;
        if (newi>=sizem) newi-=sizem;
        newmass[newi]=mass[i];
    }
    for (int i=0;i<sizem;i++)
        mass[i]=newmass[i];
}
 
int main(int argc, char *argv[])
{
    srand(time(0));
    
    int mass[sizemass];
    std::cout<<"Исходный массив:"<<std::endl;
    for (int i=0;i<sizemass;i++)
    {
        mass[i]=rand()%(maxnum-minnum)+minnum;
        std::cout<<mass[i]<<" ";
    }
    std::cout<<std::endl;
    
    int M;
    std::cout<<"Введите сдвиг:";
    std::cin>>M;
    
    sdvmass(mass,sizemass,M);
    
    std::cout<<"Полученный массив:"<<std::endl;
    
    for (int i=0;i<sizemass;i++)
        std::cout<<mass[i]<<" ";
    std::cout<<std::endl;
    
    return 0;
}
Для русских шрифтов в виндуовской консоли разберётесь тут: Русские шрифты в консоли или измените соообщения на транслит. Я уж заморачиваться не буду, у меня Linux.
dihlofos
Бродяга
303 / 257 / 17
Регистрация: 27.08.2010
Сообщений: 553
26.10.2010, 09:31     Очередное "Сдвинуть циклически на M элементов вправо" #5
Ещё вариант:
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
#include <iostream>
using namespace std;
 
int main()
{
const int n = 10;
int a[n],i,j,k,tmp;
 
// Ввод массива
for (i = 0; i < n; i++)
{
        cout<<"Vvedite "<<i<<" element: ";
        cin>>a[i];
}
 
cout<<"Vvedte sdvig: ";
cin>>k;
 
// Перестановка
for(i=0; i<k; i++)
{
    for(j=n-1; j>=0; j--)
        if (j==n-1)
            tmp=a[n-1];
        else
            a[j+1]=a[j];
    a[0]=tmp;
}
 
// Вывод рез-та
cout<<"Resultat: "<<endl;
for (i = 0; i < n; i++)
        cout<<a[i]<<' ';
 
cin.get();
cin.get();
return 0;
}
Пивасик
0 / 0 / 0
Регистрация: 31.05.2010
Сообщений: 13
26.10.2010, 18:00  [ТС]     Очередное "Сдвинуть циклически на M элементов вправо" #6
Работает!
Всем спасибо!
Yandex
Объявления
26.10.2010, 18:00     Очередное "Сдвинуть циклически на M элементов вправо"
Ответ Создать тему
Опции темы

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