Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C++.
Многомерные массивы в C
Многомерные массивы в C
Многомерные массивы в C
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
Обработка элементов массива
2.54M
Категория: ПрограммированиеПрограммирование

Многомерные массивы в C

1. Многомерные массивы в C

Описание двумерного массива строится из описания одномерного
путем добавления второй размерности, то есть элементом
массива может быть в свою очередь тоже массив, например:
int a[4][3];
Анализ подобного описания необходимо проводить в направлении
выполнения операций [], то есть слева направо. Таким образом,
переменная a является массивом из четырех элементов, что
следует из первой части описания a[4].
Каждый элемент a[i] этого массива в свою очередь является
массивом из трех элементов типа int, что следует из второй части
описания.

2. Многомерные массивы в C

Пусть объявлен массив
a
int a[3][4]
100
a[0]
a[1]
106
100
a[2]
114
101
102
122
103
104
a[0][0]
15
106
a[0][1]
24
107
108
a[1][0]
-11
114
a[0][2]
-17
109
110
a[1][1]
98
115
116
a[2][0]
-5
122
105
124
111
112
a[1][2]
20
117
118
a[2][1]
14
123
a[0][3]
-42
a[1][3]
-3
119
120
a[2][2]
56
125
126
113
121
a[2][3]
48
127
128
129

3. Многомерные массивы в C

Пусть объявлен массив
a
int a[3][4]
100
a[0]
a[1]
106
100
a[2]
114
101
102
122
103
104
a[0][0]
15
106
108
a[1][0]
-11
114
a[0][2]
-17
109
110
a[1][1]
98
115
116
a[2][0]
-5
122
105
a[0][1]
24
107
124
a[0][3]
-42
111
112
a[1][2]
20
117
118
a[2][1]
14
123
Имя двумерного массива без
квадратных скобок за ним имеет
значение адреса первого
элемента этого массива, то есть
значение адреса первой строки
— одномерного массива из трех
элементов.
a[1][3]
-3
119
120
a[2][2]
56
125
126
113
121
a[2][3]
48
127
128
129

4. Многомерные массивы в C

Пусть объявлен массив
a
int a[3][4]
100
a[0]
a[1]
106
100
a[2]
114
101
102
122
103
104
a[0][0]
15
106
a[0][1]
24
107
108
a[1][0]
-11
114
a[0][2]
-17
109
110
a[1][1]
98
115
116
a[2][0]
-5
122
105
124
a[0][3]
-42
111
112
a[1][2]
20
117
118
a[2][1]
14
123
Имя двумерного массива с
одним индексным выражением
в квадратных скобках за ним
обозначает соответствующую
строку двумерного массива и
имеет значение адреса первого
элемента этой строки.
Например, в нашем случае a[2]
является адресом величины
типа int, а именно ячейки, в
которой находится число -5
a[1][3]
-3
119
120
a[2][2]
56
125
126
113
121
a[2][3]
48
127
128
129

5. Многомерные массивы в C

Пусть объявлен массив
a
int a[3][4]
100
a[0]
a[1]
106
100
a[2]
114
101
102
122
103
104
a[0][0]
15
106
a[0][1]
24
107
108
a[1][0]
-11
114
a[0][2]
-17
109
110
a[1][1]
98
115
116
a[2][0]
-5
122
105
124
a[0][3]
-42
111
112
a[1][2]
20
117
118
a[2][1]
14
123
Имя двумерного массива с
двумя индексными
выражениями в квадратных
скобках за ним обозначает
соответствующий элемент
двумерного массива и имеет тот
же тип. Например, в нашем
примере a[1][3] является
величиной типа int, а именно
ячейкой, в которой находится
число -3
a[1][3]
-3
119
120
a[2][2]
56
125
126
113
121
a[2][3]
48
127
128
129

6. Многомерные массивы в C

При решении задач двумерные массивы удобно представлять как
таблицу данных (например, чисел), каждый элемент которой имеет
двойную нумерацию --- номер строки и номер столбца таблицы.
Пусть дан двумерный массив A размером 4×10:
Индексы столбцов
Индексы строк
0 1 2 3 4 5 6 7 8 9
0 -2 4 14 -1 9 32 0 -7 16 8
1 3 4 -4 -3 -9 24 11 -1 6 4
2 -1 34 6 -1 9 14 5 4 12 8
3 -2 5 11 -9 5 32 0 -7 16 27
A
Имя мас сива
В этом массиве значение элемента A[2][6] равно 24 (элемент расположен
на пересечении второй строки и шестого столбца).

