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

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

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

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

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

Люди в Си++ дуб дубом. Помагите очень надо.
Вот текст задачи.
Ввести одномерный целочисленный массив A, вывести его. Произвести циклический сдвиг вправо его элементов столько раз, сколько раз в массиве встречаются отрицательные числа.
Люди надо очень срочно. Пожалуйста.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2010, 22:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Произвести циклический сдвиг вправо элементов массива (C++):

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

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

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

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

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

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

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

Добавлено через 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
1 / 1 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 18:04 #4
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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  [ТС] #5
Нет по проежнему выводит полный бред
0
angels
1 / 1 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 18:13 #6
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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  [ТС] #7
Все равно нет.
Я сделал по другому. Я вот что понять не могу. Я нашел кол-во отрицательных элементов в массиве. мне надо теперь сделать циклический сдвиг вправо элеменнтов столько раз сколько отрицательных элементов в массиве
0
TheMachinist
243 / 175 / 15
Регистрация: 14.06.2010
Сообщений: 422
20.10.2010, 18:18 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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  [ТС] #9
Вот код
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
1 / 1 / 3
Регистрация: 20.10.2010
Сообщений: 30
20.10.2010, 19:42 #10
отталкивайся от количества отрицательных елементов.
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
243 / 175 / 15
Регистрация: 14.06.2010
Сообщений: 422
20.10.2010, 20:03 #11
А чем мой вариант не устраивает???
0
Дмитрий Дьяков
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 23:32  [ТС] #12
Мне это ни чего не дает. Я написал код. Вот отталкиваясь от него мне нужна помощь. Как сдвинуть элементы массива циклически

Добавлено через 5 минут
Да я не пойму как твоим вариантом можно циклически сдивнуть элементы массива.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.10.2010, 23:43 #13
Дмитрий Дьяков, В таком случае советую прочитать про STL.
0
Дмитрий Дьяков
0 / 0 / 0
Регистрация: 19.10.2010
Сообщений: 11
20.10.2010, 23:44  [ТС] #14
Спасибо. Я искал в нете ответ на свой вопрос. нашел два алгоритма но не могу с ними разобраться.
0
ForEveR
В астрале
Эксперт С++
7978 / 4737 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
20.10.2010, 23:45 #15
Дмитрий Дьяков, Скиньте код. Попробуем прояснить.
Только заключите его в тег C++, иначе никто читать не будет.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2010, 23:45
Привет! Вот еще темы с ответами:

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

Циклический сдвиг массива вправо - C++
дан двумерный массив MxN нужно осуществить поэлементный сдвиг вправо на 1 элемент

Циклический сдвиг массива влево и вправо - C++
Нужно реализовать циклический сдвиг массива влево и вправо! Например есть массив int- {121605}? mass_len=6, нужно чтобы после сдвига...

Осуществить циклический сдвиг массива вправо на m позиций - C++
Разработать алгоритм и программу. Дан одномерный массив С размерностью 1хn (1&lt;=n&lt;=20). Элементы массива принимают значения от 0 до 255 и...


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

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

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