Главная страница
Навигация по странице:

  • Уфа 2022 1 Постановка задачи

  • 2 Анализ задачи

  • 3 Алгоритмы решения задачи

  • 5 Текст программы на СИ

  • 6 Результаты

  • отчет по программированию. Отчет по лабораторной работе 4 Обработка одномерных массивов


    Скачать 263.2 Kb.
    НазваниеОтчет по лабораторной работе 4 Обработка одномерных массивов
    Анкоротчет по программированию
    Дата03.06.2022
    Размер263.2 Kb.
    Формат файлаdocx
    Имя файлаOtchet4 (4).docx
    ТипОтчет
    #567518

    Министерство науки и высшего образования РФ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «Уфимский государственный нефтяной технический университет»

    Кафедра «Вычислительная техника и инженерная кибернетика»


    ОТЧЕТ

    по лабораторной работе № 4

    «Обработка одномерных массивов»

    Вариант 20

    Выполнил ст. гр. БПО-21-01 Халиуллин И.И.
    ______________

    подпись, дата
    Проверил: преподаватель Ганиева В.Р.
    ______________

    оценка, дата, подпись
    Уфа 2022
    1 Постановка задачи
    Написать программу выполняющую:

    1) получение элементов массива по формуле;

    2) вычисление параметра полученного массива;

    3) определение параметра массива;

    4) упорядочение элементов массива.

    5) вывести полученные данные в файл.

    Организовать обработку массива с использованием функций. Каждый пункт это

    отдельная функция, которая получает массив в качестве параметра. В итоге должно получится 5 функций +main().



    2 Анализ задачи

    Функции будут принимать указатель на массив.

    1. Элементы массива – дробные числа, поэтому массив будет состоять из элементов данных типа double.

    2. Чтобы найти вторую треть массива, нужно ввести условие n > 2. Если элементов в массиве будет меньше 3, тогда нельзя будет разделить его на части.

    3. Аналогично второму пункту, только в этот раз нужно, чтобы n была больше или равна 4. n > 2 и n > 3, значит, n > 3.

    4. «По убыванию обратных значений» - это значит, что должны убывать. Если проанализировать, то можно сделать вывод, что, если обратные значения убывают, то просто значения возрастают.


    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 – Таблица переменных для алгоритма и программы

    Смысл переменных

    Обозначение

    Тип переменной

    Примечания

    в алгор.

    в прогр.

    ИСХОДНЫЕ

    n

    n

    int

    Вводятся пользователем

    ПРОМЕЖУТОЧНЫЕ

    mass, sorted_mass

    mass, sorted_mass

    double[]




    РЕЗУЛЬТАТЫ

    min, pr

    min, pr

    double







    #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;
    }

    5 Текст программы на СИ


    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 – Скриншот результатов в файле
    Выводы

    Результаты программы совпадают с ручным расчетом, программа работает верно.


    написать администратору сайта