DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

Лабораторна робота №3 Програмування, ч3

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2019
Тип роботи:
Лабораторна робота
Предмет:
Програмування алгоритмів цифрової обробки сигналів та зображень

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра ЕОМ / Звіт про виконання лабораторної роботи №3 з дисципліни: “Програмування, частина 3 (Структури даних та алгоритми)” на тему:“ Перетворення типів даних ” Львів 2017 Мета: дослідження методів та засобів явного та неявного перетворення типів даних. Постановка задачі День народження студента = 07 Місяць народження студента = 08 Завдання №1 Оголошені наступні змінні: char x0 = 0; unsigned int x1 = 7; signed short int x2 = 2; long double x3 = 3; signed short int x4 = 4; unsigned short int x5 = 5; unsigned int x6 = 6; unsigned int x7 = 7; long double x8 = 8; unsigned int x9 = 9; unsigned int x10 = 10; unsigned short int x11 = 11; Потрібно визначити, які неявні перетворення будуть відбуватися при обчисленні таких виразів: x1 = x1 – 0xFFFFFFFA; x3 = ’a’ + x0 – x2; x7 = x4 + x5 + x6 * 0.1; x8 = x9 + x10 – x11*10; Завдання №2 Визначити, які явні і неявні перетворення типів будуть відбуватись. Результати обчислень підтвердити програмними результатами. В звіти пояснити кожне перетворення і кожний отриманий результат. int x = 2; //замість № підставити значення: DN % 5 float y = 1; // замість № підставити значення: DN % 3 char v4 = static_cast< char > (x) + 22; printf("%d %x %c \n", v4, v4, v4); short w6 = *(reinterpret_cast<short*>(&y) + 3) + 13; printf("%x %u %d \n", w6, w6, w6); char v0 = *reinterpret_cast<char*> (&x) + 3; printf("%d %x %c \n", v0 , v0, v0); short w3 = *reinterpret_cast<short*>(&y) + 1; printf("%x %u %d \n", w3, w3, w3); Система тестів Завдання 1 1. x1 = x1 – 0xFFFFFFFA; 1)”-“ unsigned int x1 -> signed int(0xFFFFFFFA) 2)”=” signed int -> unsigned int x1; Результат unsigned int, точність втрачається. 2) x3 = ’a’ + x0 – x2; ’a’ + x0 – відбулось не явне переведення char до типу signed int, дані не втратились. ’a’ + x0 – x2 – відбулось не явне переведення signed short int (х2) до типу signed int. Дані не втратились. x3 = ’a’ + x0 – x2; - відбулось не явне переведення signed int до типу double. Дані не втратились. 3) x7 = x4 + x5 + x6 * 0.1; x6 * 0.1 – відбулось не явне переведення unsigned int до типу signet int. Дані не втратились. x4 + x5 – відбулось не явне переведення signed short int до типу unsigned short int. Дані не втратились. x4 + x5 + x6 * 0.1 - відбулось не явне переведення unsigned short int до типу signet int. Дані не втратились. x7 = x4 + x5 + x6 * 0.1; - відбулось не явне переведення signet int до типу unsignet int. Дані не втратились. 4) x8 = x9 + x10 – x11*10; x11*10 – відбулось не явне переведення типів, загальний тип unsigned short int став signed int. Дані не втратились. x9 + x10 – переведення типів не відбулось, тому що х9 та х10 типу unsigned int. Дані не втратились. x9 + x10 – x11*10 – відбулось не явне переведення типe unsigned int до типу signed int. Дані не втратились. x8 = x9 + x10 – x11*10 – відбулось не явне перетворення signed int до long double. Дані не втратилися. / Рис.1 Результат виконання 1 завдання Завдання 2 1) static_cast< char > (x) – явне переведення типу int до типу char. static_cast< char > (x)+22 – не явне переведення типу char до типу int. char v4 = static_cast< char > (x)+22 - не явне переведення типу int до типу char. printf("%d %x %c \n", v4,v4,v4) – далі не явно переводимо перші два типи завдяки модифікаторам і виводимо змінні на екран. 1 модифікатор d – int,( відбулось переведення типу char до типу int ) 2 модифікатор х – int(16) ,( відбулось переведення типу char до типу int(16) ) 3 модифікатор с – тип char(не відбулось переведення типів). 2) *(reinterpret_cast<short*>(&y) - відбулось явне переведення вказівника типу double до вказівника типу short. Дані могли втратитись. *(reinterpret_cast<short*>(&y)+3); - зміщення вказівника на 8 байти. *(reinterpret_cast<short*>(&y)+3)+13- розіменування вказівника типу short, відбулось не явне переведення типу short до типу int. Дані не втратились. short w6=*(reinterpret_cast<short*>(&y)+3)+13; - відбулось не явне переведення типу int до типу short. Дані могли втратитись. printf("%x %u %d \n", w6,w6,w6); - далі завдяки модифікаторам і виводимо змінні на екран. 1 модифікатор x – int(16), (не відбулось перведення типів) 2 модифікатор u – unsigned int (відбулось переведення типу int до unsigned int ) 3 модифікатор d – int . (не відбулось переведення типів). 3) char v0 = *reinterpret_cast<char*> (&x) + 3 printf("%d %x %c \n", v0 , v0, v0); reinterpret_cast<char*> (&x) – відбулося явне переведення вказівника типу int до вказівника типу char. Дані не втратились. char v0 = reinterpret_cast<char*> (&x); - переведення типів не відбувається тому, що перед дорівнює вказівник на тип char і після дорівнює вказівник на тип char. 1 модифікатор d – 1) розадресування вказівника. 2) неявне переведення до типу int. 3) виведення в на екран переведення не відбулось. 2 модифікатор x - 1) розадресування вказівника. 2) неявне переведення до типу int (16). 3) виведення в на екран переведення не відбулось. 3 модифікатор c - 1) розадресування вказівника . 2) неявне переведення до типу int . 3) неявне переведення до типу char. 4) *(reinterpret_cast<short*>(&y) - відбулось явне переведення вказівника типу double до вказівника типу short. Дані могли втратитись. *reinterpret_cast<short*>(&y)+1; - зміщення вказівника на 4 байти. *reinterpret_cast<short*>(&y)+1- розіменування вказівника типу short, відбулось не явне переведення типу short до типу int. Дані не втратились. short w3=*reinterpret_cast<short*>(&y)+1; - відбулось не явне переведення типу int до типу short. Дані могли втратитись. printf("%x %u %d \n", w3,w3,w3); - далі завдяки модифікаторам і виводимо змінні на екран. 1 модифікатор x – int(16), (не відбулось перведення типів) 2 модифікатор u – unsigned int (відбулось переведення типу int до unsigned int ) 3 модифікатор d – int . (не відбулось переведення типів). / Рис.2 Результат виконання 2 завдання Спеціфікація програми int main() { x1 = x1 - 0xFFFFFFFA; x3 = 'a' + x0 - x2; x7 = x4 + x5 + x6 * 0.1; x8 = x9 + x10 - x11 * 10; showInMemory(x1); showInMemory(x3); showInMemory(x7); showInMemory(x8); char v4 = static_cast< char > (x) + 22; printf("%d %x %c \n", v4, v4, v4); hort w6 = *(reinterpret_cast<short*>(&y) + 3) + 13; printf("%x %u %d \n", w6, w6, w6); char v0 = *reinterpret_cast<char*> (&x) + 3; printf("%d %x %c \n", v0 , v0, v0); short w3 = *reinterpret_cast<short*>(&y) + 1; printf("%x %u %d \n", w3, w3, w3); return 0; } Висновок: на даній лабораторній роботі я виконав дослідження методів та засобів явного та неявного перетворення типів даних.
Антиботан аватар за замовчуванням

28.05.2019 17:53

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!