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

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

Войти
Регистрация
Восстановить пароль
 
Paul4ik
3 / 0 / 0
Регистрация: 22.05.2012
Сообщений: 27
#1

Циклический сдвиг массива без использования вспомогательного массива - C++

22.06.2012, 02:06. Просмотров 750. Ответов 1
Метки нет (Все метки)

Ребят, помогите пожадуйста написать лабу...Времени ктастрофически не хватает, буду очень признателен

Написать функцию, которая сдвигает массив циклически вправо без использования вспомогательного массива на столько элементов, сколько положительных чисел в массиве. Функция не должна возвращать значение. Использование глобальных переменных внутри функции запрещено (т.е. массив должен передаваться как параметр). Написать программу, в которой при помощи генератора псевдослучайных чисел создаются два одномерных массива одинакового размера. К ним должна быть применена описанная выше функция. На экран должны быть выведены начальные массивы и измененные массивы. Создание и вывод массивов оформить в виде функций, не возвращающих значений.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.06.2012, 02:06     Циклический сдвиг массива без использования вспомогательного массива
Посмотрите здесь:

Циклический сдвиг массива - C++
Задание такое. Нужно циклически сдвинуть массив на К элементов вправо. Я сделал сдвиг, только он выбирает К-ый элемент с конца, а мне нужно...

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

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

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

Циклический сдвиг элементов массива - C++
Здравствуйте, подскажите пожалуйста почему в 57 строке происходит эта ошибка: error: invalid types 'int' for array subscript ...

Осуществить циклический сдвиг массива - C++
Осуществить циклический сдвиг массива на N элементов.Направление сдвига указывает пользователь(например, массив 0, 1, 2, 3, 4, 5, 6, 7, 8,...

Циклический сдвиг элементов массива - C++
Дан массив размера N и число k(0<k<5,K<n) Осуществить циклический сдвиг элементов массива влево 1 вправо2 на k позициии

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

Циклический сдвиг элементов массива - C++
Помогите с заданием, оно на изображении

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
88 / 740 / 75
Регистрация: 11.04.2012
Сообщений: 971
22.06.2012, 10:35     Циклический сдвиг массива без использования вспомогательного массива #2
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
 
#define N 10
 
void initv(int* X, int n);
void printv(int* X, int n);
void shiftr(int* X, int n, int pos);
void getpcount(int* X, int n, int* count);
 
int main()
{
    int *X = new int[N], 
        *Y = new int[N];
 
    initv(X,N); initv(Y,N);
 
    int count_x = 0, count_y = 0;
    getpcount(X,N,&count_x);
    getpcount(Y,N,&count_y);
 
    printv(X,N);
    shiftr(X,N,count_x);
    printv(X,N);
 
    printf("\n");
 
    printv(Y,N);
    shiftr(Y,N,count_y);
    printv(Y,N);
 
    _getch();
 
    return 0;
}
 
void initv(int* X, int n)
{
    for (int i = 0; i < n; i++)
        X[i] = rand() % (2 * (n-1)) - n;
}
 
void getpcount(int* X, int n, int* count)
{
    for (int i = 0; i < n; i++)
        *count = (X[i] > 0) ? (*count)+1 : *count;
}
 
void shiftr(int* X, int n, int pos)
{
    while (--pos >= 0)
    {
        int val = X[n-1];
        for (int i = n-1; i >= 0; i--)
            X[i] = X[i-1]; X[0] = val;
    }
}
 
void printv(int* X, int n)
{
    for (int i = 0; i < N; i++)
        printf("%d ",X[i]);
    printf("\n");
}
http://liveworkspace.org/code/f087d6...bf982cb7c7830f
Ответ Создать тему
Опции темы

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