отчет по программированию. Отчет по лабораторной работе 4 Обработка одномерных массивов
Скачать 263.2 Kb.
|
Министерство науки и высшего образования РФ Федеральное государственное бюджетное образовательное учреждение высшего образования «Уфимский государственный нефтяной технический университет» Кафедра «Вычислительная техника и инженерная кибернетика» ОТЧЕТ по лабораторной работе № 4 «Обработка одномерных массивов» Вариант 20 Выполнил ст. гр. БПО-21-01 Халиуллин И.И. ______________ подпись, дата Проверил: преподаватель Ганиева В.Р. ______________ оценка, дата, подпись Уфа 2022 1 Постановка задачи Написать программу выполняющую: 1) получение элементов массива по формуле; 2) вычисление параметра полученного массива; 3) определение параметра массива; 4) упорядочение элементов массива. 5) вывести полученные данные в файл. Организовать обработку массива с использованием функций. Каждый пункт это отдельная функция, которая получает массив в качестве параметра. В итоге должно получится 5 функций +main(). 2 Анализ задачи Функции будут принимать указатель на массив. Элементы массива – дробные числа, поэтому массив будет состоять из элементов данных типа double. Чтобы найти вторую треть массива, нужно ввести условие n > 2. Если элементов в массиве будет меньше 3, тогда нельзя будет разделить его на части. Аналогично второму пункту, только в этот раз нужно, чтобы n была больше или равна 4. n > 2 и n > 3, значит, n > 3. «По убыванию обратных значений» - это значит, что должны убывать. Если проанализировать, то можно сделать вывод, что, если обратные значения убывают, то просто значения возрастают. 3 Алгоритмы решения задачи Рисунок 1 - алгоритм главной функции (main) Рисунок 2 - алгоритм функции заполнения массива (fill_mass) Рисунок 3 - алгоритм функции нахождения произведения каждого 4-го элемента второй трети массива (pr_mass) Рисунок 4 - алгоритм функции поиска минимального элемента с минимальным значением во второй четверти массива (min_element_mass) Рисунок 5 - алгоритм функции сортировки первой трети массива (sort_mass) Рисунок 6 - алгоритм функции записи полученных данных в файл (write_file) Рисунок 7 - алгоритм функции вывода массива в консоль (print) 4 Таблица переменныx. Таблица 1 – Таблица переменных для алгоритма и программы
#include #include using namespace std; void fill_mass(double *mas, double *sorted_mas, int n) { for (int i = 0; i < n; i++) { mas[i] = (n * (i + 3.6)) / ((n - i) * (n + i)); sorted_mas[i] = mas[i]; } } double pr_mass(double *mas, int n) { int st = round(n / 3.0), fn = round(2 * n / 3.0) - 1; double pr = 1; for (int i = st; i <= fn; i += 4) { pr *= mas[i]; } return pr; } double min_element_mass(double *mas, int n) { int st = round(n / 4.0), fn = round(n / 2.0) - 1; double min = mas[st]; for (int i = st + 1; i <= fn; i++) min = min > mas[i] ? mas[i] : min; return min; } void sort_mass(double *mas, int n) { int fn = round(n / 3.0) - 1; for (int i = 0; i + 2 <= fn; i += 2) for (int j = 0; j + 2 <= fn - i; j += 2) if (mas[j] > mas[j + 2]) { double t = mas[j]; mas[j] = mas[j + 2]; mas[j + 2] = t; } } void write_file(double *mas, double *sorted_mas, int n, double pr, double min) { FILE *fp; fp = fopen("output.txt", "w"); fprintf(fp, "1. Array: "); for (int i = 0; i < n; i++) { fprintf(fp, "%f ", mas[i]); } fprintf(fp, "\n"); fprintf(fp, "2. Multiplication: %f\n", pr); fprintf(fp, "3. Minimal element: %f\n", min); fprintf(fp, "4. Sorted array: "); for (int i = 0; i < n; i++) { fprintf(fp, "%f ", sorted_mas[i]); } fclose(fp); } void print(double *mas, int n) { for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl; } int main() { int n; double min, pr; cout << "Enter array size (>3):"; cin >> n; double *mass = new double[n], *sorted_mass = new double[n]; fill_mass(mass, sorted_mass, n); min = min_element_mass(mass, n); pr = pr_mass(mass, n); sort_mass(sorted_mass, n); cout << "1. Array: "; print(mass, n); cout << "2. Multiplication: " << pr << endl; cout << "3. Minimal element: " << min << endl; cout << "4. Sorted array: "; print(sorted_mass, n); write_file(mass, sorted_mass, n, pr, min); return 0; } void print(double *mas, int n) { for (int i = 0; i < n; i++) cout << mas[i] << " "; cout << endl; } int main() { int n; double min, pr; cout << "Enter array size (>3):"; cin >> n; double *mass = new double[n], *sorted_mass = new double[n]; fill_mass(mass, sorted_mass, n); min = min_element_mass(mass, n); pr = pr_mass(mass, n); sort_mass(sorted_mass, n); cout << "1. Array: "; print(mass, n); cout << "2. Multiplication: " << pr << endl; cout << "3. Minimal element: " << min << endl; cout << "4. Sorted array: "; print(sorted_mass, n); write_file(mass, sorted_mass, n, pr, min); return 0; } 6 Результаты Рисунок 8 – Скриншот консольного вывода результатов Рисунок 9 – Скриншот результатов в файле Выводы Результаты программы совпадают с ручным расчетом, программа работает верно. |