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

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

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

Указатели: циклический сдвиг элементов массива - C++

10.02.2013, 14:20. Просмотров 678. Ответов 3
Метки нет (Все метки)

помогите пожалуйста написать программу
организовать введение данных в массив, обработку элементов и вывод результатов, используя указатели.
задание:
Дано натуральное число N (N – парное) и одномерный массив A1, A2, …, AN логических элементов. Виконати циклический сдвиг первой половины массива справа налево, а второй - слева направо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 14:20     Указатели: циклический сдвиг элементов массива
Посмотрите здесь:

C++ Циклический сдвиг элементов массива
Циклический сдвиг элементов массива C++
Циклический сдвиг элементов массива C++
C++ циклический сдвиг элементов одномерного массива
C++ Выполнить циклический сдвиг элементов массива
циклический сдвиг значения элементов массива C++
C++ Циклический сдвиг массива на k элементов
C++ Циклический сдвиг элементов массива
C++ Осуществить циклический сдвиг массива на N элементов
C++ Циклический сдвиг элементов бинарного массива
C++ Циклический сдвиг элементов массива
Осуществить циклический сдвиг элементов массива C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Troll_Face
600 / 400 / 4
Регистрация: 26.04.2012
Сообщений: 2,070
10.02.2013, 14:23     Указатели: циклический сдвиг элементов массива #2
а теперь все тоже самое, но по-русски... я так понял: вводится N (четное), создается динамический массив, и обе его половины сдвигаются циклически?
bilochka
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 17
10.02.2013, 16:34  [ТС]     Указатели: циклический сдвиг элементов массива #3
да, именно так...
lemegeton
2917 / 1346 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.02.2013, 21:14     Указатели: циклический сдвиг элементов массива #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
#include <iostream>
 
int *copy(int *begin, int *end, int *destination) {
  int *copyOfDestination = destination;
  while (begin != end) {
    *destination++ = *begin++;
  }
  return copyOfDestination;
}
 
// ñäâèãГ*ГҐГІ Г¬Г*Г±Г±ГЁГў âëåâî Г*Г* number ýëåìåГ*òîâ
void shiftLeft(int *begin, int *end, int number) {
  int *storage = new int[number];
  copy(begin, begin + number, storage);
  for (int *first = begin; first != end - number; ++first) {
    *first = *(first + number);
  }
  copy(storage, storage + number, end - number);
  delete [] storage;
}
 
// ñäâèãГ*ГҐГІ Г¬Г*Г±Г±ГЁГў ГўГЇГ°Г*ГўГ® Г*Г* number ýëåìåГ*òîâ
void shiftRight(int *begin, int *end, int number) {
  int *storage = new int[number];
  copy(end - number, end, storage);
  for (int *last = end - 1; last != begin + number - 1; --last) {
    *last = *(last - number);
  }
  copy(storage, storage + number, begin);
  delete [] storage;
}
 
int main(int argc, char **argv) {
  int size = 10;
  int *array = new int[size];
 
  for (int i = 0; i < 10; ++i) {
    std::cout << (array[i] = i) << " ";
  }
  std::cout << std::endl;
  
  shiftLeft(array, array + size / 2, 2);
  shiftRight(array + size / 2, array + size, 2);
    
  for (int i = 0; i < 10; ++i) {
    std::cout << array[i] << " ";
  }
  std::cout << std::endl;
 
  delete [] array;
  std::cin.get();
  return 0;
}
Yandex
Объявления
10.02.2013, 21:14     Указатели: циклический сдвиг элементов массива
Ответ Создать тему
Опции темы

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