Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
liberty_
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 35
1

Поменять местами элементы массива

04.11.2018, 20:56. Просмотров 368. Ответов 2
Метки нет (Все метки)

Может, кто-нибудь знает, как дальше делать: нужно поменять местами элементы 1-го массива, которые стоят после минимального элемента и имеют нечётный индекс, на элементы 2-го массива, которые стоят после минимального элемента и имеют чётный индекс.


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
#define SIZE1 (20)
#define MIN_VAL1 (-34)
#define MAX_VAL1 (45)
#define brand1() ( rand() % ( MAX_VAL1 - MIN_VAL1 + 1 )/2*2 + MIN_VAL1 )
 
 
#define SIZE2 (20)
#define MIN_VAL2 (-25)
#define MAX_VAL2 (91)
#define brand2() ( rand() % ( MAX_VAL2 - MIN_VAL2 + 1 )/2*2 + MIN_VAL2 )
 
int main(void) {
    int array[SIZE1], i;
    for ( i = 0; i < SIZE1; ++i )
         array[i] = brand1();
    printf("Array1:\n");
    for ( i = 0; i < SIZE1; ++i )
        printf("%4d", array[i]);
    printf("\n");
 
int min = array[0];
for( i = 0; i < SIZE1; ++i)
    if(array[i] < min)
        min = array[i];
 printf("Min element: array[i] = %d\n", min);
 
 
     array[SIZE2];
        for ( i = 0; i < SIZE2; ++i )
        array[i] = brand2();
 
    printf("Array2:\n");
    for ( i = 0; i < SIZE2; ++i )
        printf("%4d", array[i]);
    printf("\n");
 
 min = array[0];
for( i = 0; i < SIZE1; ++i)
    if(array[i] < min)
        min = array[i];
 printf("Min element: array[i] = %d\n", min);
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.11.2018, 20:56
Ответы с готовыми решениями:

Поменять местами элементы массива
Напишите программу, меняющую местами первый и последний элементы заданного массива целых чисел.

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

Поменять местами i и k-ый элементы массива
Доброго всем дня. Задание следующее: Дан массив размерности n. Поменять местами значения i-ого и...

Поменять местами элементы двумерного массива
Поменять местами элементы матpици A = (a ), i = j = 1,2, ..., n, pозположение на главной диагонали...

Поменять местами максимальные элементы массива
В массивах A и B поменять местами максимальные элементы в первой и второй половинах массивов....

2
stake-k26
539 / 412 / 323
Регистрация: 25.04.2016
Сообщений: 1,194
05.11.2018, 01:39 2
liberty_, а что делать если число элементов окажется неодинаковым? Например, в первом массиве после минимального элемента стоят 12 элементов. А во втором массиве 5 элементов, что стоят после минимального элемента и имеют чётный индекс. И как быть?

Очевидно, что придется идти в динамическую память, а в вашем коде я даже приблизительно ничего похожего на malloc или сalloc не вижу.

А в остальном:

1. определить новый размер массива 1 и создать еще один массив подходящего размера
2. переписать в новый массив все элементы массива 1, которые идут до минимального
3. переписать в него все элементы массива 2, которые идут после минимального на четных позициях.
4. определить новый размер массива 2, создать еще один массив подходящего размера
5. переписать в новый массив все элементы массива 2, которые идут до минимального
6. переписать в него все элементы массива 1, которые идут после минимального
7. освободить указатель на первый массив и записать в него указатель на массив-подменыш
8. повторить эту операцию для второго массива

как вариант: не создавать дополнительные массивы, а воcпользоваться realloc, но тогда придется либо где-то хранить перемещаемые элементы, например в третьем массиве подходящего размера.

или, например сделать это после 6 шага. Т.е не освобождать указатель, а применить к первому массиву realloc и переписать в него новоый массив, и то же сделать для второго, после чего удалить промежуточные массивы.

Добавлено через 2 минуты
кстати, а что делать с элементами второго массива, которые идут после минимального, но имеют нечетные индексы?

Добавлено через 40 секунд
просто перезаписать? тогда в алгоритме ничего менять не надо, а так придется еще и это учесть.
1
liberty_
0 / 0 / 0
Регистрация: 05.05.2018
Сообщений: 35
05.11.2018, 15:25  [ТС] 3
Это просто ужас... Но спасибо!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.11.2018, 15:25

Поменять местами первый и минимальный элементы массива
Заданный массив. Поменять местами его первый и минимальный элементы. Если элементов с минимальным...

Поменять местами первый и максимальный элементы массива
#include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;stdlib.h&gt; #define m 100 void main() { ...

Поменять местами максимальные элементы массива и матрицы
Мне нужно решить задачу &quot;Поменять местами максимальные элементы массива А (45) и матрицы В...


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

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

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