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

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

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

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

Рік:
2015
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Програмування Частина 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:18

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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