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

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

13.03.2014, 19:20. Показов 3220. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, помогите, пожалуйста с лабораторкой) Все никак не получается..
Вот задача Дан массив A[N].
Заполнить массив В[N] элементами массива A[N],
которые удовлетворяют двойному неравенству:
A[1] < A[i] или A[i] < A[10].
Осуществить сдвиг вправо на k позиций,
где k - число оставшихся элементов массива A[N].


Вот, начал решать. Так, для начала я просто вывел 2 массива а[n] и b[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
//Дан массив A[N]. 
///Заполнить массив В[N] элементами массива A[N], 
///которые удовлетворяют двойному неравенству: 
   // A[1] < A[i] или A[i]  < A[10]. 
  //  Осуществить сдвиг вправо на k позиций, 
//где k - число оставшихся элементов массива A[N].
 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define n 10
int main()
{
    
int a[n],b[n],i,j, k;
 
void randomize();
printf("Massiv A\n");
for (i=0;i<n;i++)
 {
 a[i]=rand()%10-5;
 printf("%d ",a[i]);
 }
printf("\n");
 
 
printf("Massiv B\n");
for (j=0;j<n;j++)
 {
 b[j]=rand()%10-5;
 printf("%d ",b[j]);
 }
printf("\n");
 
 
k=0;
 
getch();
system("PAUSE");
return 0;
}
Миниатюры
Одномерный массив. Осуществить сдвиг вправо на k позиций  
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2014, 19:20
Ответы с готовыми решениями:

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

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

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

21
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
13.03.2014, 19:22  [ТС]
потом я решил второй массив заполнить элементами по условию
и вот что вышло

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
//Дан массив A[N]. 
///Заполнить массив В[N] элементами массива A[N], 
///которые удовлетворяют двойному неравенству: 
   // A[1] < A[i] или A[i]  < A[10]. 
  //  Осуществить сдвиг вправо на k позиций, 
//где k - число оставшихся элементов массива A[N].
 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define n 10
int main()
{
    
int a[n],b[n],i,j, k;
 
void randomize();
printf("Massiv A\n");
for (i=0;i<n;i++)
 {
 a[i]=rand()%10-5;
 printf("%d ",a[i]);
 }
printf("\n");
 
 
printf("Massiv B\n");
for (j=0;j<n;j++)
 {
                 if (a[0]<a[i]  ||  a[i]>a[9])
 b[j]=a[i];
 printf("%d ",b[j]);
 }
printf("\n");
 
 
k=0;
 
getch();
system("PAUSE");
return 0;
}
и вот, что вышло
Миниатюры
Одномерный массив. Осуществить сдвиг вправо на k позиций  
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
13.03.2014, 19:25  [ТС]
помогите, пожалуйста. может быть я что-то не так сделал? вроде все так неплохо началось, а потом бац и ошибка какая-то, а ведь еще нужно сделать сдвиг на К элементов..
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.03.2014, 19:28
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
b[j]=rand()%10-5;
Это вообще зачем? Чтоб сразу затирать? Тебе сказано его заполнить элементами другого массива, а не рандомом.
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
13.03.2014, 19:36  [ТС]
taras atavin, извините, но я не совсем понял смысл фразы "затирать") вот ниже написал
C++
1
2
3
4
5
6
7
8
printf("Massiv B\n");
for (j=0;j<n;j++)
 {
                 if (a[0]<a[i]  ||  a[i]>a[9])
 b[j]=a[i];
 printf("%d ",b[j]);
 }
printf("\n");
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
13.03.2014, 19:44
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
taras atavin, извините, но я не совсем понял смысл фразы "затирать")
Что здесь то не понятного? В отличие от того, как ты собираешься вытягивать старые значения после того, как запишешь в массив элементы a[].

