Лабораторная работа состоит из двух частей: одномерные массивы и многомерные массивы. Студент выполняет обе части.
В первой части исходные массивы необходимо формировать с помощью генератора случайных чисел, число элементов массива вводится с клавиатуры. Сформированный массив (массивы) необходимо вывести на экран, необходимо также вывести результат работы программы. Используя массив небольшой размерности провести контрольный расчет вручную. При изменении массивов (сортировка, запись в обратном порядке и др.) новый массив не создавать.
Во второй части работы используются двухмерные массивы (матрицы). Матрицы также формируются с помощью генератора случайных чисел, размерности матриц вводятся с клавиатуры. Исходные данные и результаты работы вывести на печать. Для исходных данных небольшой размерность провести ручной расчет для контроля результатов. При изменении матриц (сортировка строки, запись строки в обратном порядке, транспонирование матрицы и др.) новые массивы (матрицы) не создавать.
Примеры выполнения работы
Пример 1
Условие задачи:
Задан одномерный массив вещественных чисел. Написать программу, которая "переворачивает" массив, т. е. меняет местами его первый и последний элементы, второй и предпоследний и т. д.
Для решения задачи в среде Microsoft Visual Studio 2013 было создано стандартное консольное приложение (проект типа Win32 Console Application) с установленным свойством «пустой проект» (Empty project). В проект добавлен файл с расширением .cpp, исходный код которого приведен ниже.
Листинг программы с комментариями:
#include <stdio.h>
#include <stdlib.h>
void main()
{
double *pMas; // Указатель на массив
int n; // Заранее неизвестная размерность массива
// Вводим размерность массива с клавиатуры
printf_s("n=");
scanf_s("%d", &n);
// Выделяем память динамически
pMas = (double *)malloc(n*sizeof(double));
// Заполняем массив случайными числами в интервале [0, 100)
// и печатаем число
for (int i = 0; i<n; i++)
{
pMas[i] = rand() % 100;
printf("%f ", pMas[i]);
}
// Переворачиваем массив
for (int i = 0; i<n / 2; i++)
{
// Меняем 2 элемента местами, используя буферную переменную
double buf = pMas[i];
pMas[i] = pMas[n - 1 - i];
pMas[n - 1 - i] = buf;
}
// Печатаем полученный массив
printf("\n");
for (int i = 0; i<n; i++)
printf("%f ", pMas[i]);
// Освобождаем память
free(pMas);
// Останавливаем программу, ждем нажатия любой клавиши
system("pause");// Останавливаем программу, ждем нажатия любой клавиши
}