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

  • Вариант

  • Лабораторная работа №1 Массивы в С , разработка структурированных программ преподователь Скрыпникова группа БИБ2102. Лабораторная работа 1 2 сем массивы в С++. Лабораторная работа 1 массивы в языке с, разработка структурированных программ


    Скачать 164.71 Kb.
    НазваниеЛабораторная работа 1 массивы в языке с, разработка структурированных программ
    АнкорЛабораторная работа №1 Массивы в С , разработка структурированных программ преподователь Скрыпникова группа БИБ2102
    Дата30.09.2022
    Размер164.71 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 1 2 сем массивы в С++.docx
    ТипЛабораторная работа
    #707161

    Лабораторная работа №1

    МАССИВЫ В ЯЗЫКЕ С++, РАЗРАБОТКА СТРУКТУРИРОВАННЫХ ПРОГРАММ

    Цель работы: Составление алгоритмов и написание многомодульных программ с регулярными циклами

    Вариант 48, задание 1.23

    Филиппова Ульяна

    БИБ2102

    Общие указания к заданию лабораторной работы

    По номеру Вашего варианта выбрать задачу, решаемую в этой лабораторной работе, и выполнить для нее следующие задания.

    Для решения задачи разработать следующие функции:

    - функцию ввода n элементов массива;

    - функцию вывода n элементов массива;

    - функцию обработки массива (массивов), анализирующую исходную информацию в массиве и на основании этого анализа создающую новый массив. При необходимости, алгоритм этой функции нужно разбить на функции, каждая из которых будет реализовать отдельные независимые процедуры, из которых можно составить алгоритм обработки массивов как одну функцию.

    - разработать функцию main, которая организует работу по вводу информации с клавиатуры, вызову функции обработки массива (массивов) и организует вывод на экран исходного массива (массивов), нового массива. В функции main предусмотреть возможность многократного решения задачи с различными исходными данными.

    Программу разработать в двух вариантах:

    - используя статическое распределение памяти для массивов (задать некоторое максимально возможное количество обрабатываемых элементов в массиве);

    - используя динамическое распределение памяти для массивов.

    Тексты функций сгруппировать в файлы:

    • файлы с функциями ввода и вывода массивов отдельно для статического и динамического распределения памяти;

    • файлы с функцией (функциями) обработки массива опять же отдельно для статического и динамического распределения памяти;

    • файлы с функциями main, каждая из которых работает либо с функциями статики, либо с функциями динамики.

    В одном решении (solution) создать два проекта, каждый из которых реализует Вашу задачу в одном из двух вариантов распределения памяти под массивы (статики и динамики). Откомпилировать и выполнить проекты. Контроль правильности работы ваших проектов осуществить, используя исходные данные, подготовленные вами для отладки программы. Оба варианта программы на одних и тех же отладочных данных должны давать одинаковые результаты.

    Задание 1.23

    В одномерном массиве, состоящем из вещественных элементов, вычислить сумму элементов массива, расположенных между первым и последним положительными элементами. Если эта сумма положительна, то сформировать новый массив из тех элементов, которые меньше найденной суммы.

    Вариант 1:

    main.cpp

    #include
    using namespace std;
    void input(float [], int);

    void output(float[], int);

    float processing(float [], int, float [], int&);

    int first_positive(float[], int);

    int last_positive(float[], int);
    int main() {

    while (true) {

    setlocale(LC_ALL, "ru");

    int n, index = 0, end;

    float sum = 0;

    float array[10], final_array[10];

    cout << "Введите размер массива: ";

    cin >> n;

    input(array, n);

    sum = processing(array, n, final_array, index);

    if (sum > 0) {

    output(final_array, index);

    cout << "Сумма равна: " << sum;

    }

    else cout << "Сумма равна: " << sum << "\n";

    cout << "Еще раз ? (0 или 1): ";

    cin >> end;

    if (end == 0) break;

    }

    return 0;

    }

    input_output.cpp

    #include
    void input(float array[], int n) {

    for (int i = 0; i < n; i++) {

    std::cout << i << "-й элемент: ";

    std::cin >> array[i];

    }

    }

    void output(float array[], int index) {

    std::cout << "\n" << "Новый массив: ";

    for (int i = 0; i < index; i++) {

    std::cout << array[i] << " ";

    }

    std::cout << "\n";

    }

    processing.cpp

    int first_positive(float array[], int n) {

    for (int i = 0; i < n; i++)

    if (array[i] > 0) return i;

    }
    int last_positive(float array[], int n) {

    for (int i = n - 1; i > 0; i--) {

    if (array[i] > 0) return i;

    }

    }

    float processing(float array[], int n, float final_array[], int& index) {

    int first = first_positive(array, n);

    int last = last_positive(array, n);

    float sum = 0;

    for (int i = first + 1; i < last; i++) {

    sum += array[i];

    }

    for (int i = 0; i < n; i++) {

    if (array[i] < sum) {

    final_array[index] = array[i];

    index++;

    }

    }

    return sum;

    }

    Вариант 2:
    main.cpp

    #include
    using namespace std;
    float* input(int);

    void output(float*, int);

    float processing(float*, int, float*, int&);
    int main()

    {

    while (true) {

    setlocale(LC_ALL, "ru");

    int n, end, size = 0;

    float* array;

    float sum;

    cout << "Введите размер массива: ";

    cin >> n;

    array = input(n);

    float* other_array = new float[n];

    sum = processing(array, n, other_array, size);

    if (sum > 0) {

    output(other_array, size);

    cout << "Сумма равна: " << sum << "\n";

    }

    else cout << "Сумма равна: " << sum << "\n";

    cout << "Еще раз? (1 или 0): ";

    cin >> end;

    if (end == 0) break;

    }

    }

    input_output.cpp

    #include
    float* input(int n) {

    float* array = new float[n];

    for (int i = 0; i < n; i++) {

    std::cout << i << "-й элемент массива: ";

    std::cin >> *(array + i);

    }

    return array;

    }
    void output(float* array, int size) {

    std::cout << "Новый массив: ";

    for (int i = 0; i < size; i++) {

    std::cout << *(array + i) << " ";

    }

    std::cout << "\n";

    }

    processing.cpp

    int first_positive(float* array, int n) {

    for (int i = 0; i < n; i++) {

    if (array[i] > 0) return i;

    }

    }
    int last_positive(float* array, int n) {

    for (int i = n - 1; i > 0; i--) {

    if (array[i] > 0) return i;

    }

    }

    float processing(float* array, int n, float* other_array, int& size) {

    float sum = 0;

    int first = first_positive(array, n);

    int last = last_positive(array, n);

    for (int i = first + 1; i < last; i++) {

    sum += *(array + i);

    }

    for (int i = 0; i < n; i++) {

    if (*(array + i) < sum) {

    *(other_array + size) = *(array + i);

    size++;

    }

    }

    delete[] array;

    return sum;

    }

    Блок-схемы к 1 варианту:







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