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

  • Цель работы Приобретение практических навыков в составлении программ со структурами. Теоретические сведения 1 ПОНЯТИЕ СТРУКТУРЫ

  • 2 ИНИЦИАЛИЗАЦИЯ СТРУКТУРЫ

  • 3 ДОСТУП К ЧЛЕНАМ СТРУКТУР

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

  • Скриншоты работы программ: Упражнение 1 Упражнение 3 Выводы по проделанной работе

  • Лабораторная работа по информатике. 10 лаба. Структуры в С


    Скачать 474.23 Kb.
    НазваниеСтруктуры в С
    АнкорЛабораторная работа по информатике
    Дата09.03.2023
    Размер474.23 Kb.
    Формат файлаpdf
    Имя файла10 лаба.pdf
    ТипОтчет
    #976589

    МИНОБРНАУКИ РОССИИ
    САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ
    ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
    «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА)
    Кафедра ФРТ
    ОТЧЕТ
    по лабораторной работе № 10
    по дисциплине «Информатика»
    Тема:
    Структуры в С++
    Студент гр. 1106:
    Иванчин А.В
    Преподаватель:
    Чиркунова А. А.
    Санкт-Петербург
    2022

    Цель работы
    Приобретение практических навыков в составлении программ со структурами.
    Теоретические сведения
    1 ПОНЯТИЕ СТРУКТУРЫ
    Структура в языке C++ представляет собой пользовательский тип данных. Нередко
    структуры применительно к С++ также называют классами.
    Для определения структуры применяется ключевое слово
    struct, а сам формат
    определения выглядит следующим образом:
    struct имя_структуры
    {
    компоненты_структуры
    };
    Имя_структуры представляет произвольный идентификатор, к которому
    применяются те же правила, что и при наименовании переменных.
    После имени структуры в фигурных скобках помещаются компоненты_структуры,
    которые представляют набор описаний объектов и функций, которые составляют
    структуру.
    Все структуры должны быть описаны до использования. Все идентификаторы полей в
    структуре должны быть различными.
    2 ИНИЦИАЛИЗАЦИЯ СТРУКТУРЫ
    Структура может быть инициализирована путем присвоения ее переменным значения
    с помощью синтаксиса инициализации.
    Если в списке инициализаторов не будет одного или нескольких элементов, то им
    присвоятся значения по умолчанию (как правило 0). Для того чтобы по умолчанию
    были заданы конкретные значения, их нужно прописать:
    3 ДОСТУП К ЧЛЕНАМ СТРУКТУР
    Для того чтобы получить доступ к отдельным элементам-полям, используется
    оператор выбора члена (точка).
    4 ИСПОЛЬЗОВАНИЕ СТРУКТУР В ФУНКЦИЯХ
    Структуры можно передавать в функции, а также функции могут возвращать
    структуры.
    5 ВЛОЖЕННЫЕ СТРУКТУРЫ
    Поле некоторого пользовательского типа может иметь тип, который также
    является пользовательским. Другими словами, можно создавать вложенные
    структуры.

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

    using namespace std; struct droby
    { double ch; double z;
    }; double multiply(
    double per
    , double vtor
    )
    { double um; cout
    <<
    "результат умножения: "
    ; um = per
    * vtor
    ; cout
    <<
    um
    <<
    endl; return
    (
    per
    , vtor
    );
    } double division(
    double per
    , double vtor
    )
    { double del; cout
    <<
    "результат деление: "
    ; del = per
    / vtor
    ; cout
    <<
    del
    <<
    endl; return
    (
    per
    , vtor
    );
    } double addition(
    double per
    , double vtor
    )
    { double slo; cout
    <<
    "результат сложения: "
    ; slo = per
    + vtor
    ; cout
    <<
    slo
    <<
    endl; return
    (
    per
    ,
    vtor
    );
    } double subtraction(
    double per
    , double vtor
    )
    { double raz; cout
    <<
    "результат вычитания: "
    ; raz = per
    - vtor
    ; cout
    <<
    raz
    <<
    endl; return
    (
    per
    , vtor
    );
    } void main()
    { droby pervay; droby vtoray; setlocale(
    LC_ALL
    ,
    "ru"
    ); cout
    <<
    "\tВведите числитель первой дроби:"
    <<
    endl; cin
    >>
    pervay.ch; cout
    <<
    "\tВведите знаменатель первой дроби:"
    <<
    endl; cin
    >>
    pervay.z; if
    (pervay.z == 0)
    { cout
    <<
    "Знаменатель равен 0"
    <<
    endl;
    } cout
    <<
    "\tВведите числитель второй дроби:"
    <<
    endl; cin
    >>
    vtoray.ch; cout
    <<
    "\tВведите знаменатель второй дроби:"
    <<
    endl; cin
    >>
    vtoray.z; if
    (vtoray.z == 0)
    { cout
    <<
    "Знаменатель равен 0"
    <<
    endl;
    } double per, vtor; per = pervay.ch / pervay.z;
    // первая дробь vtor = vtoray.ch / vtoray.z;
    // вторая дробь multiply(per, vtor); division(per, vtor); addition(per, vtor); subtraction(per, vtor);
    }
    Упражнение 2.
    #include

    #include

    #include

    using namespace std; struct student
    { string name; int group; double ses[4];
    }; struct dan
    { struct student stud1[5]; dan bd; int const
    N = 5; int
    MEAN( vector
    <
    double
    >& mean_st
    )
    // Функция, которая вычисляет средний балл
    { double p=0, mean, mean_all=0; for
    (
    int i = 0; i < N; i++)
    { for
    (
    int l = 0; l < 4; l++)
    { p = p + bd.stud1[i].ses[l];
    }
    mean = p / 4; mean_st
    .push_back(mean); mean_all = mean_st
    [
    i
    ]
    + mean_all; cout
    <<
    "Среднее оценка студента
    N "
    <<
    i+1
    <<
    endl; cout
    <<
    mean_st
    [
    i
    ]<<
    endl; p = p * 0;
    } mean_all = mean_all / N; cout
    <<
    "Средний балл по всем студентам"
    <<
    endl; cout
    <<
    mean_all
    <<
    endl; return
    (0);
    } int
    PrintVedomost()
    //Функция, которая выводит студентов
    { for
    (
    int i = 0; i < N; i++)
    { cout
    <<
    bd.stud1[i].name; cout
    <<
    " "
    ; cout
    <<
    bd.stud1[i].group; cout
    <<
    " "
    ; for
    (
    int j = 0; j < 4; j++)
    { cout
    <<
    bd.stud1[i].ses[j]; cout
    <<
    " "
    ;
    } cout
    <<
    endl;
    } return
    (0);
    } int
    PrintVedomost4(
    vector
    <
    double
    >& mean_st
    )
    //
    Функция, которая ищет студентов с баллом больше
    4.00
    { cout
    <<
    "Студенты у которых балл выше
    4.00:"
    <<
    endl; for
    (
    int i = 0; i < N; i++)
    { if
    (
    mean_st
    [
    i
    ]
    > 4.0)
    { cout
    <<
    bd.stud1[i].name; cout
    <<
    bd.stud1[i].group
    <<
    endl;
    }
    } return
    (0);
    } int main()
    { system(
    "color F0"
    ); setlocale(
    LC_ALL
    ,
    "ru"
    ); vector
    <
    double
    > mean_st; cout
    <<
    "Введите данные для студентов "
    <<
    endl; for
    (
    int i = 0; i < N; i++)
    { cout
    <<
    "Введите имя студента "
    <<
    i+1
    <<
    endl; cin
    >>
    bd.stud1[i].name; cout
    <<
    "Введите его номер группы "
    <<
    endl; cin
    >>
    bd.stud1[i].group; cout
    <<
    "Введите его оценки "
    <<
    endl; for
    (
    int j = 0; j < 4; j++)
    { cin
    >>
    bd.stud1[i].ses[j]; cout
    <<
    " "
    ;
    } cout
    <<
    endl;
    } cout
    <<
    "\t\t\t\t"
    <<
    bd.stud1[0].ses[0]
    <<
    endl; cout
    <<
    "\t\t\t\t\n\n\n\n"
    ;
    PrintVedomost(); cout
    <<
    "\t\t\t\t\n\n\n\n"
    ;
    MEAN(mean_st);
    PrintVedomost4(mean_st); system(
    "pause"
    );
    }
    Упражнение 3.
    #include

    #include

    #include

    using namespace std; struct room
    { int nomer, S, N;
    // S площадь квартиры, N - число комнат
    }; struct infa
    { string family; int number_floor; struct room heh;
    }; struct infa1
    { struct infa pap[5];
    }; infa1
    bd; int const
    L = 5; int main()

    { system(
    "color F0"
    ); setlocale(
    LC_ALL
    ,
    "ru"
    ); vector
    <
    int
    >mean_st; int mean; for
    (
    int i = 0; i < L; i++)
    { cout
    <<
    "Дайте информацию о квартире "
    <<
    i + 1
    <<
    ":"
    <<
    endl; cout
    <<
    "Введите фамилию владельца: "
    <<
    endl; cin
    >>
    bd.pap[i].family; cout
    <<
    "Номер квартиры: "
    <<
    endl; cin
    >>
    bd.pap[i].heh.nomer; cout
    <<
    "Площадь: "
    <<
    endl; cin
    >>
    bd.pap[i].heh.S; mean = bd.pap[i].heh.S; mean_st.push_back(mean); cout
    <<
    "Число комнат: "
    <<
    endl; cin
    >>
    bd.pap[i].heh.N; cout
    <<
    "Этаж: "
    <<
    endl; cin
    >>
    bd.pap[i].number_floor;
    } int max = mean_st.at(0); int min = mean_st.at(0); for
    (
    int i = 1; i < L; i++)
    { if
    (max < mean_st.at(i))
    { max = mean_st.at(i);
    }
    } for
    (
    int i = 1; i < L; i++)
    { if
    (min > mean_st.at(i))
    { min = mean_st.at(i);
    }
    } for
    (
    int j =0; j < L; j++)
    { if
    ( bd.pap[j].heh.S=max)
    { cout
    <<
    "Данные о квартире с самой большой площадью"
    <<
    endl; cout
    <<
    "Фамилия владельца: "
    <<
    bd.pap[j].family
    <<
    endl; cout
    <<
    "Номер квартиры:
    "
    <<
    bd.pap[j].heh.nomer
    <<
    endl; cout
    <<
    "Площадь: "
    <<
    bd.pap[j].heh.S
    <<
    endl; cout
    <<
    "Число комнат: "
    <<
    bd.pap[j].heh.N
    <<
    endl; cout
    <<
    "Этаж: "
    <<
    bd.pap[j].number_floor
    <<
    endl;
    }
    } for
    (
    int i = 0; i < L; i++)
    { if
    (bd.pap[i].heh.S=min)
    { cout
    <<
    "Данные о квартире с самой маленькой площадью"
    <<
    endl; cout
    <<
    "Фамилия владельца: "
    <<
    bd.pap[i].family
    <<
    endl; cout
    <<
    "Номер квартиры:
    "
    <<
    bd.pap[i].heh.nomer
    <<
    endl; cout
    <<
    "Площадь: "
    <<
    bd.pap[i].heh.S
    <<
    endl; cout
    <<
    "Число комнат: "
    <<
    bd.pap[i].heh.N
    <<
    endl; cout
    <<
    "Этаж: "
    <<
    bd.pap[i].number_floor
    <<
    endl;
    }
    }
    }

    Скриншоты работы программ:
    Упражнение 1


    Упражнение 3

    Выводы по проделанной работе
    Приобретены практические навыки в составлении программ со структурами.


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