Содержание
Задача: напишите программу на 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#.