Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
Задачи охватывают различные аспекты преобразования: неявное, явное, использование операторов `static_cast`, `dynamic_cast`, `reinterpret_cast`, `const_cast`, а также преобразование строк и чисел. --- ### **Задача 1: Неявное преобразование целого числа в число с плавающей точкой** **Условие:** Напишите программу, которая складывает целое число и число с плавающей точкой. #include
using namespace std; int main() { int a = 5; double b = 2.5; // Неявное преобразование int в double cout << "Результат: " << result << endl; // Вывод: Результат: 7.5 return 0; } --- ### **Задача 2: Явное преобразование числа с плавающей точкой в целое** **Условие:** Преобразуйте число с плавающей точкой `3.14` в целое число. #include
using namespace std; int main() { double d = 3.14; // Явное преобразование double в int cout << "Результат: " << i << endl; // Вывод: Результат: 3 return 0; } --- ### **Задача 3: Усечение данных при преобразовании большего типа в меньший** **Условие:** Преобразуйте значение `300` из `int` в `char`. Объясните результат. #include
using namespace std; int main() { int a = 300; char c = static_cast
(a); // Усечение данных cout << "Результат: " << (int)c << endl; // Вывод: Результат: 44 return 0; } *Объяснение:* Значение `300` выходит за пределы диапазона `char` (-128 до 127), поэтому происходит усечение. --- ### **Задача 4: Преобразование строки в число** **Условие:** Преобразуйте строку `"123"` в целое число. #include
#include
#include
int main() { std::string str = "123"; int num; std::istringstream iss(str); iss >> num; // Преобразование строки в число cout << "Число: " << num << endl; // Вывод: Число: 123 return 0; } --- ### **Задача 5: Преобразование числа в строку** **Условие:** Преобразуйте число `456` в строку. #include
#include
#include
int main() { int num = 456; std::ostringstream oss; oss << num; // Преобразование числа в строку std::string str = oss.str(); cout << "Строка: " << str << endl; // Вывод: Строка: 456 return 0; } --- ### **Задача 6: Использование `dynamic_cast` для проверки преобразования** **Условие:** Проверьте, можно ли преобразовать указатель базового класса к производному. #include
using namespace std; class Base { virtual void dummy() {} }; class Derived : public Base {}; int main() { Base* b = new Derived(); Derived* d = dynamic_cast
(b); // Проверка преобразования if (d) { cout << "Преобразование успешно!" << endl; } else { cout << "Преобразование не удалось." << endl; } delete b; return 0; } --- ### **Задача 7: Использование `reinterpret_cast` для низкоуровневого преобразования** **Условие:** Преобразуйте указатель на `int` в указатель на `char`. #include
using namespace std; int main() { int a = 65; char* c = reinterpret_cast
(&a); // Преобразование int* в char* cout << "Значение *c: " << *c << endl; // Вывод: Значение *c: A return 0; } --- ### **Задача 8: Использование `const_cast` для удаления `const`** **Условие:** Удалите `const` из переменной `a` и измените её значение. #include
using namespace std; int main() { const int a = 5; int* ptr = const_cast
(&a); *ptr = 10; // Изменение значения через указатель cout << "Значение a: " << a << endl; // Поведение не определено return 0; } --- ### **Задача 9: Неявное преобразование при делении** **Условие:** Выполните деление двух целых чисел и объясните результат. #include
using namespace std; int main() { int a = 5, b = 2; double result = a / b; // Неявное преобразование cout << "Результат: " << result << endl; // Вывод: Результат: 2 return 0; } *Объяснение:* Целочисленное деление выполняется сначала, затем результат преобразуется в `double`. --- ### **Задача 10: Преобразование массива символов в число** **Условие:** Преобразуйте массив символов `{'1', '2', '3'}` в целое число. #include
#include
#include
int main() { char arr[] = "123"; int num = atoi(arr); // Преобразование массива символов в число cout << "Число: " << num << endl; // Вывод: Число: 123 return 0; } --- ### **Задача 11: Преобразование числа в массив символов** **Условие:** Преобразуйте число `456` в массив символов. #include
#include
int main() { int num = 456; std::ostringstream oss; oss << num; std::string str = oss.str(); const char* arr = str.c_str(); // Преобразование в массив символов cout << "Массив символов: " << arr << endl; // Вывод: Массив символов: 456 return 0; } --- ### **Задача 12: Преобразование `float` в `int` с потерей точности** **Условие:** Преобразуйте `float` значение `3.99` в `int`. #include
using namespace std; int main() { float f = 3.99; int i = static_cast
(f); // Преобразование float в int cout << "Результат: " << i << endl; // Вывод: Результат: 3 return 0; } --- ### **Задача 13: Преобразование строки в число с обработкой ошибок** **Условие:** Преобразуйте строку `"123abc"` в число и обработайте ошибку, если преобразование невозможно. #include
#include
#include
int main() { std::string str = "123abc"; int num; std::istringstream iss(str); if (!(iss >> num)) { // Проверка успешности преобразования std::cerr << "Ошибка: строка не является числом." << std::endl; } else { std::cout << "Число: " << num << std::endl; } return 0; } ``` *Вывод:* `Ошибка: строка не является числом.` --- ### **Задача 14: Преобразование указателя базового класса к производному** **Условие:** Преобразуйте указатель базового класса к производному с использованием `dynamic_cast`. Обработайте случай, если преобразование невозможно. #include
using namespace std; class Base { virtual void dummy() {} }; class Derived : public Base {}; int main() { Base* b = new Base(); // Указатель на базовый класс Derived* d = dynamic_cast
(b); // Попытка преобразования if (d) { cout << "Преобразование успешно!" << endl; } else { cout << "Преобразование не удалось." << endl; // Вывод: Преобразование не удалось. } delete b; return 0; } --- ### **Задача 15: Преобразование указателя на `void` обратно в исходный тип** **Условие:** Преобразуйте указатель на `int` в указатель на `void`, а затем обратно в указатель на `int`. #include
using namespace std; int main() { int a = 42; void* ptr = &a; // Преобразование int* в void* int* iptr = static_cast
(ptr); // Преобразование void* обратно в int* cout << "Значение: " << *iptr << endl; // Вывод: Значение: 42 return 0; } --- ### **Задача 16: Преобразование строки в число с использованием `std::stoi`** **Условие:** Преобразуйте строку `"456"` в число с помощью функции `std::stoi`. #include
#include
int main() { std::string str = "456"; int num = std::stoi(str); // Преобразование строки в число cout << "Число: " << num << endl; // Вывод: Число: 456 return 0; } --- ### **Задача 17: Преобразование числа в строку с использованием `std::to_string`** **Условие:** Преобразуйте число `789` в строку с помощью функции `std::to_string`. #include
#include
int main() { int num = 789; std::string str = std::to_string(num); // Преобразование числа в строку cout << "Строка: " << str << endl; // Вывод: Строка: 789 return 0; } --- ### **Задача 18: Преобразование массива байтов в число** **Условие:** Преобразуйте массив байтов `{0x01, 0x02, 0x03}` в целое число. #include
#include
int main() { uint8_t bytes[] = {0x01, 0x02, 0x03}; uint32_t num = (bytes[0] << 16) | (bytes[1] << 8) | bytes[2]; // Преобразование массива в число cout << "Число: " << num << endl; // Вывод: Число: 66051 return 0; } --- ### **Задача 19: Преобразование числа в массив байтов** **Условие:** Преобразуйте число `66051` в массив байтов. #include
#include
int main() { uint32_t num = 66051; uint8_t bytes[3]; bytes[0] = (num >> 16) & 0xFF; // Извлечение старшего байта bytes[1] = (num >> 8) & 0xFF; // Извлечение среднего байта bytes[2] = num & 0xFF; // Извлечение младшего байта cout << "Массив байтов: "; for (uint8_t byte : bytes) { cout << "0x" << std::hex << (int)byte << " "; // Вывод: Массив байтов: 0x1 0x2 0x3 } return 0; } --- ### **Задача 20: Преобразование строки в число с проверкой диапазона** **Условие:** Преобразуйте строку `"1000"` в число и проверьте, находится ли оно в диапазоне от 1 до 500. #include
#include
#include
int main() { std::string str = "1000"; int num; std::istringstream iss(str); if (!(iss >> num)) { std::cerr << "Ошибка: строка не является числом." << std::endl; } else if (num < 1 || num > 500) { std::cerr << "Ошибка: число вне диапазона." << std::endl; // Вывод: Ошибка: число вне диапазона. } else { std::cout << "Число: " << num << std::endl; } return 0; }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)