Добавлено через 4 минуты
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
if (a[0]<a[i] *|| *a[i]>a[9])
На бейсике можно писать
PureBasic
1
if a(0)<a(i) or a(i)>a(9) then
, на паскале нельзя писать
Pascal
1
if a[0]<a[1] or a[i]>a[9] then
. А знаешь почему? Всего лишь из-за того, что на бейсике сравнение имеет приоритет над or/and/xor/not, а на паскале наоборот, но выражение имеет смысл только при бейсик-приоритетах. А на плюсах как? Ты знаешь? Я нет, да и про бейсик с паскалем знаю случайно. Все такие нюансы знать во-первых проблематично, а во-вторых будешь больше времени тратить на анализ, проще сразу ставить скобки.
0
0 / 0 / 0
Регистрация: 20.02.2014
Сообщений: 12
14.03.2014, 01:02  [ТС]
taras atavin,
C++
1
2
3
4
5
6
7
8
printf("Massiv B\n");
for (j=1;j<=n-1;j++)
if((a[i]>a[0]) || (a[i]<a[10]))
{
 b[j]=a[i];
 printf("%d ",b[j]);
}
printf("\n");
а так?

Добавлено через 1 час 17 минут
Пожалуйста, кто-нибудь. Подскажите, как быть дальше?
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
//Дан массив A[N]. 
///Заполнить массив В[N] элементами массива A[N], 
///которые удовлетворяют двойному неравенству: 
   // A[1] < A[i] или A[i]  < A[10]. 
  //  Осуществить сдвиг вправо на k позиций, 
//где k - число оставшихся элементов массива A[N].
 
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define n 10
int main()
{
    
int a[n],b[n],i,j, k;
 
void randomize();
printf("Massiv A\n");
for (i=0;i<n;i++)
 {
 a[i]=rand()%10-5;
 printf("%d ",a[i]);
 }
printf("\n");
 
int t=0;
printf("Massiv B\n");
for (j=1;j<=n-1;j++)
if((a[j]>a[0]) || (a[j]<a[10]))
{
 b[t]=a[j];
 printf("%d ",b[j]); t++;
}
printf("\n");
 
 
 
k=0;
 
getch();
system("PAUSE");
return 0;
}
Добавлено через 50 минут
Ну, пожалуйста!!!

Добавлено через 3 часа 6 минут
Как осуществить сдвиг?
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 02:35
Цитата Сообщение от taras atavin Посмотреть сообщение
Чтоб сразу затирать
Ну затирания не будет, будут рандомные результаты в интервале от -5 до 5, а на счёт неуместного рандома, согласен.

Цитата Сообщение от Richie_Bolat Посмотреть сообщение
Подскажите
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
//Дан массив A[N]. 
///Заполнить массив В[N] элементами массива A[N], 
///которые удовлетворяют двойному неравенству: 
   // A[1] < A[i] или A[i]  < A[10]. 
  //  Осуществить сдвиг вправо на k позиций, 
//где k - число оставшихся элементов массива A[N].
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define n 10
 
int main()
{
    int A[n],B[n],i,j;
 
    srand(time(NULL));
 
    printf("Massiv A\n");
    for (i=0;i<n;i++)
    {
        A[i]=rand()%10;
        B[i]=0;
        printf("%d ",A[i]);
    }
    printf("\n");
 
    j=n-1;
    for (i=n;i>0;i--)
    {
        if(A[i-1]>A[0] || A[i-1]<A[9])
        {
            B[j]=A[i-1];
            j--;
        }
    }
 
    printf("Massiv B\n");
    for (i=0;i<n;i++)
    {
        printf("%d ",B[i]);
    }
    printf("\n");
 
    system("PAUSE");
 
    return 0;
}
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
14.03.2014, 02:35
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// цикиличний сдвиг массива на k позиций вправо
 cout<<"\n введите количество позиций сдвига k= ";
 cin>>k;
 cout << "\n";
 if(k>0)
   {
      while (k!=0)
          {
            i= N-1;
        int temp= A[i];
            for(i=N-1; i> 0; i--)
                A[i]= A[i-1];
                A[0]= temp;
                k--;
            }
   }
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 02:40
Не очень понятное условие...мы избавляемся от "сдвига на К позиций" благодаря тому, что сразу заполняем B[] с конца, что не заполнено - нули. Можно переписать и со сдвигом, но так интереснее)
А использовать getch(), system("pause") подряд - это круто)

