Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
1

Осуществить сдвиг элементов массива вправо на k позиций

19.03.2014, 10:59. Просмотров 5074. Ответов 11
Метки нет (Все метки)

Всем привет , помогите пожалуйста решить эту задачу на языке Си
9. Дан целочисленный массив размера N. Осуществить сдвиг вправо на k позиций, где k – сумма четных элементов
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.03.2014, 10:59
Ответы с готовыми решениями:

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

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

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

Осуществить циклический сдвиг массива вправо на m позиций
Разработать алгоритм и программу. Дан одномерный массив С размерностью 1хn (1<=n<=20). Элементы...

11
844 / 775 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
19.03.2014, 11:04 2
Что значит "сдвиг вправо"?
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
19.03.2014, 11:20  [ТС] 3
я вот это не знаю(
0
:)
Эксперт С++
4764 / 3258 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.03.2014, 11:21 4
Цитата Сообщение от John Prick Посмотреть сообщение
Что значит "сдвиг вправо"?
скорее всего это циклический сдвиг. См. например std::rotate
0
844 / 775 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
19.03.2014, 11:24 5
Цитата Сообщение от Tulosba Посмотреть сообщение
скорее всего это циклический сдвиг. См. например std::rotate
Я тоже так подумал, но это лишь догадкой может быть. К тому же "сумма четных элементов" может в несколько раз превосходить размер массива. Как тут двигать? В лоб ли, или вычислить остаток...
В общем задание требует уточнения.
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
19.03.2014, 11:25  [ТС] 6
мы проходим одномерные массивы
0
:)
Эксперт С++
4764 / 3258 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
19.03.2014, 11:37 7
Цитата Сообщение от John Prick Посмотреть сообщение
К тому же "сумма четных элементов" может в несколько раз превосходить размер массива.
И что же? Для циклического сдвига это не принципиально.
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
19.03.2014, 12:37  [ТС] 8
Tulosba, Вот пример из методички


Пример 2. Дан массив А[n].Осуществить сдвиг вправо на К позиций.

Программа может иметь следующий вид:
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
#include <stdlib.h>
 
# include <conio.h>
 
# include <stdio.h>
 
#define n 10
 
int main ()
 
{  int buf,j, K,i, a[n];
 
       for (i = 0; i < n; i++)
 
         a[i]=rand()%10-5;
 
    K=4;
 
                      printf ("\n \n Сгенерированный массив a[n]\n");
 
 for (i=0;i<n;i++) 
 
   printf ("%d ",a[i]);
 
     for (i=0;i<K;i++)
 
   { buf=a[n-1];
 
      for(j=n-1;j>0;j--)
 
      a[j]=a[j-1];
 
      a[0]=buf;    }
 
           printf ("\n \n Сдвиг элементов массива a[n]на %d позиций \n", K);
 
    for (i=0;i<n;i++)
 
      printf ("%d ",a[i]);
 
    printf ("\n");
 
  system("PAUSE"); 
 
  return 0;}
John Prick,
0
2540 / 1199 / 358
Регистрация: 30.11.2013
Сообщений: 3,819
19.03.2014, 12:41 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <time.h>
 
using namespace std;
 
void main(){
    srand(time(0));
    const int size = 10;
    int arr[size] = {};
    
    for(int i=0;i<size;i++)
        arr[i] = rand()%20;
 
 
 
    for(int i =0;i<size;i++) // первичный показ массива
        cout << arr[i] << " ";
 
    int zdvig = 0;
    for(int i =0;i<size;i++) // нахождение переменной сдвиг
        if(arr[i]%2 == 0)
            zdvig += arr[i];
 
    while(zdvig >= size) // если сдвиг приведёт к "перекрутки" исправляем это
    {
        zdvig -= size;
    }
 
    if(zdvig > 0) // если сдвиг больше нуля - тоесть всё же надо крутить - крутим
    {
        for(int b =0; b < zdvig;b++) // итератор сдвига
            for(int i =size-1;i>0;i--) // сам сдвиг
            {
                int x = arr[i];
                arr[i] = arr[i-1];
                arr[i-1] = x;
            }
 
    }
    
    cout << endl << "Peremenaya sdvig = " << zdvig << endl;
    for(int i =0;i<size;i++) // вторичный показ массива
        cout << arr[i] << " ";
}
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
19.03.2014, 13:07  [ТС] 10
rikimaru2013, я вот так начал делать а решение сдвигом поставил с шаблона и программа находит ошибку там

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
#include<iostream>
#include<stdio.h>
#include<conio.h>
int main()
{
      setlocale(LC_ALL,"rus"); 
      int N; 
      printf("Ââåäèòå N=");   // Ââîäèì  ðàçìåð ìàññèâà
      scanf("%d",&N);
      int i,mas[N],k=0,    buf,j;
      for(i=0; i<N; i++)
               {
                    printf("Ââåäèòå Ýëåìåíò Ìàññèâà=");  // Ââîäèì çíà÷åíèå ìàññèâà
                    scanf("%d",&mas[i]);
               }
      for(i=0; i<N; i++)     // Íàõîäèì Ê
               {
                    if (mas[i]%2 == 0)            
                   {
                       k +=mas[i];
                   }
               }  
////////////////////////////////////////////////////////////////////////////////////////               
      printf ("\n \n Ñãåíåðèðîâàííûé ìàññèâ mas[n]\n"); // Ñäâèã
      for (i=0;i<N;i++) 
      printf ("%d ",mas[i]);
             for(i=0;i<K;i++)
             { buf=mas[N-1];
             
               for(j=N-1;j>0;j--)
               mas[j]=a[j-1];
               mas[0]=buf;    
               }
               
               for (i=0;i<n;i++)
      printf ("%d ",a[i]);
      printf ("\n");
               
      printf ("\n \n Ñäâèã ýëåìåíòîâ ìàññèâà mas[n]íà %d ïîçèöèé \n", K);     
//////////////////////////////////////////////////////////////////////////////////////// 
      printf("\nk=%d \n",k);
      system("pause");
      return 0;
}
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
19.03.2014, 13:10 11
мдя каждый месяц один и тот же вопрос
Функция циклического сдвига массива
0
0 / 0 / 0
Регистрация: 23.02.2014
Сообщений: 44
19.03.2014, 13:29  [ТС] 12
я решил задачку
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2014, 13:29

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Одномерный массив. Осуществить сдвиг вправо на k позиций
Здравствуйте, помогите, пожалуйста с лабораторкой) Все никак не получается.. Вот задача Дан массив...

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

Сдвиг элементов массива циклически на a позиций вправо
Применять можно только статические одномерные массивы, циклы и if. Вроде бы всё правильно, но...

Цикличиский сдвиг элементов массива вправо на k позиций
Дан массив размера N ≥ 2 и число k (0 &lt; k &lt; N). Осуществить циклический сдвиг элементов массива...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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