Ім'я файлу: ЛР-8_Филипчук_Богдан_КН-106.docx
Розширення: docx
Розмір: 517кб.
Дата: 18.11.2021
скачати


Міністерство освіти і науки України

Національний університет «Львівська політехніка»

Інститут комп’ютерних наук та інформаційних технологій

Кафедра автоматизованих систем управління



Звіт

до лабораторної роботи №8

з дисципліни

Алгоритмізація та програмування, част. 1

на тему:

ФОРМАТНЕ ВИВЕДЕННЯ ТА ВВЕДЕННЯ ДАНИХ

Виконав: студент КН-106

Филипчук Богдан

Прийняв: Кинаш Ю. Є.
Львів – 2021

Лабораторна робота № 8

Варіант №30

Тема роботи: “ Форматне виведення та введення даних”

Мета роботи: • практично закріпити знання про організацію форматного виведення і введення даних у С-програмах; • навчитись застосовувати специфікації виведення стандартної бібліотечної функції printf() для наочного відображення даних на екрані; • отримати навики введення числової та іншої інформації через бібліотечну функцію scanf().

Завдання лабораторної роботи

  1. Детально ознайомитися із функціональними можливостями стандартних бібліотечних функцій форматного виведення і введення даних printf() та scanf(). Розглянути структуру полів кожної із специфікацій формату і продумати, у яких випадках доцільно їх застосовувати.

  2. Проаналізувати виклик функції printf(), записаний в п. 1 індивідуального завдання. Уважно розглянути її параметри: специфікації рядка формату та вирази, значення яких виводяться на екран. Розрахувати значення кожного з цих виразів для заданих типів і значень змінних – всі розрахунки мають бути наведені в звіті. Визначити, в якій формі, з якою точністю, в яких позиціях екрану тощо відображатиметься кожне значення (у специфікаціях формату не плутати малу латинську літеру l з цифрою 1). Потім програмно реалізувати задану функцію printf() і порівняти отримані результати з прогнозованими. Якщо виявлено відмінності, то встановити їхню причину та зробити відповідні висновки.

  3. У п. 2 індивідуального завдання наведено оголошення двох змінних. Написати програму (краще дві окремі програми), в якій реалізувати різні можливі форми виведення значень цих змінних, використовуючи відповідні специфікації формату. Програма має складатися із набору (послідовності) операторів виклику printf() з різними допустимими для відповідного типу специфікаціями формату. До значень цілочислових типів треба застосувати кожну зі специфікацій: d, i, x, X, o, с з необхідними модифікаторами і можливими прапорцями. До значень дійсних типів застосувати специфікації: f, e, E, g, G, задаючи різну точність зображення чисел. Результати виведення у звіті подати парами: <специфікація> – <виведене значення> (зазначити обов’язкові пробіли перед числом або за ним). Для зручності перегляду та аналізу результатів можна встановити затримку програми наприкінці її роботи. Найпростіше це зробити через виклик функції getchar().

  4. Написати коротку програму, в якій перевірити правильність розрахунків значень виразів з п. 2 індивідуального завдання лабораторної роботи №7. Для цього реалізувати наочне та зручне для сприйняття виведення результату– виокремити його порожніми рядками, вивести супроводжуючий текст, вибрати відповідну специфікацію формату (числову, символьну чи текстову) тощо. Значення булевих виразів найкраще спочатку вивести в шістнадцятковій формі (щоби легше було порівняти з результатами попередніх розрахунків), а потім вказати їхні десяткові значення. Значення логічних виразів можна вивести як числові, але краще доповнити їх умовною операцією і вивести відповідні текстові повідомлення.

  5. Розробити ще одну програму, в якій реалізувати виведення значення виразу, заданого в п. 3 індивідуального завдання попередньої лабораторної роботи. Оголосити необхідні змінні та організувати введення з клавіатури їхніх значень (попередньо треба вивести на екран відповідну підказку). Для введення використати функцію scanf(), вказавши коректну для типу кожної змінної специфікацію та задавши адреси змінних у списку введення. Записати функцію printf(), в якій розроблений вираз має бути елементом виведення. Рекомендації: 1) бажано, щоб окрім значення виразу в printf() виводилися також значення змінних, для яких обчислюється цей вираз (див. приклад нижче); 2) якщо вираз використовує побітові операції, то для введення даних і виведення результату найкраще використати 16-ві форми подання значень; 3) якщо вираз має дати відповідь на поставлене в умові запитання, то доцільно щоб значенням виразу був символьний рядок (див. приклад). Виконати програму для різних значень змінних, проаналізувати і записати результати. Приклад. Фрагмент програми для перевірки виразу з попередньої лабораторної роботи, який визначає менше з двох заданих дійсних чисел.

printf ("\n\n З двох чисел: %.2f та %.2f менше - %s \n ",

fst, scnd, fst < scnd ? "перше" : "друге );

  1. У звіті до лабораторної роботи треба для кожного пункту записати завдання, навести відповідні розрахунки і /або тексти розроблених програм, а також результати реалізацій цих програм та зроблені висновки.


Завдання 1

int c = '5', b = 0123, a = b + c - '0';

printf( "\n\t c = %-2c = %3d \n dyz = %#0.8X", c, c, a ^

b )

c = ‘5’ = 5310

b = 01238= 8310=0101 00112

‘0’ = 48­10

a = 83 + 53 – 48 = 88

b = 1010 11002

a ^ b = 0101 1000 xor

1010 1100

1|111 0100

1|000 1011 +1

1|000 1100 = F416 = -1210
Виведе “ c = 5 = 53

dyz = 0XFFFFFFF4”



Завдання 2

1. double u = 0.58797e5; 2. long s = 0xb12

1. ) %.5Lf - 58797.00000

2) %.4Le - 5.8797e+04

3) %.3LE - 5.880E+04

4) %.1Lg - 6e+04

5) %.2LG - 5.9E+04

2. 1) %+ld - +2834

2) %-li – 2834

3) %-lx - b12

4) %#lX - 0XB12

5) %lo – 5422

6) %c - ↕

Завдання 3

long w = 0xa53b2f; int s = 'Z', b = -14;

1) -b/3 +( w >> 16)%100 / 10 >= s -'A'




2) b & 3 ? w ^ b : w & 0xd3f





Завдання 4

Задано довге ціле число. Написати вираз, який буде істинним, якщо значення лівого середнього байта цього числа дорівнює значенню його наймолодшого байта.

Програма:

#include

#include

#include
int main()

{

system("chcp 1251");
int a = 0, b = 16711680, c = 255;

printf("\nВведіть будь-яке додатнє число.\nДля чисел у 8-овій системі напишіть перед числом без пробіла цифру 0, у 16-овій - символи 0x\n");

scanf_s("%i", &a);

printf("\na = %u = %#o = %#x; b = %#x; c = %#x\n \n", a, a, a, b, c);

printf((a & b) >> 16 == (a & c) ? "True" : "False");
getchar(); getchar();

}
Результати:







Висновок

Метою даної лабораторної роботи була навчитися використовувати функції printf і scanf, які відповідають за форматне виведення і введення відповідно. В першому завданні потрібно було вручну проаналізувати уривок програми. В другому слід було подати значення дійсного і цілого числа, використовуючи printf з різними модифікаторами. В третьому і четвертому завданні потрібно було програмно реалізувати завдання, дане у минулій лабораторній роботі, використовуючи printf і scanf.
скачати

© Усі права захищені
написати до нас