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

  • Краткие теоретические сведения Форматирование данных с использованием функций-членов класса ios

  • Задания для выполнения Задание 1

  • Контрольные вопросы

  • вовдвывыд. Ввод-вывод. Программирование линейных алгоритмов


    Скачать 286.71 Kb.
    НазваниеПрограммирование линейных алгоритмов
    Анкорвовдвывыд
    Дата11.11.2021
    Размер286.71 Kb.
    Формат файлаpdf
    Имя файлаВвод-вывод.pdf
    ТипЛабораторная работа
    #269651

    Лабораторная работа № 1
    Тема: Программирование линейных алгоритмов
    Цель: Научиться создавать программы на языке «С++», реализующие линейные алгоритмы. Изучить: структуру программы на языке «С++», операторы объявления переменных констант и типов, библиотеку потокового ввода и вывода, правила построения математических и логических выражений.
    Краткие теоретические сведения
    Форматирование данных с использованием функций-членов
    класса ios
    Флаги форматирования позволяют включить или выключить один из параметров ввода/вывода.
    Для установки флага используется функция fmtflags setf(fmtflags flags);
    Функция возвращает значения предыдущих установок флагов форматирования и устанавливает их со значениями заданными параметром flags.
    Установка флага вывода: cout.setf( ios::/*name_flag*/ ); // где name_flag - это имя флага
    Доступ к функциям оператора вывода выполняется через операцию точка. Метод setf() принимает один аргумент – имя флага. Флаги вывода объявлены в классе ios, поэтому, перед тем, как обратиться к флагу, необходимо написать имя класса – ios, после которого, с помощью операции разрешения области действия, вызвать нужный флаг.
    Снятие флага вывода: cout.unsetf( ios::/*name_flag*/ ); // где name_flag - это имя флага
    Если при вводе/выводе необходимо установить(снять) несколько флагов, то можно воспользоваться поразрядной логической операцией
    ИЛИ |. В этом случае конструкция языка C++ будет такой:
    Установка нескольких флагов: cout.setf( ios::/*name_flag1*/ | ios::/*name_flag2*/ | ios::/*name_flag_n*/ );
    Снятие нескольких флагов cout.unsetf( ios::/*name_flag1*/ | ios::/*name_flag2*/ | ios::/*name_flag_n*/ );
    В таблице 1 подробно описаны основные флаги форматирования, а также показаны примеры использования флагов.
    Флаг
    Назначение
    Пример
    Результат boolalpha Вывод логических величин в текстовом виде
    (true, false) cout.setf(ios::boolalpha); bool log_false = 0, log_true = 1; cout << log_false << endl
    << log_true << endl; true false oct
    Ввод/вывод величин в восьмеричной cout.setf(ios::oct, ios::basefield); int value = 17;
    21

    Флаг
    Назначение
    Пример
    Результат системе счисления cout << value << endl; dec
    Ввод/вывод величин в десятичной системе счисления
    (флаг установлен по умолчанию) cout.setf(ios::dec, ios::basefield); int value = 17; cout << value << endl;
    17 hex
    Ввод/вывод величин в шестнадцатерично й системе счисления cout.setf(ios::hex, ios::basefield); int value = 17; cout << value << endl;
    11 showbase Выводить индикатор основания системы счисления
    (по умолчанию не выводится) int value = 17; cout.setf(ios::showbase); cout.setf(ios::dec, ios::basefield); cout << value << endl; cout.setf(ios::oct, ios::basefield); cout << value << endl; cout.setf(ios::hex, ios::basefield); cout << value << endl;
    17 021 0x11 uppercas e
    В шестнадцатерично й системе счисления использовать буквы верхнего регистра(по умолчанию установлены буквы нижнего регистра) int value = 17; cout.setf(ios::showbase); cout.setf(ios::uppercase); cout.setf(ios::hex, ios::basefield); cout << value << endl;
    0X11 showpos
    Вывод знака плюс
    + для положительных чисел int value = 17; cout.setf(ios::showpos); cout << value << endl;
    +17 scientific
    Вывод чисел с плавающей точкой в экспоненциальной форме cout.setf(ios::scientific)
    ; double value = 1024.165; cout << value << endl;
    1.024165e+00 3 fixed
    Вывод чисел с плавающей точкой в фиксированной форме(по умолчанию) cout.setf(ios::fixed); double value = 1024.165; cout << value << endl;
    1024.165000 right
    Выравнивание по правой границе(по умолчанию). cout.width(7); cout << "text" << endl; text

    Флаг
    Назначение
    Пример
    Результат
    Сначала необходимо установить ширину поля(ширина поля должна быть заведомо большей чем, длина выводимой строки). left
    Выравнивание по левой границе.
    Сначала необходимо установить ширину поля(ширина поля должна быть заведомо большей чем, длина выводимой строки). cout.width(7); cout << "text" << endl; text
    Для использования манипуляторов необходимо подключить библиотеку iomanip:
    #include
    Манипулятор
    Назначение
    Пример
    Результат endl
    Переход на новую строку при выводе cout
    <<
    «website:»
    << endl
    <<
    «cppstudio.com»; website: cppstudio.com boolalpha
    Вывод логических величин в текстовом виде (true, false) bool log_true = 1; cout << boolalpha
    << log_true << endl; true noboolalpha
    Вывод логических величин в числовом виде (true, false) bool log_true = true; cout
    << noboolalpha
    << log_true << endl;
    1 oct
    Вывод величин в восьмеричной системе счисления int value = 64; cout << oct << value << endl;
    1008 dec
    Вывод величин в десятичной системе int value = 64; cout << dec <<
    6410

    Манипулятор
    Назначение
    Пример
    Результат счисления
    (по умолчанию) value << endl; hex
    Вывод величин в шестнадцатеричной системе счисления int value = 64; cout << hex << value << endl;
    408 showbase
    Выводить индикатор основания системы счисления int value = 64; cout << showbase
    << hex << value
    << endl;
    0x40 noshowbase
    Не выводить индикатор основания системы счисления
    (по умолчанию). int value = 64; cout
    << noshowbase
    << hex << value << endl;
    40 uppercase
    В шестнадцатеричной системе счисления использовать буквы верхнего регистра (по умолчанию установлены буквы нижнего регистра). int value = 255; cout << uppercase
    << hex << value
    << endl;
    FF16 nouppercase
    В шестнадцатеричной системе счисления использовать буквы нижнего регистра (по умолчанию). int value = 255; cout
    << nouppercase
    << hex << value << endl; ff16 showpos
    Вывод знака плюс + для положительных чисел int value = 255; cout
    << showpos<< value
    << endl;
    +255 noshowpos
    Не выводить знак плюс
    + для положительных чисел (по умолчанию). int value = 255; cout
    <255 scientific
    Вывод чисел с плавающей точкой в double value =
    1024.165;
    1.024165e+003

    Манипулятор
    Назначение
    Пример
    Результат экспоненциальной форме cout << scientific
    << value << endl; fixed
    Вывод чисел с плавающей точкой в фиксированной форме
    (по умолчанию). double value =
    1024.165; cout << fixed << value << endl;
    1024.165 setw(int number)
    Установить ширину поля, где number – количество позиций, символов
    (выравнивание по умолчанию по правой границе). Манипулятор с параметром. cout << setw(40)
    <<
    «cppstudio.com»
    << endl;
    __cppstudio.com right
    Выравнивание по правой границе(по умолчанию). Сначала необходимо установить ширину поля(ширина поля должна быть заведомо большей чем, длина выводимой строки). cout << setw(40)
    << right
    <<
    «cppstudio.com»
    << endl;
    __cppstudio.com left
    Выравнивание по левой границе. Сначала необходимо установить ширину поля (ширина поля должна быть заведомо большей чем, длина выводимой строки). cout << setw(40)
    << left
    <<
    «cppstudio.com»
    << endl; cppstudio.com__ setprecision(int count)
    Задаѐт количество знаков после запятой, где count – количество знаков после десятичной точки cout << fixed << setprecision(3) <<
    (13.5 / 2) << endl;
    6.750 setfill(int symbol)
    Установить символ заполнитель.
    Если cout << setfill(‘0′)
    << setw(4) << 15 0015

    Манипулятор
    Назначение
    Пример
    Результат ширина поля больше, чем выводимая величина, то свободные места поля будут наполняться символом symbol – символ заполнитель
    << ends << endl;
    В системе ввода-вывода C++ каждый поток связан с набором флагов форматирования, которые управляют процессом форматирования информации. В классе ios объявляется перечисление fmtflags, в котором определены следующие значения.
    Задания для выполнения
    Задание 1
    1. Целое незнаковое число вводится в десятичной системе исчисления, вывести данное число в восьмеричной системе исчисления.
    2. С клавиатуры вводится символ, вывести на экран код этого символа в десятичной и шестнадцатеричной системе исчисления.
    3. Целое незнаковое число вводится в восьмеричной системе исчисления, вывести данное число в шестнадцатеричной системе исчисления.
    4. Код символа вводится в десятичной системе, вывести на экран ASCII символ соответствующий этому коду.
    5. Целое незнаковое число вводится в шестнадцатеричной системе исчисления, вывести данное число в десятичной системе исчисления.
    6. Код символа вводится в шестнадцатеричной системе исчисления, вывести на экран ASCII символ соответствующий этому коду.
    7. Целое незнаковое число вводится в десятичной системе исчисления, вывести данное число в шестнадцатеричной системе исчисления.
    8. Код символа вводится в восьмеричной системе исчисления, вывести на экран ASCII символ соответствующий этому коду.
    9. Целое незнаковое число вводится в восьмеричной системе исчисления, вывести данное число в десятичной системе исчисления.
    10. Вещественное число (тип double) вводится в десятичной системе исчисления, вывести данное число в шестнадцатеричной системе исчисления.
    11. Целое незнаковое число вводится в шестнадцатеричной системе исчисления, вывести данное число в восьмеричной системе исчисления.
    12. Вещественное число (тип double) вводится в шестнадцатеричной системе исчисления, вывести данное число в десятичной системе исчисления.
    13. С клавиатуры вводится символ, вывести на экран код этого символа в восьмеричной и шестнадцатеричной системе исчисления.

    14. Целое незнаковое число вводится в шестнадцатеричной системе исчисления, вывести данное число в десятичной системе исчисления.
    15. С клавиатуры вводится символ, вывести на экран код этого символа в восьмеричной и десятичной системе исчисления.
    Задание 2
    1. Два незнаковых целых числа вводятся с клавиатуры в десятичной системе исчисления. Найти их сумму, а затем сумму сдвинуть на два разряда влево. Вывести результат в восьмеричной системе исчисления.
    2. Два незнаковых целых числа вводятся с клавиатуры в восьмеричной системе исчисления. Разделить первое на второе, а затем частное сдвинуть на один разряд вправо. Вывести результат в шестнадцатеричной системе исчисления.
    3. Два незнаковых целых числа вводятся с клавиатуры в шестнадцатеричной системе исчисления. Найти их произведение, а затем провести операцию побитового «И» над произведением и вторым числом.
    Вывести результат в десятичной системе исчисления.
    4. Два незнаковых целых числа вводятся с клавиатуры в десятичной системе исчисления. Найти остаток от деления первого числа на второе, а затем провести операцию побитового «ИЛИ» над остатком и вторым числом.
    Вывести результат в шестнадцатеричной системе исчисления.
    5. Два незнаковых целых числа вводятся с клавиатуры в восьмеричной системе исчисления. Разделить первое число на второе, а затем провести операцию побитового «Исключающего ИЛИ» над частным и первым числом.
    Вывести результат в десятичной системе исчисления.
    6. Два незнаковых целых числа вводятся с клавиатуры в шестнадцатеричной системе исчисления. Вычислить модуль разности этих чисел, а затем к результату применить операцию побитового «НЕ» Вывести результат в восьмеричной системе исчисления.
    7. Два положительных целых числа вводятся в десятичной системе исчисления. Сложить их используя побитовую операцию «И», предварительно сдвинув первое число на 2 бита влево, а второе – на 3 бита вправо. Вывести результат в шестнадцатеричной системе исчисления.
    8. Два положительных целых числа вводятся в восьмеричной системе исчисления. Сложить их, используя побитовую операцию «ИЛИ», предварительно сдвинув первое число на 1 бит вправо, а второе – на 2 бита влево. Вывести результат в десятичной системе исчисления.
    9. Два положительных целых числа вводятся в шестнадцатеричной системе исчисления. Применить побитовую операцию «НЕ» к остатку от деления первого числа на второе число. Вывести результат в восьмеричной системе исчисления.
    10. Два положительных целых числа вводятся в десятичной системе исчисления. Сложить их используя побитовую операцию «Исключающее
    ИЛИ», предварительно инвертировав первое число, а второе сдвинув на 2 бита вправо. Вывести результат в шестнадцатеричной системе исчисления.

    11. Даны два символа латинского алфавита (нижний регистр).
    Определить символ лежащий между этими символами в алфавите. Если такого символа нет, то вывести символ, расположенный слева от центра.
    Примеры: ‘a’ и ‘e’ → ‘c’, ‘a’ и ‘f’ → ‘c’.
    12. С клавиатуры вводятся два целых положительных числа: первое в десятичной системе исчисления, а второе в шестнадцатеричной системе исчисления. Сложить числа, сдвинув первое число на три бита вправо, а второе число на один бит влево. Результат вывести в восьмеричной системе исчисления.
    13. С клавиатуры вводятся два целых положительных числа: первое в восьмеричной системе исчисления, а второе в шестнадцатеричной системе исчисления. Сложить числа, инвертировав первое число. Результат сложения сдвинуть на два бита влево. Результат вывести в десятичной системе исчисления.
    14. С клавиатуры вводятся два целых положительных числа: первое в десятичной системе исчисления, а второе в восьмеричной системе исчисления. Сложить числа, сдвинув первое число на два бита влево, и инвертировав второе число. Результат вывести в шестнадцатеричной системе исчисления.
    15. С клавиатуры вводятся два целых положительных числа: первое в шестнадцатеричной системе исчисления, а второе в десятичной системе исчисления. Сложить числа используя операцию «исключающее ИЛИ», предварительно инвертировав второе число. Результат сдвинуть на один бит вправо. Результат вывести в восьмеричной системе исчисления.
    Задание 3
    1. Дана сторона квадрата a. Найти его периметр P = 4 * a.
    2. Дана сторона квадрата a. Найти его площадь S = СТЕПЕНЬ(a;2).
    3. Дан диаметр окружности d. Найти еѐ длину L = π * d. В качестве значения π использовать 3.14.
    4. Дана длина ребра куба a. Найти объем куба V = СТЕПЕНЬ(а;3).
    5. Дана длина ребра куба a. Найти площадь его поверхности
    S = 6 * СТЕПЕНЬ(а;3).
    6. Даны стороны прямоугольника a и b. Найти его площадь S = a * b.
    7. Даны стороны прямоугольника a и b. Найти его периметр
    P = 2 * (a + b).
    8. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти его объем V = a * b * c.
    9. Даны длины ребер a, b, c прямоугольного параллелепипеда. Найти площадь поверхности S = 2 * (a * b + b * c + a * c).
    10. Найти длину окружности L заданного радиуса R: L = 2 * π * R.
    11. Найти площадь круга
    S заданного радиуса
    R:
    S = π * СТЕПЕНЬ(R;2).
    12. Найти площадь круга
    S заданного диаметра:
    S = π * (СТЕПЕНЬ(D;2) / 4).

    13. Даны два числа a и b. Найти их среднее арифметическое: (a + b) / 2.
    14. Дано трѐхзначное число. Найти сумму его цифр.
    15. Дано трѐхзначное число. Найти произведение его цифр.
    Контрольные вопросы
    1. Из каких блоков состоит структура простейшей программы на языке
    «С++»?
    2. Какие типы данных входят в систему базовых типов языка «С++»?
    3. В какой библиотеке описаны флаги и манипуляторы форматированного ввода и вывода?
    4. Как объявляются переменные, константы и типы на языке «С++»?
    5. Какой синтаксис у оператора присвоения?
    6. Какие математические операции присутствуют в языке «С++» и как осуществляется преобразование типов?
    7. Какие целочисленные математические операции присутствуют в языке «С++»?
    8. Как реализован приоритет при выполнении операций в языке «С++»?


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