Перетворення типів даних

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

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

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

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування Частина III Структури даних та алгоритми

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

Міністерство освіти і науки, молоді та спорту України Національний університет “Львівська політехніка” Кафедра ЕОМ Звіт з лабораторної роботи № 2 на тему: "Перетворення типів даних" з дисципліни: " Програмування. Частина III. Структури даних та алгоритми " Вибір індивідуального завдання: RN = 1995 MN = 2 % 8 = 2 DN = 10 mn = 02 dn = 10 Pr1 = №(C) = 67 рr2 = №(h) = 97 рr3 = №(a) = 104 Львів – 2013 Мета роботи: Дослідження методів та засобів явного і неявного перетворення типів даних. Постановка задачі: Обчислити вирази та визначити, які неявні та явні перетворення типів будуть відбуватись. Хід міркувань підтвердити програмними результатами. Далі використовувати такі позначення: RN - число, що відповідає року народження, MN - число, що відповідає місяцю народження % 8, DN - число, що відповідає дню народження, mn і dn– ті ж самі значення, що й MN і DN відповідно, записані у вигляді двох цифр, Pr1 – ASCII-код першої літери прізвища (латинська велика літера), pr2 – ASCII-код другої літери прізвища (латинська мала літера), pr3 – ASCII-код третьої літери прізвища (латинська мала літера). Система тестів: • Неявні перетворення типів даних x1 = x0 + x2 + x4+0Х123; а) float x0 = 0х1995 – 10 0х1995 ВПК = 95 19 00 00 199516 = -10710 (1 байт) б) unsigned short x2 = 02 ВПК = 02 00 00 00 в) bool x4 = 10 % 3 * 10 10 % 3 * 10 = 1 г) 0х123 12316 = 29110 х1 = -107 – 10 + 2 +1 +291 = 177 Результат: 177 x2 = x2 + x3 - 0123; а) unsigned short x2 = 02 ВПК = 02 00 б) short x3 = 67 – 110 ВПК = D5 FF (преведено за допомогою програми, розробленої в лаб. роб. №1) D5 FF16 = 54783 в) 01238 = 8310 3) x3 = x1 + x2 * 0.123 + ’1’; а) х1 ВПК = СС СС (преведено за допомогою програми, розробленої в лаб. роб. №1) СС СС16 = -1310810 б) unsigned short x2 = 02 ВПК = 02 00 00 00 2*0,123 = 0,246 в) ‘1’ – у таблиці ASCII це код 49 ВПК = 31 00 (преведено за допомогою програми, розробленої в лаб. роб. №1) 31 0016 = 1254410 • Явні перетворення типів даних 1) float v1 = static_cast< float > (x); х = 10*2*100 = 2000 2) char v2 = static_cast<char> (x); х = 10*2*100 = 2000 Оскільки char займає 1 байт, то х = 20, а в таблиці ASCII це “¶” 3) float v3 =*reinterpret_cast<float*> (&x)+1; х = 10*2*100 = 2000 Оскільки char займає 1 байт, то 00 + 1 = 1 4) char v4 =*(reinterpret_cast<char*> (&x)+2)+3; х = 10*2*100 = 2000 Оскільки char займає 1 байт, то 00 + 3 = 3. В таблиці ASCII це “♥” 5) int w1 = static_cast<int>(y)+0X0E2; у = 2.10е+2 = 210 0х0E2 = 226 w1 = 210 + 226 = 436 6) long w2 =*reinterpret_cast<long*>(&y)+1; у = 210 ВПК = 00 00 00 00 00 40 6А 40. Оскільки long – 4 байти і перші 4 байти = 0, то 0 + 1 = 1 7) short w3 =*(reinterpret_cast<short*>(&y)+2); ВПК = 00 00 00 00 00 40 6А 40. Short – 2 байти 40 6А = 16384 8) char w4 =*(reinterpret_cast<char*>(&y)+7)+3; ВПК = 00 00 00 00 00 40 6А 40. Сhar – 1 байт Алгоритм розв’язання задачі: #include <iostream> using namespace std; int main () { //Program 1 char x0 = 0x1995 - 10; float x1 ; unsigned short x2 = 02; short x3 = 67 - 110; bool x4 = 10 % 3 * 10; x1 = x0 + x2 + x4 + 0x123; x2 = x2 + x3 - 0123; x3 = x1 + x2 * 0.123 + '1'; cout << "Task 2\n______" << endl; cout << "x1=" << x1 << endl; cout << "x2=" << x2 << endl; cout << "x3=" << x3 << endl; //Program 2 const int x_0 = 10*2*100; // наприклад: 15*3*100= 4500 => x_0= 4500; const int x_1 = 010020; // наприклад: x_1= 015030; const int x_2 = 0x1002; // наприклад: x_2= 0x1502; const int x_3 = 002100; // наприклад: x_3= 003150; const int x_4 = 0x0210; // наприклад: x_4= 0x0315; const double y_0= 10*2/100; // наприклад: 15*3/100= 0.45 => y_0= 0.45; const double y_1= -10.2; // наприклад: y_1= -15.3; const double y_2= 2.10e+2; // наприклад: y_2= 3.15e+2; const double y_3= -10.2e1; // наприклад: y_3= -15.3 e1; const double y_4= - 2.10e-1; // наприклад: y_4= -3.15 e-1; int x = x_0; // замість № підставити значення: DN % 5 double y = y_2; // замість № підставити значення: MN % 5 float v1 = static_cast< float > (x); char v2 = static_cast<char> (x); float v3 =*reinterpret_cast<float*> (&x)+1; char v4 =*(reinterpret_cast<char*> (&x)+2)+3; int w1 = static_cast<int>(y)+0X0E2; long w2 =*reinterpret_cast<long*>(&y)+1; short w3 =*(reinterpret_cast<short*>(&y)+2); char w4 =*(reinterpret_cast<char*>(&y)+7)+3; cout << "______\nTask 2\n______" << endl; cout << "v1=" << v1 << endl; cout << "v2=" << v2 << endl; cout << "v3=" << v3 << endl; cout << "v4=" << v4 << endl; cout << "w1=" << w1 << endl; cout << "w2=" << w2 << endl; cout << "w3=" << w3 << endl; cout << "w4=" << w4 << endl; } Результат виконання програми: / Рис1. Ескіз вікна з результатом виконання програми Висновок: в даній лабораторній роботі я навчився явно і неявно перетворювати типи даних.
Антиботан аватар за замовчуванням

14.04.2015 19:04-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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