Содержание
Задача: напишите программу на C#, которая рассчитывает абсолютную разность между n и числом 48, где n — это любое целое число. Если n больше 48, то верните тройную абсолютную разность.
Алгоритм решения
По условиям задачи пользователь должен задать одно целочисленное значение. К целочисленным типам в C# относятся такие типы данных как int
, long
, byte
и так далее. Для решения задачи будем использовать наиболее часто используемый тип данных — int
.
Стоит обратить внимание на следующим момент: по условиям задачи мы должны получить абсолютную разность. То есть результатом вычисления должно быть всегда положительное число. В зависимости от уровня ваших знаний в C#, а также дополнительных требований, предъявляемых к работе, здесь мы можем поступить двумя способами:
- использовать условный оператор
if
для того, чтобы обеспечить вычитание меньшего числа из большего - использовать метод
Math.Abs()
для получения абсолютного значения.
Таким образом, алгоритм работы программы можно представить следующим образом:
- Пользователь вводит с клавиатуры целочисленное значение (
n
) - Рассчитываем абсолютную разность
n-48
. - Проверяем больше ли
n
, чем 48- если больше, то умножаем результат из п.2 на 3 и выводим результат
- иначе — выводим результат из п.2
- конец работы программы
Решение лабораторной работы
Расчёт абсолютной величины с использованием if
using System; namespace AbsValue { internal class Program { static void Main(string[] args) { Console.WriteLine("Введите число: "); //приглашение пользователю ввести число int n = Convert.ToInt32(Console.ReadLine()); //преобразуем введенную пользователем строку в число и присваиваем его значение переменной //считаем абсолютную разность int result; if (n > 48) result = (n - 48) * 3; //n больше 48, значит выводим тройную разность else result = 48 - n; //абсолютная разность - всегда положительна, поэтому меняем n и 48 местами Console.WriteLine(result); } } }
Расчёт абсолютной величины с использованием Math.Abs
В этом случае, условие if
остается тем же, за исключением того, что нам не требуется менять местами n
и 48
:
using System; namespace AbsValue { internal class Program { static void Main(string[] args) { Console.WriteLine("Введите первое число: "); //приглашение пользователю ввести число int n = Convert.ToInt32(Console.ReadLine()); //преобразуем введенную пользователем строку в число и присваиваем его значение переменной //считаем абсолютную разность int result; if (n > 48) result = (n - 48) * 3; //n больше 48, значит выводим тройную разность else result = Math.Abs(n - 48);//получаем абсолютное значение величины Console.WriteLine(result); } } }
Результат работы приложения:
30
18
Или
50
6
Улучшения
Так как по условиям лабораторной работы от нас требуется только вывести результат вычислений, то приведенный выше код можно немного сократить:
using System; namespace AbsValue { internal class Program { static void Main(string[] args) { Console.WriteLine("Введите первое число: "); //приглашение пользователю ввести число int n = Convert.ToInt32(Console.ReadLine()); //преобразуем введенную пользователем строку в число и присваиваем его значение переменной //считаем абсолютную разность if (n > 48) Console.WriteLine((n - 48) * 3);//n больше 48, значит выводим тройную разность else Console.WriteLine(Math.Abs(n - 48));//получаем абсолютное значение величины } } }
Здесь мы просто избавились от лишней переменной result
. При этом на результат работы программы это никак не повлияло.
Итого
Таким образом, для решения лабораторной работы нам потребовались следующие знания основ C#: о типах данных в C#, об арифметических операциях в C#, о логических операторах в C#.