7. Многомерные массивы в C

Индексы столбцов
Индексы строк
0 1 2 3 4 5 6 7 8 9
0 -2 4 14 -1 9 32 0 -7 16 8
1 3 4 -4 -3 -9 24 11 -1 6 4
2 -1 34 6 -1 9 14 5 4 12 8
3 -2 5 11 -9 5 32 0 -7 16 27
A
Имя мас сива
Если элементу массива A[2][6] присвоить значение -6 (A[2][6]=-6),
а элементу массива A[4][3] присвоить значение элемента A[1][10]
(A[4][3]=A[1][10]), то массив примет следующий вид:
Индексы столбцов
Индексы строк
0 1 2 3 4 5 6 7 8 9
0 -2 4 14 -1 9 32 0 -7 16 8
1 3 4 -4 -3 -9 -6 11 -1 6 4
2 -1 34 6 -1 9 14 5 4 12 8
3 -2 5 8 -9 5 32 0 -7 16 27
A
Имя мас сива

8. Многомерные массивы в C

// Ввод/вывод элементов массива
#include <stdio.h>
#define SIZE1 5
void main() {
int ar1[SIZE1][SIZE1];
for (int i=0; i<SIZE1; i++)
for (int j=0; j<SIZE1; j++)
ar1[i][j]=i+j;
for (int i=0; i<SIZE1; i++) {
for (int j=0; j<SIZE1; j++)
printf("%d ",ar1[i][j]);
printf("\n");
}
}

9. Многомерные массивы в C

Дан двумерный массив A размером n×m. Составить программу,
которая находит сумму всех элементов массива.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 100
void main() {
srand(time(NULL));
int a[SIZE1][SIZE1], sum=0, i, j, n, m;
printf(" n = "); scanf("%d",&n);
printf(" m = "); scanf("%d",&m);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=rand()%10;

10. Многомерные массивы в C

Дан двумерный массив A размером n×m. Составить программу,
которая находит сумму всех элементов массива.
for (i=0; i<n; i++) {
for (j=0; j<m; j++)
printf ("%d ", a[i][j]);
printf("\n");
}
printf("\n");
for (i=0; i<n; i++)
for (j=0; j<m; j++)
sum+=a[i][j];
printf ("sum =%d",sum);
}

11. Многомерные массивы в C++.

Дан двумерный массив A размером n×m. Составить программу,
которая находит сумму элементов каждой строки массива.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 100
void main() {
srand(time(NULL));
int a[SIZE1][SIZE1], sum, i, j, n, m;
printf(" n = "); scanf("%d",&n);
printf(" m = "); scanf ("%d",&m);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=rand()%10;

12. Многомерные массивы в C

Дан двумерный массив A размером n×m. Составить программу,
которая находит сумму элементов каждой строки массива.
for (i=0; i<n; i++) {
for (j=0; j<m; j++)
printf("%d", a[i][j]);
printf("\n");
}
printf("\n");
for (i=0; i<n; i++) {
sum=0;
for (j=0; j<m; j++)
sum+=a[i][j];
printf ("sum %d = %d ",i+1,sum);
}
}

13. Многомерные массивы в C

