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

  • Кафедра ФРТ ОТЧЕТ по лабораторной работе № 9 по дисциплине «Информатика» Тема: Контейнеры vector

  • Цель работы Знакомство работы с контейнерами: vector , map , set .Теоретические сведения

  • Коды модулей С++ Упражнение 1.

  • Упражнение 2.

  • Упражнение 3.

  • Упражнение 4.

  • Скриншоты работы программ

  • Выводы по проделанной работе

  • Лабораторка инфа. 9 лаба. Контейнеры vector, map и set. Итераторы. Алгоритмы


    Скачать 72.28 Kb.
    НазваниеКонтейнеры vector, map и set. Итераторы. Алгоритмы
    АнкорЛабораторка инфа
    Дата02.01.2023
    Размер72.28 Kb.
    Формат файлаdocx
    Имя файла9 лаба.docx
    ТипОтчет
    #870784

    МИНОБРНАУКИ РОССИИ

    САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ

    ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

    «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)

    Кафедра ФРТ

    ОТЧЕТ

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

    по дисциплине «Информатика»

    Тема:

    Контейнеры vector, map и set. Итераторы. Алгоритмы.

    Студент гр. 1106: Иванчин А.В

    Преподаватель: Чиркунова А. А.

    Санкт-Петербург
    2022

    Цель работы

    Знакомство работы с контейнерами: vector, map, set.

    Теоретические сведения

    • Контейнеры:

      • vector – это динамический массив, элементы которого размещаются последовательно в одной области памяти

        • Инициализация:
          vector<тип данных> название переменной

        • Доступ к элементам:
          mass[index] – доступ по индексу, без проверки диапазона
          mass.at(index) – доступ по индексу, с проверкой диапазона
          mass.front() – первый элемент
          mass.back() – последний элемент

        • Итераторы
          mass.begin() – возвращает итератор на первый элемент
          mass.end() – возвращает итератор на последний элемент
          mass.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов)
          mass.rend() – возвращает итератор на первый элемент (для обратных алгоритмов)

        • Размеры
          mass.empty() – возвращает true, если вектор пуст
          mass.size() – возвращает количество элементов
          mass.max_size() – возвращает максимально возможное количество элементов
          mass.reverse(n) – устанавливает минимальное количество элементов
          mass.capacity() – возвращает количество элементов, которое может вмещать до выделения большего количества памяти

        • Модификаторы
          mass.clear() – удаление всех элементов
          mass.insert() – вставка элемента
          mass.erase() – удаление конкретного элемента
          mass.push_back() – добавление элемента в конец вектора
          mass.pop_back() – удаление последнего элемента
          mass.resize() – изменяет размер вектора
          mass.swap() – обмен содержимого двух векторов
          mass.count() – возвращает количество вхождений конкретного значения

        • Операторы
          [] - индексация
          =
          - присвоение
          ==,!=
          ,<,>,<=,>= - сравнения

      • map – это динамический ассоциативный массив

        • Инициализация:
          map<тип данных1, тип данных> название переменной

        • Итераторы
          s.begin() – возвращает итератор на первый элемент
          s.end() – возвращает итератор на последний элемент
          s.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов)
          s.rend() – возвращает итератор на первый элемент (для обратных алгоритмов)

        • Размеры
          s.empty() – возвращает true, если map пуст
          s.size() – возвращает количество элементов
          s.max_size() – возвращает максимально возможное количество элементов

        • Модификаторы
          s.clear() – удаление всех элементов
          s.insert() – вставка элемента
          s.erase() – удаление конкретного элемента
          s.swap() – обмен содержимого двух контейнеров
          s.count() – возвращает количество вхождений конкретного значения
          s.find() – нахождение элемента в контейнере
          s.lower_bound(a) – первый элемент, меньше
          a

    s.upper_bound(a) – первый элемент, больше a
    s.equal_range(a) – возвращает набор элементов для ключа a

    s.key_comp() – сортировка по ключу

    s. value_comp() – сортировка по значению

      • set – множество, динамический отсортированный массив

        • Инициализация:
          set<тип данных> название переменной

        • Итераторы
          mass.begin() – возвращает итератор на первый элемент
          mass.end() – возвращает итератор на последний элемент
          mass.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов)
          mass.rend() – возвращает итератор на первый элемент (для обратных алгоритмов)

        • Размеры
          mass.empty() – возвращает true, если set пуст
          mass.size() – возвращает количество элементов
          mass.max_size() – возвращает максимально возможное количество элементов

        • Модификаторы
          mass.clear() – удаление всех элементов
          mass.insert() – вставка элемента
          mass.emplace() – вставка элемента
          mass.erase() – удаление конкретного элемента
          mass.swap() – обмен содержимого двух векторов
          mass.count() – возвращает количество вхождений конкретного значения
          s.find() – нахождение элемента в контейнере
          s.lower_bound(a) – первый элемент, меньше
          a

    s.upper_bound(a) – первый элемент, больше a
    s.equal_range(a) – возвращает набор элементов для ключа a

        • Операторы
          =
          - присвоение
          ==,!=
          ,<,>,<=,>= - сравнения

    • Алгоритмы – библиотека <algorithm> с набором различных стандартных алгоритмов (сортировки, поиски и т.д.)

    • Итератор – тип данных iterator, обеспечивающий доступ к элементам в контейнерах.

    Упражнение__2.'>Упражнение_1.'>Коды модулей С++

    Упражнение 1.

    #include

    #include
    using namespace std;
    int main()

    {

    setlocale(LC_ALL, "ru");

    vector vector1;

    vector vector2;
    int P, n, sr = 0, sred, K = 0;
    cout << "Введите количество дней: ";

    cin >> P;
    for (int i = 0; i < P; i++)

    {

    cin >> n;

    vector1.push_back(n);

    }
    for (int i = 0; i < P; i++)

    {

    sr += vector1[i];

    }

    sred = sr / P;
    for (int i = 0; i < P; i++)

    {
    if (vector1[i] > sred)

    {

    K++;

    vector2.push_back(i);

    };

    }
    for (int i = 0; i < K; i++) {

    cout << K << endl;

    cout << vector2[i] << endl;

    }
    return 0;
    }

    Упражнение 2.

    #include

    #include

    #include

    using namespace std;
    int main()

    {

    vector temp;

    double N, element;

    double sum = 0;

    cin >> N;

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

    {
    cin >> element;

    temp.push_back(element);

    }

    auto min_max = min_element(temp.begin(), temp.end());

    cout << *min_max << ' ';

    min_max = max_element(temp.begin(), temp.end());

    cout << *min_max << endl;
    sort(temp.rbegin(), temp.rend());

    for (auto q : temp)

    {

    cout << q << ' ';

    sum += q;

    }

    cout << endl << count(temp.begin(), temp.end(), (sum / temp.size())) << endl;
    for (auto q : temp)

    {

    if (q == (sum / temp.size()))

    cout << 0 << ' ';

    else cout << q << ' ';

    }


    Упражнение 3.

    #include

    #include

    #include

    #include

    #include

    using namespace std;
    void NEW_TEMP(map>& a)

    {

    string s;

    cin >> s;

    int K, L;

    cin >> K;

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

    {

    cin >> L;

    a[s].push_back(L);

    }

    }
    void DEL_TEMP(map> &a)

    {

    string s;

    cin >> s;

    int K;

    cin >> K;

    int counter = 0;

    int index = 0;

    if (a.find(s) == a.end())

    {

    cout << "No day of week" << endl;

    }

    else

    {

    for (int i = 0; i < a[s].size(); i++)

    {

    if (a[s].at(i) == K) {

    counter++; index = i;

    }

    }

    if (counter > 0)

    {

    cout << "Delete " << s << ' ' << a[s].at(index) << endl;

    a[s].erase(a[s].begin() + index);

    }

    else

    cout << "No temp" << endl;

    }

    }

    void DAY_OF_WEEK(map> &a)

    {

    string s;

    cin >> s;

    if (a.find(s) == a.end())

    {

    cout << "No temp on this day of the week" << endl;

    }

    else {

    for (auto q : a[s])

    cout << q << ' ';

    }

    }

    void WEEK(map> &a)

    {

    a.key_comp();

    if (a.size() == 0)

    cout << "No temp of the week" << endl;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    cout << (*it).first << ": ";

    for (int i = 0; i < a[(*it).first].size(); i++)

    cout << (*it).second.at(i) << ' ';

    cout << endl;

    }

    }

    void MEAN(map> &a)

    {

    a.key_comp();

    double fullsum = 0;

    int fullsumC = 0;

    double sum = 0;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    for (int i = 0; i < a[(*it).first].size(); i++)

    fullsum += (*it).second.at(i);

    fullsumC += (*it).second.size();

    }

    fullsum /= fullsumC;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    for (int i = 0; i < a[(*it).first].size(); i++)

    sum += (*it).second.at(i);

    sum /= (*it).second.size();

    if (fullsum < sum)

    cout << (*it).first << ' ';

    sum = 0;

    }

    }
    void DEL_DAY(map> &a)

    {

    string s;

    cin >> s;

    if (a.find(s) != a.end())

    {

    a.erase(s);

    cout << "Delete " << s << endl;

    }

    else cout << "No day of week" << endl;

    }

    int main()

    {

    int N;

    string command;

    map> temp;

    cin >> N;

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

    {

    cin >> command;

    if (command == "NEW_TEMP")

    NEW_TEMP(temp);

    else if (command == "DEL_TEMP")

    DEL_TEMP(temp);

    else if (command == "DAY_OF_WEEK")

    DAY_OF_WEEK(temp);

    else if (command == "WEEK")

    WEEK(temp);

    else if (command == "MEAN")

    MEAN(temp);

    else if (command == "DEL_DAY")

    DEL_DAY(temp);

    else

    cout << "error " << endl;

    }

    return 0;

    }



    Упражнение 4.
    #include

    #include

    #include

    #include

    #include

    using namespace std;
    void NEW_TEMP(map>& a)

    {

    string s;

    cin >> s;

    int K, L;

    cin >> K;

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

    {

    cin >> L;

    a[s].insert(L);

    }

    }
    void DEL_TEMP(map>& a)

    {

    string s;

    cin >> s;

    int K;

    cin >> K;

    int c = 0;

    int i = 0;

    if (a.find(s) == a.end())

    {

    cout << "no" << endl;

    }

    else

    {

    for (auto it = a[s].begin(); it != a[s].end(); it++)

    {

    if (*it == K) {

    c++; i = *it;

    }

    }

    if (c > 0)

    {

    cout << "Delete " << s << ' ' << i << endl;

    a[s].erase(a[s].find(i));

    }

    else

    cout << "No temper" << endl;

    }
    }

    void DAY_OF_WEEK(map>& a)

    {

    string s;

    cin >> s;

    if (a.find(s) == a.end())

    {

    cout << "No temp on this day of the week" << endl;

    }

    else {

    for (auto q : a[s])

    cout << q << ' ';

    }

    }

    void WEEK(map>& a)

    {

    a.key_comp();

    if (a.size() == 0)

    cout << "No temp of the week" << endl;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    cout << (*it).first << ": ";

    for (auto i = a[(*it).first].begin(); i != a[(*it).first].end(); i++)

    cout << *i << ' ';

    cout << endl;

    }

    }

    void MEAN(map>& a)

    {

    a.key_comp();

    double fullsum = 0;

    int fullsumC = 0;

    double sum = 0;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    for (auto i = a[(*it).first].begin(); i != a[(*it).first].end(); i++)

    fullsum += *i;

    fullsumC += (*it).second.size();

    }

    fullsum /= fullsumC;

    for (auto it = a.begin(); it != a.end(); ++it)

    {

    for (auto i = a[(*it).first].begin(); i != a[(*it).first].end(); i++)

    sum += *i;

    sum /= (*it).second.size();

    if (fullsum < sum)

    cout << (*it).first << ' ';

    sum = 0;

    }

    }
    void DEL_DAY(map>& a)

    {

    string s;

    cin >> s;

    if (a.find(s) != a.end())

    {

    a.erase(s);

    cout << "Delete " << s << endl;

    }

    else cout << "No day of week" << endl;

    }

    int main()

    {

    int N;

    string command;

    map> temp;

    cin >> N;

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

    {

    cin >> command;

    if (command == "NEW_TEMP")

    NEW_TEMP(temp);

    else if (command == "DEL_TEMP")

    DEL_TEMP(temp);

    else if (command == "DAY_OF_WEEK")

    DAY_OF_WEEK(temp);

    else if (command == "WEEK")

    WEEK(temp);

    else if (command == "MEAN")

    MEAN(temp);

    else if (command == "DEL_DAY")

    DEL_DAY(temp);

    else

    cout << "ERROR! " << endl;

    }

    return 0;

    }



    Скриншоты работы программ



    Упражнение 1, приведены данные из примера



    Упражнение 2, данные из примера к упражнению 1



    Упражнение 3, данные из примера



    Упражнение 4, данные из примера к упражнению 3

    Выводы по проделанной работе

    Были проведено знакомство с контейнерами: vector, map, set.


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