Добрый вечер! Я тут решаю задачку по C++, не зная C++
И нужно крч написать, что выдаст программа, которую я оставлю с низу
По всем математическим законам, и по моему личному мнению, там должно быть 2,4
НООО!!! Абсолютно все компиляторы по C++, пишут что там ответ 12.
Объясните пожалуйста, добрые люди, как так?
#include <iostream>
using namespace std;
int main() {
int x = 12;
int y = 5;
int z = x / y;
int m = x % 2;
int n = x;
x = z;
z = n;
y = m*x + z;
cout<< y<< " ";
}
Причем, я попытался её в питон переписать, и сука, там тоже 2,4.
Как я понимаю, я чего то не понимаю
Чего-то не вижу
C/C++
Почему 12, а не 2.4?????
Добрый вечер. В языке программирования C++, при делении двух целых чисел получаемое число тоже будет целым. То есть, десятичная часть просто отбрасывается.
В вашем случае, 12 делится на 5. Математически результат этой операции равен 2.4, но, поскольку мы работаем с целыми числами, результат будет просто 2, а десятичная часть отбрасывается.
Следующая операция -- это %, она возвращает остаток от деления. 12 делится на 2 без остатка, поэтому m будет равняться 0.
Затем вы меняете значения x и z — x становится равным z (то есть 2), а z — n, то есть 12.
Последняя строка вычисления y будет m*x + z, что эквивалентно 0*2 + 12. Это и объясняет, почему выводится число 12 при запуске вашей программы.
В вашем случае, 12 делится на 5. Математически результат этой операции равен 2.4, но, поскольку мы работаем с целыми числами, результат будет просто 2, а десятичная часть отбрасывается.
Следующая операция -- это %, она возвращает остаток от деления. 12 делится на 2 без остатка, поэтому m будет равняться 0.
Затем вы меняете значения x и z — x становится равным z (то есть 2), а z — n, то есть 12.
Последняя строка вычисления y будет m*x + z, что эквивалентно 0*2 + 12. Это и объясняет, почему выводится число 12 при запуске вашей программы.
Улугбек Халмирзаев
Большое спасибо Сергио
int x = 12; // x == 12
int y = 5; // y == 5
int z = x / y; // z == 2 - целочисленное деление c отбрасыванием дробной части
int m = x % 2; // m == 0 - остаток от деления 12 на 2
int n = x; // n == 12
x = z; // x == 2
z = n; // z == 12
y = m*x + z; // 0 * 2 + 12 == 12
Улугбек Халмирзаев
Спасибо вам Андрей, за помощь
14,4
12
5
2
12
5
2
Потому что
Улугбек Халмирзаев
Ты абсолютно прав, в этом то и есть вся суть, но я её не улавливаю.
Вообще, ты очень кратно и точно подобрал слова, к данной проблеме. Ты, возможно, даже не представляешь как это было, прям в самую точку.
Вообще, ты очень кратно и точно подобрал слова, к данной проблеме. Ты, возможно, даже не представляешь как это было, прям в самую точку.
Похожие вопросы
- Почему цикл for срабатывает 2 раза? Код в вопросе
- Задание 4 по Теме Функции. Перегрузка Функций. Рекурсия. На языке программирования C++
- Записи содержат фамилию и 4 оценки. Удалить имеющих 2, 3.
- Помогите пожалуйста составить правильную программу на C++ 12 вариант
- Найти решение уравнения(arccos(x-1)+x^3-4=0) на указанном диапазоне ([0.5;1.9]). используя численный метод-Метод Ньютона
- Помогите пожалуйста с Массивами .В языке С .Заполнил 2-мерный массив N и M случайными числами дальше не понимаю.
- Правильно ли решено задание по Яндекс практикуму на тему Вектор, урок 4 на языке программирования С++ ?
- Написать 4 лёгкие программы на C++.
- Найти сумму всех n-значных чисел (1 ≤n ≤ 4).
- Помогите с 4 задачей на языке си