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

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

18.03.2019, 10:39. Просмотров 120. Ответов 2

Здравствуйте, пытался поменять элементы (как на картинке) Название: Безымянный.png
Просмотров: 13

Размер: 8.3 Кб при индексной замене элементов они перемещаются снизу на нужную позицию, а на этой позиции пропадают, замена типа
x=b
b=c
c=x
Получается заменить один индекс другим, но тот элемент, на который переместили, обращается в ноль.
Как можно сделать по-другому?
Вот код:
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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define N 5
int main(){
int matrix[N][N];
int i,j;
printf("Ishodnaya matrica:\n");
for(i=0;i<N;i++){
        for(j=0;j<N;j++){
        matrix[i][j] = 10*i+j;
       printf("%4d",matrix[i][j]);
        }
printf("\n");
}
 
        printf("\n");
 
    printf("\n");
for(i=0;i<N;i++){
    for(j=0;j<N;j++){
                int a,b,c,d,e,f,g,h;
                int a1,b1,c1,d1,e1,f1,g1,h1;
                a=matrix[0][1];
                matrix[0][1]=a1;
                a1=e1;
 
                e=matrix[4][1];
                matrix[4][1]=e1;
                e1=a;
            }
    for (i=0; i<N; i++) {
        for (j=0; j<N; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\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
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define N 5
int main(){
int matrix[N][N];
int i,j;
printf("Ishodnaya matrica:\n");
for(i=0;i<N;i++){
        for(j=0;j<N;j++){
        matrix[i][j] = 10*i+j;
       printf("%4d",matrix[i][j]);
        }
printf("\n");
}
 
        printf("\n");
 
    printf("\n");
for(i=0;i<N;i++){
    for(j=0;j<N;j++){
                int b;
                b = matrix[i][j];
                matrix[i][j] = matrix[i][N-1-j];
                matrix[i][N-1-j] = b;
            }
    for (i=0; i<N; i++) {
        for (j=0; j<N; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
}
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2019, 10:39
Ответы с готовыми решениями:

В массиве поменять местами максимальный и минимальный элементы
Массив из 10 элементов, которых нужно ввести произвольно. После, нужно поменять местами значения...

Не получается поменять местами элементы в двумерном массиве
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;locale.h&gt; #define k 3 #define m 3 int...

Поменять местами в массиве максимальный и минимальный элементы
Помогите пожалуйста решить задачку)совсем не силен в с++( Задан одномерный массив В,состоящем из...

В заданном массиве[1:N] поменять местами наибольший и наименьший элементы
В заданном массиве поменяйте местами наибольший и наименьший элементы. Напишите пожалуйста...

Поменять местами в массиве B(N) первый отрицательный и максимальный элементы
помогите пожалуйста

2
Байт
Эксперт C
20467 / 12992 / 2733
Регистрация: 24.12.2010
Сообщений: 27,183
18.03.2019, 11:34 2
Krovonovskiy, Разобраться в твоем первом коде не просто, уж больно много переменных. Но одна вещь бросается в глаза. Ту меняешь ДВАЖДЫ. Менять надо только первый треугольник, во втором нужные элементы появятся сами.
Нарисуй небольшую матрицу 3 х 3 и посмотри на ней, что надо сделать, и что делает твой код
1
Krovonovskiy
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 15
18.03.2019, 16:23  [ТС] 3
Разобрался, спасибо, вышло так:
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 <stdio.h>
#include <stdlib.h>
#include <math.h>
 
#define N 5
int main(){
int matrix[N][N];
int i,j;
printf("Ishodnaya matrica:\n");
for(i=0;i<N;i++){
        for(j=0;j<N;j++){
        matrix[i][j] = 10*i+j;
       printf("%4d",matrix[i][j]);
        }
printf("\n");
}
 
        printf("\n");
 
    printf("\n");
for(i=0;i<N;i++){
    for(j=0;j<N;j++){
                int a,b,c,d;
                a=matrix[0][1];
                matrix[0][1]=matrix[4][1];
                matrix[4][1]=a;
                b=matrix[0][2];
                matrix[0][2]=matrix[4][2];
                matrix[4][2]=b;
                c=matrix[0][3];
                matrix[0][3]=matrix[4][3];
                matrix[4][3]=c;
                d=matrix[1][2];
                matrix[1][2]=matrix[3][2];
                matrix[3][2]=d;
            }
    for (i=0; i<N; i++) {
        for (j=0; j<N; j++) {
            printf("%4d", matrix[i][j]);
        }
        printf("\n");
    }
}
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2019, 16:23

В динамическом массиве поменять местами максимальный и минимальный элементы
В динамическом массиве A поменять местами максимальный и минимальный элементы. Вывести на печать...

В массиве целых чисел поменять местами максимальный и минимальный элементы
В массиве целых чисел поменять местами максимальный и минимальный элементы. Помогите пожалуйста.

Найти в массиве максимальный и минимальный элементы по модулю и поменять их местами
Вот решаю задачу по Си++, но так как дома среды разработки такой нет , то решаю задачу по Си......


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

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

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