- •Практикум по программированию на языке с
- •Порядок выполнения лабораторных работ
- •Основы программирования в среде языка си. Оператор присваивания
- •Приоритет операций в выражении
- •Задание 1 (программа 1_1)
- •Программирование разветвленных алгоритмов. Операторы передачи управления
- •Программирование циклических алгоритмов с заданным числом повторений
- •Программирование циклических алгоритмов с предусловием
- •Программирование циклических алгоритмов с постусловием
- •Модифицировать программу 3_2 для вычисления функций f1(X) и f2 (X) с применением оператора цикла с постусловием. Выполнить ее и сравнить результаты с полученными ранее.
- •Программирование алгоритмов обработки одномерных массивов
- •Задание 1
- •Обработка двумерных массивов
- •Программирование с применением функций
- •[Класс] тип имя ([список параметров])[throw (исключения)] {тело функции}
- •Return [выражение];
- •Программирование с возвратом из функций нескольких значений
- •Лабораторная работа 10 Обработка символьных и строковых данных
- •Структуры
- •Модульное программирование
- •Динамические структуры данных. Списки
- •Задание 1 (программа 14_1)
- •Графика
- •Задание к расчетно-графической работе
- •Библиографический список
- •Типы данных
- •Обозначения графические в схемах алгоритмов (гост 19.701-90)
- •Сообщения об ошибках Сообщения об ошибках периода компиляции
- •Ошибки стадии выполнения
- •Математические ошибки
- •Функции ввода-вывода для стандартных потоков
- •Функции для работы со строками
- •Библиотека заголовочных файлов
- •Контейнерные классы
Обработка двумерных массивов
Цель работы: научиться разрабатывать и отлаживать программы с использованием матриц.
Массив можно представить как ряд или последовательность данных, а можно как таблицу, данные которой распределены по строкам и столбцам. В двумерном массиве, одна размерность соответствует строкам, а вторая столбцам. При объявлении массива каждая размерность представляет собой дополнительный индекс.
Описание двумерного массива (матрицы):
<класс><тип><идетификатор>[конст. выраж1][конст. выраж2]…,
<идетификатор>[конст. выраж1][конст. выраж2]…;
Пример. Вычислить суммы элементов
в столбцах двумерного числового массива
А размером [1..3,1..4].
Текст программы для СА (рис. 9):
#include <stdio.h>
#include <conio.h>
void main ()
{
int a [3][4]={{1,2,3,4},{1,2,3,4},{1,2,3,4}};
int s[4]; // массив сумм
int i, j; clrscr();
for ( j=0; j<4; ++j)
{
s[j] = 0;
for ( i=0; i<3; ++i )
s[j] = s[j] + a[i][j];
printf (" s[%d] = %d ", j, s[j]);
}
getch();
}
Задание 1 (программа 7_1)
1. Даны матрицы A,B [1..4,1..4] вещественных чисел. Вычислить матрицу С поэлементным сложением соответствующих элементов матриц А и В.
2. Дана матрица B[1..5,1..5] вещественных чисел. Найти для нее транспонированную матрицу.
3. Даны матрица A[1..4,1..4] вещественных чисел и константа К. Вычислить матрицу С=А*К.
4. Сформировать массив по правилу 1 0 0 ... 0
2 1 0 ... 0
3 2 1 ... 0
...
10 9 8 ... 1 .
5. Даны натуральное N и элементы квадратной вещественной матрицы А пятого порядка. Вычислить N-ю степень каждого элемента этой матрицы
(аij1 = аij, аij2 = аij * аij, аij3 = аij2 * аij и т.д., где i, j = 1,2,...,5).
6. Сформировать массив по правилу 0 0 0 ...0
0 1 0 ...0
0 0 2 ...0
…
0 0 0 ...9 .
7. Сформировать массив последовательностью натуральных чисел:
1 2 ... 10
11 12 ... 20
21 22 ... 30
...
91 92 ... 100 .
8. Сформировать двумерный массив:
1 2 3 4 5
5 1 2 3 4
4 5 1 2 3
3 4 5 1 2
2 3 4 5 1 .
9. Дана матрица A[1..N,1..N] целых чисел. Сформировать вектор В из максимальных элементов каждой строки.
10. Дана матрица A[1..6,1..6] челых чисел и переменная Х. Элементы нечетных строк матрицы А заменить на Х.
11. Дана матрица B[1..5,1..5]. Получить массив С удалением (либо об-нулением) n-й строки и k-го столбца из матрицы В.
12. Определить, является ли заданная квадратная матрица девятого порядка магическим квадратом, т. е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.
13. Определить, является ли заданная целая квадратная матрица шестого порядка симметричной (относительно главной диагонали).
14. Дана вещественная матрица A[1..7,1..4]. Переставляя ее строки и столбцы, добиться того, чтобы наибольший элемент оказался в верхнем левом углу.
15. Дана вещественная матрица размером 4х8. Упорядочить ее строки по неубыванию сумм их элементов.
16. Для заданной целой матрицы размером 6х8 элементов напечатать индексы всех ее седловых точек. Элемент матрицы называется седловой точкой, если он является наименьшим в своей строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце.
17. Дана матрица A[1..6,1..2] вещественных чисел. Рассматривая A [i,1] и A [i,2] как координаты точек на плоскости, определить радиус наименьшего круга (с центром в начале координат), внутрь которого попадают все эти точки.
18. Дан массив F[1..N,1..M] из целых малых величин, определить количество «особых» элементов в нем. Элемент считается «особым», если он больше суммы остальных элементов своего столбца.
19. Дана матрица D[1..5,1..6] из целых чисел. Упорядочить элементы строк в нем по убыванию.
20. Дан массив М координат точек на плоскости. Найти наибольшее расстоя-ние между этими точками.
Задание 2 (программа 7_2)
Сформировать таблицу Пифагора.
Задание 3 (программа 7_3)
Модифицировать программу 6_3 таким образом, чтобы значения X, F1 и F2 были представлены двумерным массивом, состоящим из трех строк.
Лабораторная работа 8