Дан двумерный массив A размером 6×8. Составить программу,
которая находит наибольший элемент в каждой строке и выводит его
экран.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 6
#define SIZE2 8
void main() {
srand(time(NULL));
int a [SIZE1][SIZE2], max, i, j;
for (i=0; i<SIZE1; i++)
for (j=0; j<SIZE1; j++)
a[i][j]=rand()%20;

14. Многомерные массивы в C

Дан двумерный массив A размером 6×8. Составить программу,
которая находит наибольший элемент в каждой строке и выводит его
экран.
for (i=0; i<SIZE1; i++) {
for (j=0; j<SIZE1; j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
for (i=0; i<SIZE1; i++) {
max=a[i][0];
for (j=1; j<SIZE1; j++)
if (a[i][j]>max)
max=a[i][j];
printf ("max=%d", max);
}
}

15. Обработка элементов массива

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

16. Обработка элементов массива

Сортировка простым выбором (по возрастанию)
1. В исходной последовательности выбирается наименьший элемент.
2. Найденный элемент меняется местами с первым элементом.
Затем эти операции повторяются с оставшимися n-1 элементами.
То есть в последовательности, начиная со второго элемента,
выбирается наименьший, затем он меняется местами со вторым.
Далее операции повторяются с оставшимися n-2 элементами и т.д.,
пока массив не окажется упорядоченным.

17. Обработка элементов массива

В программе, записанной ниже, последовательность, состоящая из n
целых чисел, упорядочивается в порядке возрастания с помощью
сортировки методом простого выбора.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 100
void main() {
srand(time(NULL));
int a[SIZE1], m, k, n, i, j;
cin>>n;
for (i=0; i<n; i++)
a[i]=rand()%20;
for (i=0; i<n; i++)
printf("%d",a[i]);
printf("\n");

18. Обработка элементов массива

В программе, записанной ниже, последовательность, состоящая из n
целых чисел, упорядочивается в порядке возрастания с помощью
сортировки методом простого выбора.
for (i=0; i<n-1; i++) {
k=i;
for (j=i+1; j<n; j++)
if (a[j]<a[k])
k=j;
m=a[i]; a[i]=a[k]; a[k]=m;
}
for (i=0; i<n; i++)
printf("%d", a[i]);
}

19. Обработка элементов массива

Сортировка методом пузырька (по возрастанию)
Данный алгоритм основан на принципе сравнения и обмена пары
соседних элементов до тех пор, пока не будут рассортированы все
элементы.
1. В исходной последовательности просматриваются пары соседних
элементов. Если элементы некоторой пары находятся в
неправильном порядке (например, левее стоит больший элемент), то
меняем их местами. В результате, наибольший элемент окажется в
последовательности последним.
2. Затем в последовательности, просматриваются пары соседних
элементов, за исключением последнего элемента. Если элементы
некоторой пары находятся в неправильном порядке (левее стоит
больший элемент), то их меняют местами.
Далее операции повторяются с оставшимися n-2 элементами и т. д.
до тех пор, пока в просматриваемой части последовательности не
останется только один элемент.

20. Обработка элементов массива

В программе, записанной ниже, последовательность, состоящая из n
целых чисел, упорядочивается в порядке возрастания с помощью
сортировки методом пузырька.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 10
void main() {
srand(time(NULL));
int a[SIZE1], m, n, i, j;
cin>>n;
for (i=0; i<n; i++)
a[i]=rand()%20;
for (i=0; i<n; i++)
printf("%d", a[i]);
printf("\n");

21. Обработка элементов массива

В программе, записанной ниже, последовательность, состоящая из n
целых чисел, упорядочивается в порядке возрастания с помощью
сортировки методом пузырька.
for (i=n-1; i>0; i--)
for (j=1; j<=i; j++)
if (a[j-1]>a[j]) {
m=a[j-1]; a[j-1]=a[j]; a[j]=m;
}
for (int i=0; i<n; i++)
printf("%d", a[i]);
printf("\n");
}

22. Обработка элементов массива

Даны натуральное число n и двумерный массив размером n × m.
Составить программу, упорядочивающую по возрастанию элементы
каждой строки. Полученный массив вывести на экран.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define SIZE1 100
void main() {
srand(time(NULL));
int a[SIZE1][SIZE1], i, j, n, m, t, l, k;
printf(" n = "); scanf("%d", &n);
Printf(" m = "); scanf("%d", &m);
for (i=0; i<n; i++)
for (j=0; j<m; j++)
a[i][j]=rand()%10;

23. Обработка элементов массива

Даны натуральное число n и двумерный массив размером n × m.
Составить программу, упорядочивающую по возрастанию элементы
каждой строки. Полученный массив вывести на экран.
for (i=0; i<n; i++) {
for (j=0; j<m; j++)
printf("%d", a[i][j]);
printf("\n");
}
printf("\n");
for (i=0; i<n; i++)
for (j=0; j<m-1; j++) {
l=j;
for (k=j+1; k<m; k++)
if (a[i][k]<a[i][l])
l=k;
t=a[i][j]; a[i][j]=a[i][l]; a[i][l]=t;
}

24. Обработка элементов массива

Даны натуральное число n и двумерный массив размером n × m.
Составить программу, упорядочивающую по возрастанию элементы
каждой строки. Полученный массив вывести на экран.
for (i=0; i<n; i++) {
for (j=0; j<m; j++)
printf("%d", a[i][j]);
printf("\n");
}
printf("\n");
}
English     Русский Правила