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

  • Кафедра РЭС ОТЧЕТ По лабораторной работе №5 По дисциплине «Информатика» Тема: 8. СТРУКТУРЫ С++ И КЛАССЫ

  • СПЕЦИФИКАЦИЯ ЗАДАНИЯ

  • Описание алгоритма

  • БЛОК СХЕМЫ АЛГОРИТМОВ

  • ВЫБОР И ОБОСНОВАНИЕ ТИПОВ ПЕРЕМЕННЫХ

  • ВВОДИМЫЕ И ВЫВОДИМЫЕ ПАРАМЕТРЫ И ИХ ТИПЫ

  • СТРУКТУРА ПРОЕКТА, ПЕРЕЧЕНЬ НУЖНЫХ ФАЙЛОВ

  • Контрольный пример Рисунки 3(a, b, c, d). Примеры ввода данныхРисунок 4. Примеры вывода данныхРЕЗУЛЬТАТЫ ЛАБОРАТОРНОЙ РАБОТЫ

  • 8. структуры с и классы студент гр. 2183 Алексеев А. С


    Скачать 96.62 Kb.
    Название8. структуры с и классы студент гр. 2183 Алексеев А. С
    Дата11.12.2022
    Размер96.62 Kb.
    Формат файлаdocx
    Имя файлаlab5.docx
    ТипОтчет
    #839596

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

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

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

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

    Кафедра РЭС

    ОТЧЕТ

    По лабораторной работе №5

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

    Тема:

    8. СТРУКТУРЫ С++ И КЛАССЫ

    Студент гр. 2183 _______________ Алексеев А. С.

    Преподаватель _______________ Ситников И. Ю.

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

    2022

    Содержание

    Спецификация задания…………………………………………………………...3

    Описание алгоритма……………………………………………………………....4

    Блок Схема ………………………………………………………...……………5-6

    Выбор и обоснование переменных………………………………………………7

    Вводимые и выводимые параметры и их типы……………………………….7

    Структура проекта, перечень нужных файлов………………………………….7

    Синтаксический разбор текста………………………………………………..8-10

    Контрольный пример…………………………………….…………………..10-11

    Результаты лабораторной работы………………………………………………11

    СПЕЦИФИКАЦИЯ ЗАДАНИЯ

    1. С использованием двух классов создать консольное приложение для записи телефонной книжки.

    2. Ввод записей осуществлять, пока не будет введен телефонный номер

    «0».

    3. Выводить записи телефонной книжки в таблицу в алфавитном порядке:

    − порядковый номер;

    − ник;

    − телефон.

    4. Таблицу выводить построчно.

    5. Использовать библиотеку и общее с лабораторными № 3–4 решение.

    Описание алгоритма

    1. Зацикливаем главную функцию main что б она срабатывала пока пользователь не введет 0 вместо номера, когда пользователь вводит номер он записывает в массив [i][], затем проходит проверку посимвольно на наличие иных символов(разрешены только цифры) .

    2. После запрашивается ник который так же записывается в своей массив.

    3. Инициализируем два класса “Родитель” и второй “потомок”.

    2.1) Родитель называется «variables», инициализирован как «var» и содержит в себе переменные

    2.2) Потомок называется «funks» инициализирован как «fun» и содержит в себе необходимые функции и использует переменные от родителя.

    1. Если в номер введен 0, то вызывается функция из класса которая выводит все номера в алфавитном порядке по нику в формате порядковый номер: ник: номер, номера выводятся с выравниванием.

    2. После вывода, программа заканчивается с кодом 0.


    БЛОК СХЕМЫ АЛГОРИТМОВ

    MAIN:



    Рисунок 1. Схема для main

    COUTION:



    Рисунок 2. Схема для coution
    ВЫБОР И ОБОСНОВАНИЕ ТИПОВ ПЕРЕМЕННЫХ

    1. Хранение в двумерных массивах типа char [100] []- хранит как цифры так и символы, еще и в строчном виде, из аналогов только std::string.

    Так как в данной лабораторной работе не предусмотрено хранение в tht. Было решено оставить максимальное кол-во 100, так как динамичные массивы не были изучены.

    1. Переменные «счётчики» типа int

    2. Два класса: «variables содержит в себе переменные, и класс потомок «funks» содержит в себе необходимые функции и использует переменные от родителя

    ВВОДИМЫЕ И ВЫВОДИМЫЕ ПАРАМЕТРЫ И ИХ ТИПЫ

    Ввод в программе происходит только в двух ситуациях:

    1. Пользователь вводит только данные типа char[][]

    2. Выводятся переменные типа char, а так же нумерация происходит переменными int


    СТРУКТУРА ПРОЕКТА, ПЕРЕЧЕНЬ НУЖНЫХ ФАЙЛОВ

    Программа разрабатывается в современной среде разработки Microsoft Visual Studio 2022. Написана на языке C++.

    Программа состоит из файлов:

    prot.cpp

    variables.h

    Tекст программы и файлов заголовков с комментариями, синтаксический разбор текста в комментариях

    labka5.cpp:

    #include //импорт библиотеки основных функций

    #include //импорт библиотеки для русского языка в char

    #include "classik.h"// подключение класса

    int main() {

    setlocale(LC_ALL, "Russian");// русский язык

    SetConsoleCP(1251); //функция для русского языка в char

    SetConsoleOutputCP(1251); //функция для русского языка в char

    variables var;// объект var

    funks fun;// объект fun

    int i = 0; //переменная счеткик

    while (true)

    {

    std::cout << "Введите номер телефона, либо 0 что б вывести введенные номера и закончить программу:";

    std::cin >> var.numbers[i];// ввод номера

    system("cls"); //очистка консоли

    if (var.numbers[i][0] == '0')//проверка на запрос вывода номеров

    {

    fun.coution(var.nik, i, var.numbers);//вызов функции и передача в нее аргументов

    return 0;

    }

    int n = 20; // переменная счетчик необходимая для удаления ошибочных символов

    for (int kl = 0; kl < n; kl++) //цикл проверки номеров на ошибки

    {

    if (var.numbers[i][kl] >= 32 && var.numbers[i][kl] <= 47 || var.numbers[i][kl] >= 58) { // ветвление сравнения

    for (long g = kl; g < n; g++) // цикл удаления симола где (kl) удаляемый

    {

    var.numbers[i][g] = var.numbers[i][g + 1]; // перезапись массива без ошбики

    kl--; // массив уменьшился за счет удаленного символа

    }

    n--; //счеткчик для завершения цикла

    }

    }

    std::cout << "Введите ник номера (" << var.plus << var.numbers[i] << "):";

    std::cin >> var.nik[i];//ввод ника

    std::cout << "Номер записан!\n" << var.nik[i] << ":" << var.plus << var.numbers[i] << std::endl;//вывод ника

    i++;// счет для ввода данных в массив

    }

    }

    classik.h::

    #include

    #include

    class variables //создание класса

    {

    public:// публичный модификатор

    char plus = '+';

    char numbers[100][20];

    char nik[100][20];

    };

    class funks :variables //создание дочернего класса

    {

    public:// публичный модификатор

    void coution(char nik[100][20], int size, char numbers[100][20]) { //void функция

    int q = 0;

    int w = 0; // неоходимые переменные

    int e = 0;

    for (int i = 0; i < size; i++) //цикл по количеству циклов сравнения/обмена

    {

    w = i; //умный счетчик для цикла

    for (e = i; e < size; e++) //цикл сравнения

    {

    if (nik[w][0] > nik[e][0]) //ветвления для смена мест

    {

    w = e;

    }

    }

    std::swap(nik[i], nik[w]);

    std::swap(numbers[i], numbers[w]); // логическая смена мест

    }

    int k = 1; //счетчик для строк

    for (int j = 0; j < size; j++)// цикл выводяший массив

    {

    int a;

    a = strlen(nik[j]); // определения длинны строки для дальнейшего выравнивания

    std::cout << k << ") " << nik[j] << ": " << std::setw(20 - a) << plus << numbers[j] << "\n";// вывод данных

    k++;
    }

    }

    };

    Контрольный пример


    Рисунки 3(a, b, c, d). Примеры ввода данных


    Рисунок 4. Примеры вывода данных

    РЕЗУЛЬТАТЫ ЛАБОРАТОРНОЙ РАБОТЫ

    1. Приложение разработано по поставленной задаче для ОП Windows(7:11)

    2. Все исключения обработаны

    3. Тип приложения «Консольный»

    4. C:\Users\ Arseniy \OneDrive\Рабочий стол\инфор\prot\prot.sln

    5. Достоинства: Простота.

    6. Недостатки: не замечены


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