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

  • Цель работы Цель работы – изучить работу с указателями, ссылками, получить навыки программирования с использованием динамических массивов.Задача 2

  • Список использованных источников

  • Лаба 12 ТГУ ИБ. Занятие 10. Указатели и ссылки. Имя массива как указатель. Динамические массивы Вариант Выполнил студент Тюмень2021


    Скачать 107.28 Kb.
    НазваниеЗанятие 10. Указатели и ссылки. Имя массива как указатель. Динамические массивы Вариант Выполнил студент Тюмень2021
    АнкорЛаба 12 ТГУ ИБ
    Дата23.11.2022
    Размер107.28 Kb.
    Формат файлаdocx
    Имя файлаЛ10 В2.docx
    ТипЗанятие
    #808250

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

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

    «ТЮМЕНСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»

    ИНСТИТУТ МАТЕМАТИКИ И КОМПЬЮТЕРНЫХ НАУК

    Кафедра программного обеспечения

    Лабораторное занятие №10.

    Указатели и ссылки. Имя массива как указатель. Динамические массивы

    Вариант 2.

    Выполнил студент:

    Тюмень-2021

    Цель работы

    Цель работы – изучить работу с указателями, ссылками, получить навыки программирования с использованием динамических массивов.

    Задача 2

    Дан одномерный массив, состоящий из N вещественных элементов.

    1. Найти максимальный элемент среди элементов, индексы которых четные числа.

    2. Вычислить среднеарифметическое отрицательных элементов массива.

    3. Вывести элементы массива с нечетными индексами на экран в обратном порядке.

    Входные данные: размерность массива int n

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

    #include //2

    using namespace std;

    void vivod_mass(int *m, int len){

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

    std::cout << *(m+i) << '\t';

    }std::cout << '\n';

    }

    int find_max_ev(int* m, int len) {

    int max = INT_MIN;

    for (int i = 0; i < len; i += 2) {

    if (max < *(m+i) max = *(m+i);

    }

    return max;

    }

    double sr_otr(int* m, int len) {

    int sum = 0,kolvo=0;

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

    if (*(m+i) < 0) { sum += *(m+i); kolvo++; };

    }

    if (kolvo == 0) return 1;

    return ((double)sum / kolvo);

    }

    void special_vivod(int* m, int len) {

    int i = len-1;

    while (i>=0) {

    if (i % 2 == 1) { std::cout << *(m+i) << '\t'; i--; }

    else i--;

    }std::cout << '\n';

    }

    void zapolnenie(int* m, int len) {

    for (int j = 0; j < len; j++) {

    *(m+j) = rand() % 201 - 100;

    }

    }

    int main()//2

    {

    setlocale(LC_ALL, "Russian");

    srand(static_cast(time(0)));

    int n;

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

    std::cin >> n;

    int* mass = new int[n];

    zapolnenie(mass, n);

    std::cout << "Сформированный массив : \n";

    vivod_mass(mass, n);

    std::cout << "Макс. эл. на чётных индексах: ";

    std::cout << find_max_ev(mass, n); std::cout << endl;

    float sredn = sr_otr(mass, n);

    if (sredn==1){ std::cout << "Отрицательных элементов нет"; }else{ std::cout << "Ср. арифм. среди отрицательных элементов = "<
    std::cout << "\nВывод в обратном порядке эл. с нечётн. индексами" << endl;

    special_vivod(mass, n);

    }



    Задание 22



    Входные данные: X, выбор меню menu

    Выходные данные: результаты работ функций

    #include //22

    using namespace std;

    double f1(double x) {

    if (x>=0)

    {

    return acos(sqrt(x));

    }

    else return 0;

    }

    double f2(double x) {

    if ((1-x) != 0) {

    return log((1+x)/(1-x));

    }

    else return 0;

    }

    double f3(double x) {

    return cos(x*x);

    }

    double f4(double x) {

    return pow(2.718281828459045,- x*x);

    }

    int main()//22

    {

    setlocale(LC_ALL, "Russian");

    srand(static_cast(time(0)));

    int menu = 0; double x; double (*p)(double)=f1;

    while (menu != 5)

    {

    std::cout << "Введите x: ";

    std:cin >> x;

    std::cout << "1 - arccos(x^2)\n2 - ln(x)\n3 - 1/(1+x^2)\n";

    std::cout << "4 - e^(-x^2)\n5 - выход\n\t-> ";

    std::cin >> menu;

    switch (menu) {

    case 1: {

    p = f1; std::cout << '\n';

    break;

    }

    case 2: {

    p = f2; std::cout << '\n';

    break;

    }

    case 3: {

    p = f3; std::cout << '\n';

    break;

    }

    case 4: {

    p = f4; std::cout << '\n';

    break;

    }

    case 5: {

    std::cout << "Завершение работы программы"; return 0;

    }

    default: {std::cout << "Что-то непонятное, повторите"; }

    }

    std::cout << p(x)<<"\n";

    }
    }



    Список использованных источников:

    С++

    1. Указатели
      https://metanit.com/cpp/tutorial/4.1.php

    2. Указатели в С++: адрес и удаление
      https://codelessons.ru/cplusplus/ukazateli-v-c-podrobnoe-rukovodstvo.html

    3. Операторы

    https://ravesli.com/urok-80-ukazateli-vvedenie/


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