kutuzzzov

Задачи на преобразование типов

Nov 10th, 2025 (edited)
285
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.39 KB | None | 0 0
  1. ### **Задача 1: Целочисленное деление**
  2. **Условие:** Напишите программу, которая вычисляет результат деления двух целых чисел. Программа должна выводить число с плавающей точкой.  
  3. **Заготовка кода:**
  4. ```cpp
  5. #include <iostream>
  6. using namespace std;
  7.  
  8. int main() {
  9.     int a = 5, b = 2;
  10.     double result = a / b; // Результат неверный: 2 вместо 2.5
  11.     cout << "Результат: " << result << endl;
  12.     return 0;
  13. }
  14. ```
  15. **Подсказка:** Используйте преобразование одного из операндов в `double`.
  16.  
  17. ---
  18.  
  19. ### **Задача 2: Усечение данных**
  20. **Условие:** Напишите программу, которая преобразует число с плавающей точкой в целое. Убедитесь, что результат корректен.  
  21. **Заготовка кода:**
  22. ```cpp
  23. #include <iostream>
  24. using namespace std;
  25.  
  26. int main() {
  27.     double d = 3.99;
  28.     int i = d; // Результат: 3 (усечение)
  29.     cout << "Целое число: " << i << endl;
  30.     return 0;
  31. }
  32. ```
  33. **Подсказка:** Используйте явное преобразование для контроля результата.
  34.  
  35. ---
  36.  
  37. ### **Задача 3: Преобразование строки в число**
  38. **Условие:** Напишите программу, которая преобразует строку `"123"` в целое число.  
  39. **Заготовка кода:**
  40. ```cpp
  41. #include <iostream>
  42. #include <string>
  43. #include <sstream>
  44. using namespace std;
  45.  
  46. int main() {
  47.     string str = "123";
  48.     int num;
  49.     // Здесь нужно добавить код для преобразования строки в число
  50.     cout << "Число: " << num << endl; // Результат: мусор или ошибка
  51.     return 0;
  52. }
  53. ```
  54. **Подсказка:** Используйте `std::istringstream` или `std::stoi`.
  55.  
  56. ---
  57.  
  58. ### **Задача 4: Преобразование числа в строку**
  59. **Условие:** Напишите программу, которая преобразует число `456` в строку.  
  60. **Заготовка кода:**
  61. ```cpp
  62. #include <iostream>
  63. #include <string>
  64. #include <sstream>
  65. using namespace std;
  66.  
  67. int main() {
  68.     int num = 456;
  69.     string str;
  70.     // Здесь нужно добавить код для преобразования числа в строку
  71.     cout << "Строка: " << str << endl; // Результат: пустая строка
  72.     return 0;
  73. }
  74. ```
  75. **Подсказка:** Используйте `std::ostringstream` или `std::to_string`.
  76.  
  77. ---
  78.  
  79. ### **Задача 5: Неявное преобразование при сложении**
  80. **Условие:** Напишите программу, которая складывает целое число и число с плавающей точкой. Убедитесь, что результат имеет тип `double`.  
  81. **Заготовка кода:**
  82. ```cpp
  83. #include <iostream>
  84. using namespace std;
  85.  
  86. int main() {
  87.     int a = 5;
  88.     float b = 2.5;
  89.     double result = a + b; // Результат может быть неявно преобразован
  90.     cout << "Результат: " << result << endl;
  91.     return 0;
  92. }
  93. ```
  94. **Подсказка:** Проверьте тип результата и используйте явное преобразование, если необходимо.
  95.  
  96. ---
  97.  
  98. ### **Задача 6: Преобразование массива символов в число**
  99. **Условие:** Напишите программу, которая преобразует массив символов `{'1', '2', '3'}` в целое число.  
  100. **Заготовка кода:**
  101. ```cpp
  102. #include <iostream>
  103. #include <cstring>
  104. #include <cstdlib>
  105. using namespace std;
  106.  
  107. int main() {
  108.     char arr[] = "123";
  109.     int num = 0;
  110.     // Здесь нужно добавить код для преобразования массива символов в число
  111.     cout << "Число: " << num << endl; // Результат: 0
  112.     return 0;
  113. }
  114. ```
  115. **Подсказка:** Используйте функцию `std::atoi`.
  116.  
  117. ---
  118.  
  119. ### **Задача 7: Преобразование указателя базового класса к производному**
  120. **Условие:** Напишите программу, которая преобразует указатель базового класса к производному с использованием `dynamic_cast`.  
  121. **Заготовка кода:**
  122. ```cpp
  123. #include <iostream>
  124. using namespace std;
  125.  
  126. class Base { virtual void dummy() {} };
  127. class Derived : public Base {};
  128.  
  129. int main() {
  130.     Base* b = new Derived();
  131.     Derived* d = b; // Ошибка: требуется преобразование
  132.     if (d) {
  133.         cout << "Преобразование успешно!" << endl;
  134.     } else {
  135.         cout << "Преобразование не удалось." << endl;
  136.     }
  137.     delete b;
  138.     return 0;
  139. }
  140. ```
  141. **Подсказка:** Используйте `dynamic_cast`.
  142.  
  143. ---
  144.  
  145. ### **Задача 8: Преобразование указателя на `void`**
  146. **Условие:** Напишите программу, которая преобразует указатель на `int` в указатель на `void`, а затем обратно в указатель на `int`.  
  147. **Заготовка кода:**
  148. ```cpp
  149. #include <iostream>
  150. using namespace std;
  151.  
  152. int main() {
  153.     int a = 42;
  154.     void* ptr = &a;
  155.     int* iptr = ptr; // Ошибка: требуется преобразование
  156.     cout << "Значение: " << *iptr << endl;
  157.     return 0;
  158. }
  159. ```
  160. **Подсказка:** Используйте `static_cast`.
  161.  
  162. ---
  163.  
  164. ### **Задача 9: Преобразование массива байтов в число**
  165. **Условие:** Напишите программу, которая преобразует массив байтов `{0x01, 0x02, 0x03}` в целое число.  
  166. **Заготовка кода:**
  167. ```cpp
  168. #include <iostream>
  169. #include <cstdint>
  170. using namespace std;
  171.  
  172. int main() {
  173.     uint8_t bytes[] = {0x01, 0x02, 0x03};
  174.     uint32_t num = 0;
  175.     // Здесь нужно добавить код для преобразования массива байтов в число
  176.     cout << "Число: " << num << endl; // Результат: 0
  177.     return 0;
  178. }
  179. ```
  180. **Подсказка:** Используйте побитовые операции.
  181.  
  182. ---
  183.  
  184. ### **Задача 10: Удаление `const` с помощью `const_cast`**
  185. **Условие:** Напишите программу, которая удаляет `const` из переменной `a` и изменяет её значение.  
  186. **Заготовка кода:**
  187. ```cpp
  188. #include <iostream>
  189. using namespace std;
  190.  
  191. int main() {
  192.     const int a = 5;
  193.     int* ptr = &a; // Ошибка: требуется преобразование
  194.     *ptr = 10;
  195.     cout << "Значение a: " << a << endl; // Поведение не определено
  196.     return 0;
  197. }
  198. ```
  199. **Подсказка:** Используйте `const_cast`.
  200.  
Advertisement
Add Comment
Please, Sign In to add comment