Раздел: Задачи / Простейшие /
Разность по модулю и произведение двух чисел
Основы программирования Каждый профессионал когда-то был чайником. Наверняка вам знакомо состояние, когда “не знаешь как начать думать, чтобы до такого додуматься”. Наверняка вы сталкивались с ситуацией, когда вы просто не знаете, с чего начать. Эта книга ориентирована как раз на таких людей, кто хотел бы стать программистом, но совершенно не знает, как начать этот путь. Подробнее... |
Условие задачи 1.2
Задача 1.2
Даны два целых числа Х и Т. Если они имеют разные знаки, то присвоить Х значение произведения этих чисел, а Т - значение их разности по модулю. Если числа имеют одинаковые знаки, то присвоить Х значение разности по модулю исходных чисел, а Т - значение произведения этих чисел. Новые значения Х и Т вывести на экран.
Задача тоже несложная. “Непонятки” могут возникнуть только в том случае, если вы забыли, что такое разность по модулю (надеюсь, что такое произведение двух целых чисел, вы всё-таки помните))).
Разность по модулю двух чисел
Разность по модулю двух целых чисел (хотя не обязательно целых - это не имеет значения, просто в нашей задаче числа целые) - это, говоря по простому, когда итогом вычисления является модуль разности двух чисел.
То есть сначала выполняется операция вычитания одного числа из другого. А затем вычисляется модуль результата этой операции.
Математически это можно записать так:
А = |(X - Т)|
Если кто забыл, что такое модуль или как его вычислить в Паскале, то см. здесь.
Алгоритм определения знаков двух чисел
Решение задачи в целом довольно простое. Трудность у новичков может вызвать лишь определение знаков двух чисел. То есть надо ответить на вопрос: как узнать, имеют числа одинаковые знаки или разные.
Сначала напрашивается поочерёдное сравнение чисел с нулём. Это допустимо. Но исходный код будет довольно большим. Поэтому более правильно использовать такой алгоритм:
- Умножить числа друг на друга
- Если результат меньше нуля, значит у чисел разные знаки
- Если результат равен нулю или больше нуля, то у чисел одинаковые знаки
Этот алгоритм я выполнил в виде отдельной функции. А сама программа получилась такой, как показано в примерах на Паскале и С++ ниже.
program checknums; var A, X, T : integer; //**************************************************************** // Проверяет, имеют ли числа N1 и N2 одинаковые знаки. Если да, то // возвращает TRUE, иначе - FALSE //**************************************************************** function ZnakNumbers(N1, N2 : integer) : boolean; begin Result := (N1 * N2) >= 0; end; //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** begin Write('X = '); ReadLn(X); Write('T = '); ReadLn(T); if ZnakNumbers(X, T) then //Если числа имеют одинаковые знаки begin A := Abs(X - T); //Получить разность по модулю исходных чисел T := X * T; end else //Если числа имеют разные знаки begin A := X * T; T := Abs(X - T); end; X := A; //Записать в Х значение А WriteLn('X = ', X); //Вывести Х WriteLn('T = ', T); //Вывести Т WriteLn('The end. Press ENTER...'); ReadLn; end.
#include#include using namespace std; int A, X, T; //**************************************************************** // Проверяет, имеют ли числа N1 и N2 одинаковые знаки. Если да, то // возвращает TRUE, иначе - FALSE //**************************************************************** bool ZnakNumbers(int N1, int N2) { return ((N1 * N2) >= 0); } //**************************************************************** // ОСНОВНАЯ ПРОГРАММА //**************************************************************** int main(int argc, char *argv[]) { cout << "X = "; cin >> X; cout << "T = "; cin >> T; if (ZnakNumbers(X, T)) //Если числа имеют одинаковые знаки { A = abs(X - T); //Получить разность по модулю исходных чисел T = X * T; } else //Если числа имеют разные знаки { A = X * T; T = abs(X - T); } X = A; //Записать в Х значение А cout << "X = " << X << endl; //Вывести Х cout << "T = " << T << endl; //Вывести Т system("PAUSE"); return EXIT_SUCCESS; }
Оптимизация
Эту простую программу можно ещё немного упростить, если не использовать функцию и немного переделать исходный код программы. При этом общее количество строк исходного кода немного сократится. Как это сделать - подумайте сами.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на Дзен-канал Подписаться на рассылки по программированию |
Как стать программистом 2.0
Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее... |
Помощь в технических вопросах
Помощь студентам. Курсовые, дипломы, чертежи (КОМПАС), задачи по программированию: Pascal/Delphi/Lazarus; С/С++; Ассемблер; языки программирования ПЛК; JavaScript; VBScript; Fortran; Python и др. Разработка (доработка) ПО ПЛК (предпочтение - ОВЕН, CoDeSys 2 и 3), а также программирование панелей оператора, программируемых реле и других приборов систем автоматизации. Подробнее... |