Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### **Задача 1: Целочисленное деление**
- **Условие:** Напишите программу, которая вычисляет результат деления двух целых чисел. Программа должна выводить число с плавающей точкой.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- int main() {
- int a = 5, b = 2;
- double result = a / b; // Результат неверный: 2 вместо 2.5
- cout << "Результат: " << result << endl;
- return 0;
- }
- ```
- **Подсказка:** Используйте преобразование одного из операндов в `double`.
- ---
- ### **Задача 2: Усечение данных**
- **Условие:** Напишите программу, которая преобразует число с плавающей точкой в целое. Убедитесь, что результат корректен.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- int main() {
- double d = 3.99;
- int i = d; // Результат: 3 (усечение)
- cout << "Целое число: " << i << endl;
- return 0;
- }
- ```
- **Подсказка:** Используйте явное преобразование для контроля результата.
- ---
- ### **Задача 3: Преобразование строки в число**
- **Условие:** Напишите программу, которая преобразует строку `"123"` в целое число.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- #include <string>
- #include <sstream>
- using namespace std;
- int main() {
- string str = "123";
- int num;
- // Здесь нужно добавить код для преобразования строки в число
- cout << "Число: " << num << endl; // Результат: мусор или ошибка
- return 0;
- }
- ```
- **Подсказка:** Используйте `std::istringstream` или `std::stoi`.
- ---
- ### **Задача 4: Преобразование числа в строку**
- **Условие:** Напишите программу, которая преобразует число `456` в строку.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- #include <string>
- #include <sstream>
- using namespace std;
- int main() {
- int num = 456;
- string str;
- // Здесь нужно добавить код для преобразования числа в строку
- cout << "Строка: " << str << endl; // Результат: пустая строка
- return 0;
- }
- ```
- **Подсказка:** Используйте `std::ostringstream` или `std::to_string`.
- ---
- ### **Задача 5: Неявное преобразование при сложении**
- **Условие:** Напишите программу, которая складывает целое число и число с плавающей точкой. Убедитесь, что результат имеет тип `double`.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- int main() {
- int a = 5;
- float b = 2.5;
- double result = a + b; // Результат может быть неявно преобразован
- cout << "Результат: " << result << endl;
- return 0;
- }
- ```
- **Подсказка:** Проверьте тип результата и используйте явное преобразование, если необходимо.
- ---
- ### **Задача 6: Преобразование массива символов в число**
- **Условие:** Напишите программу, которая преобразует массив символов `{'1', '2', '3'}` в целое число.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- #include <cstring>
- #include <cstdlib>
- using namespace std;
- int main() {
- char arr[] = "123";
- int num = 0;
- // Здесь нужно добавить код для преобразования массива символов в число
- cout << "Число: " << num << endl; // Результат: 0
- return 0;
- }
- ```
- **Подсказка:** Используйте функцию `std::atoi`.
- ---
- ### **Задача 7: Преобразование указателя базового класса к производному**
- **Условие:** Напишите программу, которая преобразует указатель базового класса к производному с использованием `dynamic_cast`.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- class Base { virtual void dummy() {} };
- class Derived : public Base {};
- int main() {
- Base* b = new Derived();
- Derived* d = b; // Ошибка: требуется преобразование
- if (d) {
- cout << "Преобразование успешно!" << endl;
- } else {
- cout << "Преобразование не удалось." << endl;
- }
- delete b;
- return 0;
- }
- ```
- **Подсказка:** Используйте `dynamic_cast`.
- ---
- ### **Задача 8: Преобразование указателя на `void`**
- **Условие:** Напишите программу, которая преобразует указатель на `int` в указатель на `void`, а затем обратно в указатель на `int`.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- int main() {
- int a = 42;
- void* ptr = &a;
- int* iptr = ptr; // Ошибка: требуется преобразование
- cout << "Значение: " << *iptr << endl;
- return 0;
- }
- ```
- **Подсказка:** Используйте `static_cast`.
- ---
- ### **Задача 9: Преобразование массива байтов в число**
- **Условие:** Напишите программу, которая преобразует массив байтов `{0x01, 0x02, 0x03}` в целое число.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- #include <cstdint>
- using namespace std;
- int main() {
- uint8_t bytes[] = {0x01, 0x02, 0x03};
- uint32_t num = 0;
- // Здесь нужно добавить код для преобразования массива байтов в число
- cout << "Число: " << num << endl; // Результат: 0
- return 0;
- }
- ```
- **Подсказка:** Используйте побитовые операции.
- ---
- ### **Задача 10: Удаление `const` с помощью `const_cast`**
- **Условие:** Напишите программу, которая удаляет `const` из переменной `a` и изменяет её значение.
- **Заготовка кода:**
- ```cpp
- #include <iostream>
- using namespace std;
- int main() {
- const int a = 5;
- int* ptr = &a; // Ошибка: требуется преобразование
- *ptr = 10;
- cout << "Значение a: " << a << endl; // Поведение не определено
- return 0;
- }
- ```
- **Подсказка:** Используйте `const_cast`.
Advertisement
Add Comment
Please, Sign In to add comment