Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
1 / 1 / 0
Регистрация: 04.03.2020
Сообщений: 33
1

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальн

08.03.2020, 15:25. Показов 2430. Ответов 8
Метки нет (Все метки)

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами. Осуществить циклический сдвиг элементов массива влево на k позиций, где k – число элементов, расположенных между его минимальным и максимальным элементами
НАПИШИТЕ ПОЖАЛУЙСТА КОД НА ЯЗЫКЕ СИ C ПОМОЩЬЮ УКАЗАТЕЛЕЙ.
Данный код сделан с помощью индексов. Нужно этот код сделать с помощью указателей. Буду очень благодарен!!!
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
48
49
50
51
52
53
54
55
56
57
#include <stdlib.h>
#include <stdio.h>
#define n 10
int main ()
{
    int i, a[n], min, max,buf,j;
for (i = 0; i < n; i++)
a[i]=rand()%100-5;
printf("\nСгенерированный массив a[n] \n");
for (i=0;i< n;i++)
printf("%d ",a[i]);
min = 0;
max = 0;
 
for (i = 0; i < n; i++)
{
if (a[i] < a[min])
min = i;
if (a[i] > a[max])
max = i;
}
 
 
printf("\nМинимальный элемент:%d",a[min]);
printf("\nМаксимальный элемент:%d\n", a[max]);
 
 
if (max<min) {
max+=min;
min=max-min;
max=max-min;
}
 
for(i=1; i<min+1+(max-min)/2; ++i)
{
if(i!=(max-i+min))
{
a[i]+=a[max-i+min];
a[max-i+min]=a[i]-a[max-i+min];
a[i]=a[i]-a[max-i+min];
}
}
printf("Элементы между минимальным и максимальным элементами в обратном порядке:\n");
for (i=0;i<n;i++)
printf ("%d ",a[i]);
for (i=0;i<(min+1+(max-min)/2);i++)
{buf=a[n-1];
for(j=n-1;j>0;j--)
a[j]=a[j-1];
a[0]=buf;
}
printf ("\n \n Сдвиг элементов массива\n");
for (i=0;i< n;i++)
printf ("%d ",a[i]);
printf ("\n");
return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.03.2020, 15:25
Ответы с готовыми решениями:

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его...

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера N. Переставить в обратном порядке элементы массива, расположенные между его...

Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами
Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его...

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

8
1532 / 915 / 597
Регистрация: 25.04.2016
Сообщений: 2,567
08.03.2020, 18:35 2
Daveforbes, а что тут переделывать? Просто имейте в виду, что a[i] это то же самое, что *(a+i), соответственно, запись вида

if (a[i] < a[min]) min = i;

можно записать как

if (*(a+i) < *(a+min)) min = i;

ну и дальше вперед и с песней.

Т.е. a+i даст адрес ячейки a[i] в оперативной памяти, а *(a+i) даст значение, которое хранится в ячейке a[i].
0
1 / 1 / 0
Регистрация: 04.03.2020
Сообщений: 33
08.03.2020, 19:01  [ТС] 3
Все перепробовал, не получается. Если не сложно, помогите мне.
0
1532 / 915 / 597
Регистрация: 25.04.2016
Сообщений: 2,567
08.03.2020, 19:49 4
Лучший ответ Сообщение было отмечено Daveforbes как решение

Решение

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
#include <stdio.h>
#define n 10
#define swap(a, b) { int t = a; a = b; b = t; }
 
int main (void)
{
    int i, k, a[n] = {27, 35, 47, 88, 2, 3, 4, 5, 1, 2};
    printf("\nСгенерированный массив a[%d]\n", n);
 
    for (i = 0; i < n; i++)
        printf("%4d", a[i]);
    printf("\n\n");
 
    int min = 0;
    int max = 0;
 
    for (i = 0; i < n; i++)
    {
        if (*(a+i) < *(a+min)) min = i;
        if (*(a+i) > *(a+max)) max = i;
    }
 
    printf("Минимальный элемент: %d\n", *(a+min));
    printf("Максимальный элемент: %d\n", *(a+max));
 
    if (max < min) swap(min, max);
 
    for(i=min+1, k=max-1; i<k; i++, k--)
        swap(*(a+i), *(a+k));
 
    printf("\nЭлементы между минимальным и максимальным элементами в обратном порядке:\n");
    for (i=0; i<n; i++)
        printf("%4d", *(a+i));
    printf("\n");
 
    return 0;
}
1
1 / 1 / 0
Регистрация: 04.03.2020
Сообщений: 33
08.03.2020, 19:50  [ТС] 5
Благодарю!!!
0
1532 / 915 / 597
Регистрация: 25.04.2016
Сообщений: 2,567
08.03.2020, 19:54 6
Только в 11 строчке должно быть printf("%4d", *(a+i)); конечно же.
1
1 / 1 / 0
Регистрация: 04.03.2020
Сообщений: 33
08.03.2020, 19:56  [ТС] 7
ok. А как насчет сдвига влево на к позиций?
0
1532 / 915 / 597
Регистрация: 25.04.2016
Сообщений: 2,567
08.03.2020, 19:58 8
Точно так же. У вас уже готовый пример перед глазами.
1
1 / 1 / 0
Регистрация: 04.03.2020
Сообщений: 33
08.03.2020, 19:58  [ТС] 9
Спасибо Вам
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.03.2020, 19:58

Переставить в обратном порядке все числа, расположенные между минимальным и максимальным
Нужна помощь. Написать программу, которая в заданном двухмерном массиве чисел переставляет в...

Удалить элементы массива, расположенные между его минимальным и максимальным элементами
Дан целочисленный массив размера N. Удалить элементы массива, расположенные между его минимальным и...

Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и максимумом
2)Переписать в обратном порядке элементы вещественного массива, расположенные между минимумом и...

Сформировать массив, элементами которого являются элементы исходного массива, расположенные в обратном порядке
Доброго времини суток. Подскажите пожалуйста как задать массив в массиве


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

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

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