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

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

  • Задача 1.01 Составить функцию, которая получив массив целых чисел размером N

  • СТАТИКА main.cpp

  • ДИНАМИКА main.cpp

  • Лабораторная работа №1 « Массивы в языке С , разработка структурированных программ ». Информатика. Лаб. работа № 1. Лабораторная работа 1 Массивы в языке С, разработка структурированных программ


    Скачать 113.82 Kb.
    НазваниеЛабораторная работа 1 Массивы в языке С, разработка структурированных программ
    АнкорЛабораторная работа №1 « Массивы в языке С , разработка структурированных программ
    Дата17.03.2023
    Размер113.82 Kb.
    Формат файлаdocx
    Имя файлаИнформатика. Лаб. работа № 1.docx
    ТипЛабораторная работа
    #996818

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

    « Массивы в языке С++ , разработка структурированных программ »

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

    Номер выполняемой работы: 1.1

    Вариант: 63

    2021 г.

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

    лабораторной работе, и выполнить для нее следующие задания.

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

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

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

    - функцию обработки массива (массивов), анализирующую исходную

    информацию в массиве и на основании этого анализа создающую новый массив.

    При необходимости, алгоритм этой функции нужно разбить на функции, каждая

    из которых будет реализовать отдельные независимые процедуры, из которых

    можно составить алгоритм обработки массивов как одну функцию.

    - разработать функцию main, которая организует работу по вводу информации с

    клавиатуры, вызову функции обработки массива (массивов) и организует вывод

    на экран исходного массива (массивов), нового массива. В функции main

    предусмотреть возможность многократного решения задачи с различными

    исходными данными.

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

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

    максимально возможное количество обрабатываемых элементов в массиве);

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

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

     файлы с функциями ввода и вывода массивов отдельно для

    статического и динамического распределения памяти;

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

    для статического и динамического распределения памяти;

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

    функциями статики, либо с функциями динамики.

    В одном решении (solution) создать два проекта, каждый из которых реализует

    Вашу задачу в одном из двух вариантов распределения памяти под массивы

    (статики и динамики). Откомпилировать и выполнить проекты. Контроль

    правильности работы ваших проектов осуществить, используя исходные данные,

    подготовленные вами для отладки программы. Оба варианта программы на одних

    и тех же отладочных данных должны давать одинаковые результаты.

    Тексты индивидуальных задач, выполняемых в лабораторной работе

    Задача 1.01

    Составить функцию, которая получив массив целых чисел размером N,

    анализирует его и если минимальный элемент находится в первой половине

    массива, то создает новый массив, включив в него сначала все отрицательные

    члены последовательности, а вслед им четные положительные.
    СТАТИКА
    main.cpp
    #include

    using namespace std;

    void vvod(int mas[], int N);

    void vivod(int masX[], int count1);

    int fun_answer(int mas[], int N);

    int fun_analiz(int mas[], int masX[], int N);

    int main()

    {

    int K = 0;

    do {

    cout << " MENU" << endl

    << "1.Start" << endl

    << "2.Close" << endl;

    cin >> K;

    if (K == 2) return 0;

    while (K != 1 && K != 2)

    {

    cout << "Choose first or second position" << endl;

    cin >> K;

    }

    int N, d;

    cout << "Enter N: "; cin >> N;

    int mas[10], masX[10];

    vvod(mas, N);

    cout << "Array mas: " << endl;

    vivod(mas, N);

    d = fun_analiz(mas, masX, N);

    if (d > 0)

    {

    cout << "New array: " << endl;

    vivod(masX, d);

    }

    else cout << "The array is not formed" << endl;

    } while (K == 1);

    return 0;

    }


    vvod+vivod.cpp
    #include

    using namespace std;

    void vvod(int mas[], int N)

    {

    cout << "Enter elements of the array " << endl;

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

    {

    cin >> mas[i];

    }

    }

    void vivod(int masX[], int count1)

    {

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

    {

    cout << "masX[" << i << "] = " << masX[i] << endl;

    }

    }



    analiz.cpp
    int fun_answer(int mas[], int N)

    {

    int x = *mas, count = 0;

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

    {

    if (mas[i] <= x)

    {

    x = mas[i];

    count = i;

    }

    }

    if (count <= (N / 2)) return 1;

    else return 0;

    }

    int fun_analiz(int mas[], int masX[], int N)

    {

    int count1 = 0;

    if (fun_answer(mas, N) == 1)

    {

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

    {

    if (mas[i] < 0)

    {

    masX[count1] = mas[i];

    count1 += 1;

    }

    }

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

    {

    if (mas[i] > 0 && mas[i] % 2 == 0)

    {

    masX[count1] = mas[i];

    count1 += 1;

    }

    }

    return count1;

    }

    else

    {

    return 0;

    }

    }


    ДИНАМИКА

    main.cpp
    #include

    using namespace std;

    int* vvod(int N);

    void vivod(int* mas, int count1);

    int fun_answer(int mas[], int N);

    int* fun_analiz(int mas[], int N, int& count1);

    int main()

    {

    int K;

    do {

    cout << " MENU" << endl

    << "1.Start" << endl

    << "2.Close" << endl;

    cin >> K;

    if (K == 2) return 0;

    while (K != 1 && K != 2)

    {

    cout << "Choose first or second position" << endl;

    cin >> K;

    }

    int N = 0, count1 = 0;

    cout << "Enter N: "; cin >> N;

    int *mas, *masX;

    mas = vvod(N);

    cout << "Array mas: " << endl;

    vivod(mas, N);

    masX = fun_analiz(mas, N, count1);

    if (masX != 0)

    {

    vivod(masX, count1);

    delete[] masX;

    }

    else cout << "The array wasn't formed. " << endl;

    delete[] mas;

    } while (K == 1);

    return 0;

    }



    vvod+vivod.cpp
    #include

    using namespace std;

    int* vvod(int N)

    {

    int* mas = new int[N];

    cout << "Enter elements of the array " << endl;

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

    {

    cin >> *(mas+i);

    }

    return mas;

    }

    void vivod(int* masX, int count1)

    {

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

    {

    cout << "masX[" << i << "] = " << masX[i] << endl;

    }

    }





    analiz.cpp

    int fun_answer(int mas[], int N)

    {

    int x = *mas, count = 0;

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

    {

    if (mas[i] <= x)

    {

    x = mas[i];

    count = i;

    }

    }

    if (count <= (N / 2)) return 1;

    else return 0;

    }

    int* fun_analiz(int mas[], int N, int& count1)

    {

    count1 = 0;

    if (fun_answer(mas, N) == 1)

    {

    int* masX = new int[N];

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

    {

    if (mas[i] < 0)

    {

    masX[count1] = mas[i];

    count1 += 1;

    }

    }

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

    {

    if (mas[i] > 0 && mas[i] % 2 == 0)

    {

    masX[count1] = mas[i];

    count1 += 1;

    }

    }

    if (count1 == 0)

    {

    delete[] masX;

    return 0;

    }

    return masX;

    }

    else

    {

    return 0;

    }

    }



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