Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
anapshy
251 / 232 / 197
Регистрация: 14.11.2016
Сообщений: 879
Завершенные тесты: 3
1

Сдвиг массива | Кто может объяснить условие?

07.02.2017, 21:04. Просмотров 295. Ответов 7
Метки нет (Все метки)

Переставить последний элемент массива на место k-го элемента. При этом k-й,(k+1)-й, ..., предпоследний элементы сдвинуть вправо на 1 позицию.

Покажите пример. Например изначально дано 1234567 k=2 , и что в итоге должно получиться???
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2017, 21:04
Ответы с готовыми решениями:

Кто может объяснить исполнение циклов do while ?
do printf("Hello"); while(1= =2); почему он исполняется 1 раз, а do printf("Hello"); while(1)...

Кто может объяснить по С# кое что . в скайпе
Кто может объяснить по С# кое что .. в скайпе

Объяснить условие программы
Добрый вечер, не могли бы помочь разобраться с условием одной задачки, просто не поминаю фразу,...

Может ли кто объяснить механизм работы метода slice () для массива массивов?
задача 1: имеем массив из N элементов необходимо вывести первый и последний элемент этого...

Кто может объяснить a = a + b?
Сейчас разбирал функцию for. Но суть не в этом. Меня застопорило такое уравнение: sum = sum + i. Я...

7
MansMI
1453 / 1162 / 550
Регистрация: 08.01.2012
Сообщений: 4,509
07.02.2017, 21:09 2
6127345 вроде так
1
likehood
987 / 829 / 397
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
07.02.2017, 21:31 3
Цитата Сообщение от anapshy Посмотреть сообщение
Например изначально дано 1234567 k=2 , и что в итоге должно получиться???
Если считать, что индексация начинается с 1, то должно получится 1723456.
1
anapshy
251 / 232 / 197
Регистрация: 14.11.2016
Сообщений: 879
Завершенные тесты: 3
07.02.2017, 21:49  [ТС] 4
Цитата Сообщение от MansMI Посмотреть сообщение
6127345 вроде так
1234567
Ты принял за то что k=2 это номер ячейки? т.е. в ней лежит число 3 ?! правильно понимаю?

Добавлено через 10 минут
Цитата Сообщение от likehood Посмотреть сообщение
Если считать, что индексация начинается с 1, то должно получится 1723456.
не понял :/
0
07.02.2017, 21:49
likehood
987 / 829 / 397
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
07.02.2017, 21:52 5
Цитата Сообщение от anapshy Посмотреть сообщение
не понял
Всё строго по условию задачи: сдвигаем вправо все элементы, начиная со второго, а на освободившееся место вставляем последний элемент.
1
anapshy
251 / 232 / 197
Регистрация: 14.11.2016
Сообщений: 879
Завершенные тесты: 3
07.02.2017, 22:28  [ТС] 6
Цитата Сообщение от likehood Посмотреть сообщение
Всё строго по условию задачи: сдвигаем вправо все элементы, начиная со второго, а на освободившееся место вставляем последний элемент.
В k например пишу 2.
Выводит>>
До: 1234567
После: 4201056173456
<< В чём может быть проблема?
Попробуй у себя собрать её
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
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
 
void main(void)
{
    setlocale(LC_ALL,"Rus");
    int array[7]={1,2,3,4,5,6,7};
    int k,i,j,tmp;
    printf("До: ");
    for(i=0;i<7;i++) printf("%d",array[i]);
    
    printf("\n[*] Enter 'k': ");
    scanf("%i",&k);
    
    ///Cдвигаем последний на место k
    k--;
    for(i=6;i>k;i--){
        tmp=array[i-1];
        array[i-1]=array[i];
        array[i]=tmp;
    }
    ///Сдвигаем k на место последнего
    for(i=k+1;i<7;i++){
        tmp=array[i+1];
        array[i+1]=array[i];
        array[i]=tmp;
    }
    ///Cдвиг на 1 вправо
    int m=1;//на сколько сдвигать
    for(i=0;i<m;i++){//сколько раз будет происходить сдвиг
        tmp=array[6];//запоминаем 7 ячейку
        for(j=6;j>0;j--){
            array[j]=array[j-1];//переписываем предпоследнюю в последнюю
        }
        array[0]=tmp;//записываем последнюю в первую
    }
    ///Результат
    printf("После: ");
    for(i=0;i<7;i++) printf("%d",array[i]);
    printf("\n");
}
0
likehood
987 / 829 / 397
Регистрация: 25.12.2016
Сообщений: 2,727
Завершенные тесты: 3
07.02.2017, 22:38 7
Цитата Сообщение от anapshy Посмотреть сообщение
В чём может быть проблема?
Трудно понять. Лучше покажу своё решение:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
 
int main()
{
    int a[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
    size_t n = sizeof(a) / sizeof(a[0]);
 
    size_t k = 2;
 
    int lastElement = a[n-1];
    for (size_t i = n-1; i >= k; i--)
        a[i+1] = a[i];
 
    a[k] = lastElement;
 
    for (size_t i=0; i<n; i++)
        printf("%d ", a[i]);
    printf("\n");
 
    return 0;
}
1
CoderHuligan
773 / 554 / 203
Регистрация: 30.06.2015
Сообщений: 3,138
Записей в блоге: 24
08.02.2017, 11:56 8
Цитата Сообщение от anapshy Посмотреть сообщение
Переставить последний элемент массива на место k-го элемента. При этом k-й,(k+1)-й, ..., предпоследний элементы сдвинуть вправо на 1 позицию.
Лучше так:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <locale.h>
int main()
{
    setlocale(LC_ALL, "Ru");
    int a[] = { 0, 1, 2, 3, 4, 5, 6, 7 };
    size_t n = sizeof(a) / sizeof(a[0]);
    size_t k,i; 
        scanf("%d", &k);
        i=n-1;
        if(k==0 || k>n-1) {printf("Нет такой позиции!\n"); return 0;}
        k-=1;
        int lastElement = a[n-1];
        for(; i!=k; --i)
        {
            a[i]=a[i-1];
        }
        a[k] = lastElement;
        for ( i=0; i<n; i++)
        printf("%d ", a[i]);
        printf("\n");
return 0;
}
0
08.02.2017, 11:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.02.2017, 11:56

Кто может объяснить?
Кто может объяснить как это делать? Задание 1. В оперативной памяти вектор int X расположен,...

Кто может объяснить Делфи?
На носу экзамен,преподаватель сказал что учить не хочет готовьтесь сами, кто может объяснить в...

Кто может объяснить ошибку?
нужно найти сумму элементов нечетных столбцов, вроде все так, но ищет четных..в упор не вижу ошибку...


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

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

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