You are on page 1of 5

ТИМЧЕНКО Олександр

Lab08

Умови лабораторної роботи


В основі лежить ідея підготуватись до модульної роботи, однак зробити всі задачі в коді.

Фотографія прикріплена.

Теоретичні відомісті

1. Переведення оформлення через два основних способа, стандартний(ділення + остача)


або табличний.

2. Доводимо розмір нашого бінарного ряду до 16 і потім дивимось на перший символ, якщо
нуль то це додатнє, якщо одиниця то від’ємне.

3. Переводимо нулі в одиниці, одиниці в нулі і потім в стопчик додаємо 1. В коді просто
шукаємо перший нуль і міняємо його на одиничку, якщо він не зустрічається відразу просто
одинички замінємо на нулі

4. Пропущено

5. Переписати приклад з дошки і подивитись як це все рахується

6. Математичний приклад, дуже схожий на приклад з сьомої лаби, для реалізації було
використано бібліотеку cmath

7. Перевіряємо парарельність двох прямих, за стандартною перевіркою парарельності


прямих, якщо парарельні ⇒
не перетинаються, інакше перетинаються

- це файл заголовка у C++, який полегшує операції введення та виведення з


iostream

використанням потоків. stream у C++ - це послідовність даних, яка може бути використана для
читання (введення) або запису (виведення). iostream включає класи як istream та ostream для
цих операцій.

::stdу C++ вказує на стандартний простір імен, який містить багато класів, функцій та об'єктів
стандартної бібліотеки, наприклад std::cout , std::cin та std::vector . Використання ::std
вказує на те, що компонент є частиною стандартного простору імен.

Бібліотека <cmath> зберігає в собі велику кількість математичних функцій.

А також важливим для згадування є:

ТИМЧЕНКО Олександр 1
dec2Oct - переведення з десяткової в вісімкову

oct2Bin - переведння з вісімкової в двійкову

bin2Hex - переведення з двійкової в шістнадцяткову

hex2Dec - переведення з шістнадцяткової в десяткову

log11 - функція надання нової бази для логарифму

are_parallel - перевірка на паралельність

#include <cmath>
#include <iostream>
using namespace std;

int dec2Oct(int dec)


{
int oct = 0;
int i = 1;
while (dec > 0)
{
oct += i * (dec % 8);
i *= 10;
dec /= 8;
}

return oct;
}

string oct2Bin(int oct)


{
string bin = "";
while (oct > 0)
{
int number = oct % 10;
switch (number)
{
case 0: bin = "000" + bin; break;
case 1: bin = "001" + bin; break;
case 2: bin = "010" + bin; break;
case 3: bin = "011" + bin; break;
case 4: bin = "100" + bin; break;
case 5: bin = "101" + bin; break;
case 6: bin = "110" + bin; break;
case 7: bin = "111" + bin; break;
}
oct /= 10;
}
while (bin.size() != 16)
bin = "0" + bin;

return bin;
}

string bin2Hex(string bin)


{

ТИМЧЕНКО Олександр 2
while (bin.size() % 4 != 0)
{
bin = "0" + bin;
}
string hex;
int i = 0;
while (i < bin.size())
{
int oct_num = 0;
oct_num += 8 * (bin[i] - 48);
i++;
oct_num += 4 * (bin[i] - 48);
i++;
oct_num += 2 * (bin[i] - 48);
i++;
oct_num += (bin[i] - 48);
i++;
if (oct_num != 0 || hex.size() > 0)
if (oct_num < 10)
hex += char(oct_num + 48);
else
{
switch (oct_num)
{
case 10: hex += "A"; break;
case 11: hex += "B"; break;
case 12: hex += "C"; break;
case 13: hex += "D"; break;
case 14: hex += "E"; break;
case 15: hex += "F"; break;
}
}
}
return hex;
}

int hex2Dec(string hex)


{
int dec = 0;
int i = hex.size() - 1;
int counter = 1;
while (i >= 0)
{
int hex_dig = hex[i] - 48;

if (hex_dig < 10)


dec += hex_dig * counter;
else
dec += (hex_dig - 7) * counter;
counter *= 16;
i--;
}

return dec;
}

bool are_parallel(double x1, double y1, double x2, double y2, double x3, double y3, double x4, double y4)
{

ТИМЧЕНКО Олександр 3
return ((y2 - y1) / (x2 - x1) == (y4 - y3) / (x4 - x3));
}

double log11(double x) {
return log(x) / log(11);
}

int main()
{
// 1st exercise
int date_of_birth = 10528;
int oct = dec2Oct(date_of_birth);
cout << "0" << oct << '\n';
string bin = oct2Bin(oct);
cout << "0b" << bin << '\n';
string hex = bin2Hex(bin);
cout << "0x" << hex << '\n';
date_of_birth = hex2Dec(hex);
cout << "Final result " << date_of_birth << '\n';

// 2nd exercise
while (bin.size() < 16) {
bin = '0' + bin;
}

if (bin[0] == '0') {
std::cout << "\nBinary number is positive\n";
}
else {
std::cout << "\nBinary number is negative\n";
}

// 3rd exercise
string reversed_bin = bin;
int i = 0;
while (i < bin.size())
{
reversed_bin[i] = 97 - int(bin[i]);
i++;
}
i = reversed_bin.size() - 1;
int j = reversed_bin.size() - 1;
while (reversed_bin[j] != '0') {
reversed_bin[j] = '0';
--j;
}
reversed_bin[j] = '1';

cout << "Your negative number is: " << reversed_bin << '\n';

// 5th exercise
int c_int = (-17 % -7) * 33 / 12 + (2 / 3 < 3 / 4);
char c_char = (-17 % -7) * 33 / 12 + (2 / 3 < 3 / 4);
std::cout << "\nc_int = " << c_int << "; c_char = " << c_char;

// 6th exercise
int x = 1;

ТИМЧЕНКО Олександр 4
std::cout << '\n' << log11(abs(pow(x, 3) + 1) + pow(2, x)) << '\n';
double x1 = 1, y1 = 2, x2 = 3, y2 = 4; // x1 = 1 => parallel
double x3 = 5, y3 = 6, x4 = 7, y4 = 8;

// 7th exercise
if (are_parallel(x1, y1, x2, y2, x3, y3, x4, y4))
cout << "The lines do not cross each other.\n";
else
cout << "The lines cross each other.\n";

ТИМЧЕНКО Олександр 5

You might also like