- •Лабораторная работа № 1
- •Далее создадим файл:
- •Задания1
- •Лабораторная работа № 2
- •Консольный ввод-вывод
- •Чтение и запись символов
- •Чтение и запись строк
- •Форматированный консольный ввод-вывод
- •Форматированный вывод
- •Форматированный ввод
- •7. Варианты задания
- •Лабораторная работа № 3
- •5.2 Оператор if
- •Лабораторная работа № 4
- •Содержание отчета
- •Постановка задачи.
- •Общие сведения
- •Лабораторная работа № 5
- •Оператор for
- •Вариации цикла for
- •Бесконечный цикл
- •Циклы for без тела
- •Задание 2. Циклический вычислительный процесс конечные суммы и произведения
- •Лабораторная работа № 6
- •Оператор цикла while
- •Оператор do … while
- •Оператор break
- •Оператор continue
- •Лабораторная работа № 7
- •5.1 Одномерный массив
- •Создание указателя на массив
- •5.3 Индексация с помощью указателей
- •Сортировка
- •Методические указания.
- •Лабораторная работа № 8
- •Двухмерные массивы
- •Лабораторная работа № 9
- •Лабораторная работа № 11
- •Задача 2. Параметры функции
- •Лабораторная работа № 12
- •Варианты заданий
- •Лабораторная работа № 13
- •Некоторые операции над матрицами
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 14
- •Решение уравнения методом деления отрезка пополам (бисекций)
- •Методические указания
- •Лабораторная работа № 15
- •Вычисление определенного интеграла
- •6.2.1 Метод средних прямоугольников
- •6.2.1 Метод трапеций
- •Методические указания
- •Варианты заданий
- •Лабораторная работа № 10
- •Структуры (struct)
- •Лабораторная работа № 16
- •Директива #include
- •7. Методические указания
- •8. Варианты заданий.
- •Лабораторная работа № 17
- •Указатель на файл
- •Открытие файла
- •Перенаправление потока
- •Чтение из потока и запись в поток
- •Закрытие потока
- •Использование функций feof() и ferror()
- •Варианты заданий
- •Лабораторная работа № 18
- •Функции обработки символов
- •Функции обработки строк
- •Варианты заданий
- •Лабораторная работа № 19
- •Структуры
- •6.1.1 Доступ к элементам структуры
- •6.1.2 Присваивание структур
- •Массивы структур
- •Передача структур в функции
- •Передача членов структур в функции
- •Передача всей структуры в функцию
- •Указатели на структуры
- •Объявление указателя на структуру
- •Использование указателей на структуру
- •Массивы и структуры в структурах
- •Функции fread () и fwrite ()
- •Варианты заданий
- •Лабораторная работа № 20
- •Например, формула
- •Задание на программирование
Лабораторная работа № 8
Тема: «Обработка двухмерных массивов»
Цель работы
Получение практических навыков в работе с двухмерными массивами.
Техническое обеспечение
2.1 Персональная ЭВМ типа IBM PC/386 и позднее.
Клавиатура.
Дисплей.
Принтер.
Программное обеспечение
Операционная система Windows
Система программирования Visual C++ версия 6.0 или Borland C++ версия 3.1 и более поздние версии.
Постановка задачи
Для конкретного варианта ввести массив исходных данных и выполнить над ним указанные действия. Написать программу, которая работает с любым набором данных. Входную информацию и результаты счета вывести на печать, снабдив их соответствующими заголовками.
Содержание отчета.
5.1 Тема и цель работы.
5.2 Схема алгоритма решения.
5.3 Текст программы.
5.4 Результаты выполнения программы
Общие сведения
Массив – это совокупность переменных одного типа, к которым обращаются с помощью общего имени. Доступ к отдельному элементу массива может осуществляться с помощью индекса. В языке С все массивы состоят из соприкасающихся участков памяти. Наименьший адрес соответствует первому элементу, наибольший адрес соответствует последнему элементу. Массивы могут иметь одну или несколько размерностей.
Двухмерные массивы
Язык С позволяет создавать многомерные массивы. Простейшим видом многомерного массива является двухмерный массив. Двухмерный массив – это массив одномерных массивов. Двухмерный массив объявляется следующим образом:
тип имя_массива[размер1][размер2];
Следовательно, для объявления двухмерного массива целых чисел с размером 10 и 20 следует написать:
int d[10][20];
Посмотрим внимательно на это объявление. В противоположность другим языкам программирования, где размерности массива отделяются запятой, язык С помещает каждую размерность в отдельные скобки.
Для доступа к элементу в 3 строке 5 столбце массива d следует использовать
d[2][4] (Не забываем что в массивах индексация начинается с нуля)
В следующем примере вводится по строкам двухмерный массив и затем выводится построчно на экран.
Пример.
#include <stdio.h>
#include <conio.h>
main()
{
int i, j, num[3][4];
char ch;
for (i=0; i<3; i++)
{
printf(“Введите элементы %d строки: “, i+1);
for (j=0; j<4; j++)
scanf(“%d”, &num[i][j]);
}
for (i=0; i<3; i++)
{
for (j=0; j<4; j++)
printf(“%d “, num[i][j]);
printf(“\n”);
}
return 0;
}
Двухмерные массивы можно представить в виде матрицы, где первый индекс отвечает за строку, а второй – за столбец. Это означает, что правый индекс изменяется быстрее левого, если двигаться по массиву в порядке расположения элементов в памяти. На рисунке 1 показано графическое представление двухмерного массива в памяти.
-
[0][0]
[0][1]
[0][2]
[0][3]
[0][4]
[0][5]
[0][6]
[0][7]
-
[1][0]
[1][1]
[1][2]
[1][3]
[1][4]
[1][5]
[1][6]
[1][7]
-
[2][0]
[2][1]
[2][2]
[2][3]
[2][4]
[2][5]
[2][6]
[2][7]
-
[3][0]
[3][1]
[3][2]
[3][3]
[3][4]
[3][5]
[3][6]
[3][7]
-
[4][0]
[4][1]
[4][2]
[4][3]
[4][4]
[4][5]
[4][6]
[4][7]
Рисунок 1 – Размещение двухмерного массива в памяти
Задание 2.
1. Дана целочисленная прямоугольная матрица. Определить количество строк, не содержащих ни одного нулевого элемента;
2. Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента.
3. Дана целочисленная квадратная матрица. Определить произведение элементов в тех строках, которые не содержат отрицательных элементов;
4. Дана целочисленная квадратная матрица. Определить сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
5. Дана матрица размера 5 x 4. Написать программу для вычисления I нормы матрицы: .
6. Найти наибольший элемент матрицы А(5х3) и номер строки и столбца, в котором он находится.
7. Вычислить сумму элементов каждой строки матрицы Х(4х3), определить наименьшее значение этих сумм и номер соответствующей строки.
8. Найти наибольшие элементы каждой строки матрицы Х(4х5) и записать их в массив Y.
9. Найти наибольший элемент главной диагонали матрицы А(4х4) и вывести на экран все строку, в которой он находится.
10. В массиве M[6*4] все числа различны. В каждой строке находится минимальный элемент, затем среди этих чисел выбирается максимальное. Напечатать номер строки массива М, в которой расположено выбранное число.
Исходные данные должны включать и положительные числа, и отрицательные числа, и нули.
1. Дана целочисленная прямоугольная матрица. Определить:
количество строк, не содержащих ни одного нулевого элемента;
максимальное из чисел, встречающихся в заданной матрице более одного раза.
2. Дана целочисленная прямоугольная матрица. Определить количество столбцов, не содержащих ни одного нулевого элемента.
Характеристикой строки целочисленной матрицы назовем сумму ее положительных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с ростом характеристик.
3. Дана целочисленная прямоугольная матрица. Определить:
количество столбцов, содержащих хотя бы один нулевой элемент:
номер строки, в которой находится самая длинная серия одинаковых элементов.
4. Дана целочисленная квадратная матрица. Определить:
произведение элементов в тех строках, которые не содержат отрицательных элементов;
максимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
5. Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех столбцах, которые не содержат отрицательных элементов;
минимум среди сумм модулей элементов диагоналей, параллельных побочной диагонали матрицы.
6. Дана целочисленная прямоугольная матрица. Определить:
сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент;
номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица А имеет седловую точку Aij, если Aij является минимальным элементом в i-й строке и максимальным в j-ом столбце.
7. Для заданной матрицы размером 88 найти такие k, что k-я строка матрицы совпадает с k-м столбцом.
Найти сумму элементов в тех строках, которые содержат хотя бы один отрицательный элемент.
8. Характеристикой столбца целочисленной матрицы назовем сумму модулей его отрицательных нечетных элементов. Переставляя столбцы заданной матрицы, расположить их в соответствии с ростом характеристик.
Найти сумму элементов в тех столбцах, которые содержат хотя бы один отрицательный элемент.
9. Соседями элемента Aij в матрице назовем элементы Akl с i-1 k i+1, j-1 l j+1, (k, l) (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы. Построить результат сглаживания заданной вещественной матрицы размером 1010.
В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали.
10. Элемент матрицы называется локальным минимумом, если он строго меньше всех имеющихся у него соседей. Подсчитать количество локальных минимумов заданной матрицы размером 1010.
Найти сумму модулей элементов, расположенных выше главной диагонали.
11. Коэффициенты системы линейных уравнений заданы в виде прямоугольной матрицы. С помощью допустимых преобразований привести систему к треугольному виду.
Найти количество строк, среднее арифметическое элементов которых меньше заданной величины.
12. Уплотнить заданную матрицу, удаляя из нее строки и столбцы, заполненные нулями. Найти номер первой из строк, содержащих хотя бы один положительный элемент.
13. Осуществить циклический сдвиг элементов прямоугольной матрицы на n элементов вправо или вниз (в зависимости от введенного режима). n может быть больше количества элементов в строке или в столбце.
14. Осуществить циклический сдвиг элементов прямоугольной матрицы размерности MN вправо на k элементов следующим образом: элементы 1-й строки сдвигаются в последний столбец сверху вниз, из него – в последнюю строку справа налево, из нее – в первый столбец снизу вверх, из него – в первую строку; для остальных элементов – аналогично.
15. Дана целочисленная прямоугольная матрица. Определить номер первого из столбцов, содержащих хотя бы один нулевой элемент.
Характеристикой строки целочисленной матрицы назовем сумму ее отрицательных четных элементов. Переставляя строки заданной матрицы, расположить их в соответствии с убыванием характеристик.
16. Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в строке.
Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента.
17. Путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы ее максимальный элемент находился в левом верхнем углу, следующий по величине – в позиции (2,2), следующий по величине – в позиции (3,3) и т. д., заполнив таким образом всю главную диагональ.
Найти номер первой из строк, не содержащих ни одного положительного элемента.
18. Дана целочисленная прямоугольная матрица. Определить:
количество строк, содержащих хотя бы один нулевой элемент;
номер столбца, в котором находится самая длинная серия одинаковых элементов.
19. Дана целочисленная квадратная матрица. Определить:
сумму элементов в тех строках, которые не содержат отрицательные элементы;
минимум среди сумм элементов диагоналей, параллельных главной диагонали матрицы.
20. Дана целочисленная прямоугольная матрица. Определить:
количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент;
номера строк и столбцов всех седловых точек матрицы.
Примечание. Матрица А имеет седловую точку Aij, если Aij является минимальным элементом в i-й строке и максимальным в j-ом столбце.