Professional Documents
Culture Documents
lab08TymchenkoK 13
lab08TymchenkoK 13
Lab08
Фотографія прикріплена.
Теоретичні відомісті
2. Доводимо розмір нашого бінарного ряду до 16 і потім дивимось на перший символ, якщо
нуль то це додатнє, якщо одиниця то від’ємне.
3. Переводимо нулі в одиниці, одиниці в нулі і потім в стопчик додаємо 1. В коді просто
шукаємо перший нуль і міняємо його на одиничку, якщо він не зустрічається відразу просто
одинички замінємо на нулі
4. Пропущено
6. Математичний приклад, дуже схожий на приклад з сьомої лаби, для реалізації було
використано бібліотеку cmath
використанням потоків. stream у C++ - це послідовність даних, яка може бути використана для
читання (введення) або запису (виведення). iostream включає класи як istream та ostream для
цих операцій.
::stdу C++ вказує на стандартний простір імен, який містить багато класів, функцій та об'єктів
стандартної бібліотеки, наприклад std::cout , std::cin та std::vector . Використання ::std
вказує на те, що компонент є частиною стандартного простору імен.
ТИМЧЕНКО Олександр 1
dec2Oct - переведення з десяткової в вісімкову
#include <cmath>
#include <iostream>
using namespace std;
return oct;
}
return 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;
}
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