Добавлено через 1 минуту
Цитата Сообщение от Genn55 Посмотреть сообщение
cout<<"\n введите количество позиций сдвига k= ";
Дык оно известно...
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
14.03.2014, 02:52
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Дык оно известно...
Думал понятнее будет.....
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 02:59
Цитата Сообщение от Genn55 Посмотреть сообщение
if(k>0)
{
while (k!=0)
Проще
C++
1
while(k>=0)
if не мешает, но место зря занимает.
Может и понятнее...но вдруг я захочу ввести 100500, а элементов 10? - Нужны лишние условия, которые могут наоборот сделать код более запутанным. Ну ТС почитает, рассмотрит, надеюсь поймёт, что Вы имели ввиду)
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.03.2014, 06:16
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Ну затирания не будет,
И куда же оно денется?
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 12:52
Цитата Сообщение от taras atavin Посмотреть сообщение
И куда же оно денется?
Как что-то может куда-то деться, если его изначально не было?)
В примере ТС, который был откомментирован с горомким словом "затирание" до этого "затирания" массив не инициализировался. Как можно затереть то, что и так неопределённого значения?
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.03.2014, 13:02
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Как что-то может куда-то деться, если его изначально не было?)
Это как?

Добавлено через 36 секунд
Цитата Сообщение от Retyrn0 Посмотреть сообщение
примере ТС, который был откомментирован с горомким словом "затирание" до этого "затирания" массив не инициализировался.
Читай:
Цитата Сообщение от Richie_Bolat Посмотреть сообщение
C++
1
2
3
4
5
for (j=0;j<n;j++)
 {
  b[j]=rand()%10-5;
  printf("%d ",b[j]);
 }
.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 13:14
Цитата Сообщение от taras atavin Посмотреть сообщение
Читай:
Читал. Затереть то, что до этого не инициализировалось - странная формулировка. ТС, по видимому, так заполнял массив по аналогии с первым, чтобы выводить хоть какие-то адекватные значения и предполагал, что эту строку и нужно переделать в заполнение по 2-му неравенству.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
до этого "затирания" массив не инициализировался.
Ключевое слово здесь "ДО"
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.03.2014, 13:16
Цитата Сообщение от Retyrn0 Посмотреть сообщение
не инициализировалось
Ну ка объясни, что делает третья строчка в
C++
1
2
3
4
5
for (j=0;j<n;j++)
 {
  b[j]=rand()%10-5;
  printf("%d ",b[j]);
 }
.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 13:20
Цитата Сообщение от taras atavin Посмотреть сообщение
что делает третья строчка в
Вы слово "ДО" прочитали, нет? Затирание - это когда какие-то результаты вычислений изменяются. Здесь нечего менять - это инициализация, пусть и не соответствующая задаче, но никак не затирание!
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
14.03.2014, 13:26
Цитата Сообщение от Retyrn0 Посмотреть сообщение
Вы слово "ДО" прочитали, нет?
Он и
C++
1
2
3
4
5
for (j=0;j<n;j++)
 {
  b[j]=rand()%10-5;
  printf("%d ",b[j]);
 }
написал, и заполнить тот же массив элементами a[] ему тоже сказано. Что нибудь неизбежно будет до.
0
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
14.03.2014, 13:38
Цитата Сообщение от taras atavin Посмотреть сообщение
Что нибудь неизбежно будет до.
Будет - не будет - время покажет, а на тот момент затирания не было. Я полагаю, что этот цикл планировалось переделать под условное заполнение 2-го массива, а не оставлять его после правильной инициализации. КОгда человек учится, ему нужно видеть что происходит, чтобы понять - вероятно ТС и инициализировал рандомно 2-й массив, чтобы не было непонятных значений и планировал ПЕРЕДЕЛАТЬ этот цикл.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
14.03.2014, 13:38
Помогаю со студенческими работами здесь

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

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

Осуществить циклический сдвиг битов в целом числе a на k позиций вправо
Осуществить циклический сдвиг битов в целом числе a на k позиций вправо.

Осуществить циклический сдвиг n-разрядного двоичного представления заданного числа k на m позиций вправо
Задание: Осуществить циклический сдвиг n-разрядного двоичного представления заданного числа k на m позиций вправо, не находя цифр самого...

Массивы. Вначале заполнить элементами с четными индексами, а затем — с нечетными. Осуществить сдвиг вправо на k позиций
При выполнении задания элементы массива генерировать с помощью генератора случайных чисел. 1. Дан массив A. Заполнить массив В...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru