Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/29: Рейтинг темы: голосов - 29, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11

Произвести циклический сдвиг вправо элементов массива

19.10.2010, 22:14. Показов 6419. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Люди в Си++ дуб дубом. Помагите очень надо.
Вот текст задачи.
Ввести одномерный целочисленный массив A, вывести его. Произвести циклический сдвиг вправо его элементов столько раз, сколько раз в массиве встречаются отрицательные числа.
Люди надо очень срочно. Пожалуйста.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.10.2010, 22:14
Ответы с готовыми решениями:

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

Осуществить циклический сдвиг элементов массива вправо на k позиций
Решаю задачи на сервере одном, задание было "Дан массив размера N ≥ 2 и число k (0 < k < N). Осуществить циклический сдвиг...

Циклический сдвиг четных строк двумерного массива на k элементов вправо
Помогите, как организовать циклический сдвиг на k элементов вправо? #include <iostream> #include <vector> ...

19
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
19.10.2010, 22:22
Дмитрий Дьяков, Ну кидайте свои попытки решения. Или вы думаете здесь люди сидят и от нефига делать всем все решают?
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 17:38  [ТС]
Я же написал что я в си дуб дубом. Я не программист и даже не учусь на него. Но на кой то мне дали делать задачи на си. Вот щас и мучаюсь. Ну спасибо что хоть ответили.

Добавлено через 18 часов 14 минут
Вот я попытался Начать. В этом коде я ввожу и вывожу массив на экран. Выводит полный брет. Что не так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
#include <math.h>
 
void main (void)
{
float a[10]; int i;
 printf("Vvedite massiv iz 10 celix elementov\n");
 
 for (i=0; i<10; i++) // Ввод массива из 10 элементовж
  scanf("%d", &a[i]);
   for (i=0; i<10; i++) // Вывод массива из 10 элементовж
  printf("%d " , &a[i]);
 
 
  fflush(stdin);
  getchar();
}
0
 Аватар для angels
2 / 2 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 18:04
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <math.h>
 
void main (void)
{
int a[10];//int- öåëî÷èñåëüíûé òèï
 int i;
printf("Vvedite massiv iz 10 celix elementov\n");
 
for (i=0; i<10; i++) // Ââîä ìàññèâà èç 10 ýëåìåíòîâæ
scanf("%f", &a[i]);
for (i=0; i<10; i++) // Âûâîä ìàññèâà èç 10 ýëåìåíòîâæ
printf("%f " , &a[i]);
 
 
fflush(stdin);
getchar();
}
должно работать...
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 18:06  [ТС]
Нет по проежнему выводит полный бред
0
 Аватар для angels
2 / 2 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 18:13
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <math.h>
 
void main (void)
{
int a[10];//int- öåëî÷èñåëüíûé òèï
 int i;
printf("Vvedite massiv iz 10 celix elementov\n");
 
for (i=0; i<10; i++) // Ââîä ìàññèâà èç 10 ýëåìåíòîâæ
scanf("%d", &a[i]);
for (i=0; i<10; i++) // Âûâîä ìàññèâà èç 10 ýëåìåíòîâæ
printf("%d " , a[i]);
 
 
fflush(stdin);
getchar();
}

А сейчас???
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 18:18  [ТС]
Все равно нет.
Я сделал по другому. Я вот что понять не могу. Я нашел кол-во отрицательных элементов в массиве. мне надо теперь сделать циклический сдвиг вправо элеменнтов столько раз сколько отрицательных элементов в массиве
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
20.10.2010, 18:18
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

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 <algorithm>
#include <iostream>
#include <functional>
using namespace std;
 
void Reverse(int * Arr,size_t k) {std::reverse(Arr,Arr+k);}
 
int main()
{
    int * Arr;
    cout << "Enter size   ";
     size_t size ;
     cin >> size;
     Arr = new int[size];
     for(int i = 0;i < size;++i)
     {
         cout << "Arr[ " << i << " ] = ";
             cin >> Arr[i];
     }
    size_t k = std::count_if(Arr,Arr+size,std::bind2nd(std::less<int>(),0));
    k = size - k;
    Reverse(Arr,k);
    Reverse(Arr+k,size-k);
    Reverse(Arr,size);
 
 
    for(int i = 0;i < 10;++i)
        cout << Arr[i] << " ";
    
 
system("pause");
}
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 19:25  [ТС]
Вот код
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
#include <iostream>
#include <conio.h>
const int n = 10; //îáúÿâëÿåì êîíñòàíòó äëÿ ìàññèâà
void main () {
 
int X[n]; //îáúÿâëÿåì ïåðåìåííûé äðîáíîãî òèïà
int i; //ïåðåìåííàÿ äëÿ öèêëà
int n;
n=0;
for (i = 0; i < 10 ; i++){
std::cout<<"X["<<i<<"] = "; //Íà ýêðàí âûâîäèòñÿ 'X[i] = '
std::cin>>X[i]; //ââîäèì ñ êëàâèàòóðû öåëûå ÷èñëà
}
std::cout<<"\n"; //Ïåðåõîä íà ñëåäóþùóþ ñòðîêó
 
for (i = 0; i < 10 ; i++){
std::cout<<"X["<<i<<"] = "<<X[i]<<"\t";
//Íà ýêðàí âûâîäèòñÿ ðåçóëüòàò íàøåãî ââîäà
}
 
for (i = 0; i < 10 ; i++)
if (X[i]<0) n++;
std::cout<<"Kol-vo otricatelnix elementov="<<n<<"\n";
 
 
 
_getch(); //Ýêðàí íå çàêðûâàåòñÿ, ïîêà íå íàæàòà ëþáàÿ êëàâèøà
}
Добавлено через 35 минут
Ну что ни кто помоч не может?

Добавлено через 31 минуту
Люди вы если не знаете вы хоть напишите. Я просто жду. Никак не могу понять как это сделать.
0
 Аватар для angels
2 / 2 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 19:42
отталкивайся от количества отрицательных елементов.
C++
1
2
3
4
for (i = 0; i < n+1 ; i++)//n-количество отрицательных елементов
printf(" ");
for (i = 0; i < 10 ; i++)
printf("%d",X[n]);//выходной масив
...отталкивайся от етого... других вариантов уменя нет...
0
 Аватар для TheMachinist
246 / 178 / 47
Регистрация: 14.06.2010
Сообщений: 422
20.10.2010, 20:03
А чем мой вариант не устраивает???
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 23:32  [ТС]
Мне это ни чего не дает. Я написал код. Вот отталкиваясь от него мне нужна помощь. Как сдвинуть элементы массива циклически

Добавлено через 5 минут
Да я не пойму как твоим вариантом можно циклически сдивнуть элементы массива.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.10.2010, 23:43
Дмитрий Дьяков, В таком случае советую прочитать про STL.
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 23:44  [ТС]
Спасибо. Я искал в нете ответ на свой вопрос. нашел два алгоритма но не могу с ними разобраться.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
20.10.2010, 23:45
Дмитрий Дьяков, Скиньте код. Попробуем прояснить.
Только заключите его в тег C++, иначе никто читать не будет.
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
21.10.2010, 00:00  [ТС]
Вот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
 
const n=10;
 
void main(){
** int b,A[n]={1,2,3,4,5,6,7,8,9,0};
** b=A[n-1]; 
** for(int i=n-2;i>=0;i--)
******A[i+1]=A[i];
** A[0]=b;
** for(i=0; i<n;i++)
****cout<< A[i]<<',';
}
но как к своей программе это припоять ума не приложу. При этом у меня в программе массив должен сдвигаться на кол-во отрицательных элементов. я его нашел

Добавлено через 13 минут
Извеняюсь про теги не сразу увидел

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream.h>
 
const n=10;
 
void main(){
** int b,A[n]={1,2,3,4,5,6,7,8,9,0};
** b=A[n-1]; 
** for(int i=n-2;i>=0;i--)
******A[i+1]=A[i];
** A[0]=b;
** for(i=0; i<n;i++)
****cout<< A[i]<<',';
}
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
21.10.2010, 00:06
Дмитрий Дьяков, Код по сути действительно циклически сдвигает элементы. A[i+1] становится равным A[i]...
А чтобы произвести такой циклический сдвиг я так понимаю должно быть что-то вроде...

C++
1
2
3
4
b=A[numb_of_negative_elements-1];
for(int i=numb_of_negative_elements-2; i>=0; i--)
    A[i+1]=A[i];
A[0]=b;
Правильность совершенно не гарантирую
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
21.10.2010, 00:17  [ТС]
К сожалению это не правильно. А не подскажите как можно осущиствить цикл не от 1 до 10. а наоборот от10 до 1?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
21.10.2010, 00:21
Дмитрий Дьяков,

C++
1
for(int i=10; i>=0; --i)
0
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
21.10.2010, 12:29  [ТС]
Ни как не могу реализовать. люди помогите. Завтра сдавать

Добавлено через 33 минуты
Вот написал код сдвига вправо на 1 элемент. а как сделать на N не могу понять.
C++
1
2
3
4
5
p=X[9];
 
for (i=9;i>0; i--)
X[i]=X[i--];
X[0]=p;
Добавлено через 11 часов 23 минуты
Этот вариант не подошел. Всем спасибо. Уже сделал по своему и сегодня сдал лабу. Еще раз всем спасибо. Если что буду обращаться. Вижу что люди откликаются на позывы о помощи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.10.2010, 12:29
Помогаю со студенческими работами здесь

Осуществить циклический сдвиг элементов массива вправо на одну позицию
4Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на одну позицию (при этом A 1 перейдет в A 2 , A 2 — в A 3 ,...

Функция: циклический сдвиг элементов массива, находящихся на четных местах, вправо
Дан массив действительных чисел размера n. Выполнить циклический сдвиг элементов массива, находящихся на четных местах, вправо.

Ребят я не могу понять где ошибка (циклический сдвиг элементов массива вправо)
Вот дана такая задача Напишите программу, которая циклически сдвигает элементы массива вправо (0-й элемент становится 1-м, 1-й становится...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k – индекс максимального элемента
Помогите пожалуйста решить эту задачу, Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций,...

Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.
Дан массив размера N. Осуществить циклический сдвиг элементов массива вправо на k позиций, где k- индекс максимального элемента.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru