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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 5.00
серёганарочь
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
#1

Одномерные статические массивы - C++

08.11.2009, 22:46. Просмотров 2080. Ответов 5
Метки нет (Все метки)

Ввести одномерный статический массив из к чисел. И сдвинуть элементы массива циклически на n позиций влево.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2009, 22:46
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Одномерные статические массивы (C++):

Одномерные статические массивы - C++
1) Необходимо удалить все четные элементы 2) Необходимо добавить k элементов в начало массива. 3) Необходимо переставить четные...

Массивы(статические) - C++
Найти максимальную по длине монотонную (т. е. либо неубывающую, либо невозрастающую) подпоследовательность заданного массива целых чисел ...

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

статические массивы - C++
Помогите, пожалуйста) Нужно выполнить следующее задание с использованием статических массивов: Дана квадратная матрица. Упорядочить...

Статические массивы - C++
int a; cout << sizeof(a) << endl; cout << a << endl; Добрый день. Почему выводится, что sizeof(a)=16 байт. a же это адрес,...

Статические массивы - C++
Перевести в веденой строке все буквы из нижнего регистра в верхний?? Пожалуйста помогите!!! Добавлено через 56 секунд Пожалуйста!!!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
09.11.2009, 08:22 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
template<typename _FwdIt> void rotate_arr( _FwdIt first, _FwdIt mid, _FwdIt last )
{
    for( _FwdIt next = mid; ; )
    {
        std::iter_swap(first, next);
        if( ++first == mid )
            if( ++next == last )
                break;
            else
                mid = next;
        else 
            if( ++next == last)
                next = mid;
    }
}
 
int _tmain( int argc, _TCHAR* argv[] )
{
    int coll[] = { 12, 89, -7, 4, -96, -1, 0 };
    rotate_arr( coll, coll + 3, coll + 7 );
}
серёганарочь
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
09.11.2009, 20:05  [ТС] #3
Спасибо конечно, но думаю это не то что мне нужно...
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
09.11.2009, 21:42 #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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// Циклический сдвиг одномерного массива или строки
 
// итак, нужно преобразовать массив ab в bа. 
// Предположим, что у нас есть функция reverse, 
// переставляющая элементы некоторой части массива в 
// противоположном порядке. В исходном состоянии массив имеет 
// вид ab. Вызвав эту функцию для первой части, получим аrb 
// (прим. редактора:аr - это модифицированная часть a, к которой 
// применили фукнцию перестановки reverse). Затем вызовем ее для 
// второй части: получим аrbr. Затем вызовем функцию для всего 
// массива, что даст (аrbr)r, а это в точности соответствует bа. 
// Посмотрим, как будет такая функция действовать на массив abcdefgh, 
// который нужно сдвинуть влево на три элемента:
// псевдокод: Сдвиг через функцию перестановки reverse   ссылка
// reverse(0, i-1)   /* cba|defgh */
// reverse(i, n-1)   /* cba|hgfed */
// reverse(0, n-1)   /* defgh|abc */
 
#include <iostream>
#include <time.h>
 
 
#define   randomize() srand(time(NULL))
#define   SIZE        10
 
using namespace std;
void Reverse(int *begin, int *end)
{ 
    int temp;
    while (end>begin)
    {
        temp = *begin;
        *begin = *end;
        *end = temp;
        begin++; end--;
    }
} // end Reverse
 
int main()
{
    int A[SIZE];
    int i;
 
    for (i=SIZE; --i>=0;)
        A[i]=i; //rand()%10;
 
    cout<<"A"<<endl;     /// вывод
    for (i=0; i<SIZE; i++)
        cout<<A[i]<<' ';
    cout<<endl;
 
    //////////////////////////////////////////////////////////////////////////
    // сам циклический сдвиг на i элементов
    cout<<"number shift: "; cin>>i;
    Reverse(&A[0], &A[i-1]);
    Reverse(&A[i], &A[SIZE-1]);
    Reverse(&A[0], &A[SIZE-1]);
    //////////////////////////////////////////////////////////////////////////
 
    cout<<"revA"<<endl;     /// вывод
    for (i=0; i<SIZE; i++)
        cout<<A[i]<<' ';
 
    cout<<endl; system("PAUSE");
    return 0;
} // end main
серёганарочь
0 / 0 / 0
Регистрация: 08.11.2009
Сообщений: 7
09.11.2009, 23:31  [ТС] #5
Спасибо! попрубую разобраться...

Добавлено через 1 час 38 минут
принцип ясен, а вот как сделать.....((((
SONNY
8 / 8 / 0
Регистрация: 30.05.2009
Сообщений: 47
10.11.2009, 02:00 #6
Тогда что Вы понимаете под циклическим сдвигом?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2009, 02:00
Привет! Вот еще темы с ответами:

Массивы. Статические и динамические - C++
Объясните, пожалуйста, что такое статические массивы и что такое динамические? Чем отличаются? Как их создавать? Какой лучше?

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

двумерные статические массивы - C++
Дана квадратная матрица. Отсортировать по убыванию первую её строку и все строки содержащие элементы, равные наибольшему элементу матрицы. ...

Статические массивы, члены класса - C++
необходимо создать статический массив. компилятор gcc #include&lt;iostream&gt; class c{ public: static const char x = &quot;qwe&quot;; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
10.11.2009, 02:00
Ответ Создать тему
Опции темы

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