Как сделать корень в си шарп

Обновлено: 30.06.2024

В этом уроке мы поговорим об арифметических и логических операциях, без которых сложно представить любую программу.

Операция Запись
Сложение a + b
Вычитание a - b
Деление a / b
Умножение a * b
Нахождение остатка от деления a % b


При делении двух целых чисел результатом также будет целое число. Например при делении 9/5 результатом будет число 1. Чтобы получить точный результат с десятичной точкой, нужно чтобы делимое и/или делитель были типа float или double. Например, при делении 9 / 5f (суффикс f указывает, что данная константа типа float) результатом будет 1.8.

Чтобы повысить приоритет операции, используются скобки, как и в обычной арифметике.


static void Main(string[] args)
string str1 = "Hello", str2 = "World";
Console.WriteLine(str1 + ", " + str2); //выводит на экран "Hello, World"
>


Унарные операторы в Си-шарп

Инкрементация увеличивает операнд на единицу, а декрементация - уменьшает на единицу.


static void Main(string[] args)
int a = 0, b = 5;
a++; // a=1;
b--; // b=4
>


Инкрементация и декрементация может быть префиксной и постфиксной. При Префиксной форме оператор стоит перед операндом, а при постфиксной-после.
Префиксная форма сначала увеличивает(уменьшает) значение, и после этого выполняются остальные действия, а при постфиксной форме наоборот - сначала выполнятся все действия, а после увеличится(уменьшится) значение:


static void Main(string[] args)
int a = 2, b = 3, c, d = 3;
c = a + ++b; // c = 6, сначала инкремент, потом сложение
с = a + d++; // c = 5, сначала сложение, потом инкремент
>


Везде где можно использовать инкрементацию/декрементацию стоит это делать, так как она работает быстрее оператора сложения/вычитания.

В Си-шарп также есть возможность использования краткой формы выражения:


static void Main(string[] args)
int a = 2, b = 3;
a += b; // равноценно выражению a = a + b;
a -= b; // равноценно выражению a = a - b;
a *= b; // равноценно выражению a = a * b;
a /= b; // равноценно выражению a = a / b;
a %= b; // равноценно выражению a = a % b;
>


Класс Math

В классе Math собраны все основные тригонометрические функции, функция возведение числа в степень, нахождение квадратного корня и другие.

Для возведения числа в степень, используется функция Pow([число], [степень]);


static void Main(string[] args)
float a, b = 9;
a = (float) Math.Pow(b, 2); // возводим переменную b в степень 2. Pow() возвращает результат в типе данных double, поэтому мы тут применили явное преобразование. Конечно, можно было обойтись без преобразования, объявив переменную a типа double
Console.WriteLine(a); // выводит на экран число 81
Console.ReadKey();
>


Для нахождения квадратного корня служит функция Sqrt([число]); возвращаемый результат также в типе данных double


static void Main(string[] args)
double a, b = 9;
a = Math.Sqrt(b);
Console.WriteLine(a); // выводит на экран число 3
Console.ReadKey();
>


Для нахождения косинуса и синуса используются cos([угол в радианах]) и sin([угол в радианах]) соответственно.

180 [градусов] = пи [радиан].

Чтобы перевести градусы в радианы, необходимо значение в градусах умножить на Пи и разделить на 180. Число Пи объявлено константой в классе Math.


static void Main(string[] args)
double a;
a = Math.Cos(60 * Math.PI / 180); // переводим 60 градусов в радианы
Console.WriteLine(a); // выводит на экран 0.5
a = Math.Sin(60 * Math.PI / 180);
Console.WriteLine(a); // выводит на экран 0.866…
Console.ReadKey();
>


Логические операторы в Си-шарп

Логические операторы в Си-шарп служат для работы с логическим типом данных (bool), который может принимать только два значения – true или false. Их можно разделить на две категории: простые логические операторы и операторы сравнения.

В Си-шарп есть следующие логические операторы:


static void Main(string[] args)
bool a, b = true, c = false;
a = !b; // a = false
a = !c; // a = true
>


static void Main(string[] args)
bool a, bTrue = true, bFalse = false;
a = bFalse || bFalse; // a = false
a = bFalse || bTrue; // a = true
a = bTrue || bFalse; // a = true
a = bTrue || bTrue; // a = true
>


static void Main(string[] args)
bool a, bTrue = true, bFalse = false;
a = bFalse && bFalse; // a = false
a = bFalse && bTrue; // a = false
a = bTrue && bFalse; // a = false
a = bTrue && bTrue; // a = true
>


К операторам сравнения относятся:


Логические операторы в первую очередь используются в условных операторах, о которых мы поговорим в следующем уроке.

Домашнее задание

Есть прямоугольный треугольник с катетами а=5, b=7. Найдите площадь треугольника, s=?. Используя теорему Пифагора, найдите длину гипотенузы, с=?. Кроме этого, найдите длину гипотенузы еще и с помощью теоремы косинусов. Угол между катетами, думаю и так понятен, 90 градусов :) Не помните формулу - ищите в поисковике.

Урок 4

Условные операторы в Си-шарп. Тернарный оператор

Условные операторы служат для ветвления программы. В зависимости от некоторого условия выполняется тот или другой набор команд.

Данный оператор имеет следующую структуру:

if ([условное выражение])
Блок кода, который нужно выполнить при удовлетворении условия, [условное выражение] = true (истина)
>
else
Блок кода, который нужно выполнить при неудовлетворении условия, [условное выражение] = false (ложь)
>

Часть else не является обязательной и может отсутствовать.

static void Main(string[] args)
int a;
Console.WriteLine("Введите число:");
a = Convert.ToInt32(Console.ReadLine()); // вводим данные с клавиатуры*
if (a % 2 == 0) //проверяем число на чётность путем нахождения остатка от деления числа на 2
Console.WriteLine("Число " + a + " - чётное");
>
else
Console.WriteLine("Число " + a + " - нечётное");
>
Console.ReadKey();
>


* Функция Console.ReadLine() позволяет ввести данные с клавиатуры. Данные вводятся как строка, а так как нужно число, мы преобразовываем ее в числовой тип. Для преобразования мы используем функцию Convert.ToInt32().

Если после if или else необходимо выполнить лишь одну команду, фигурные скобки можно опускать:

if ([условное выражение])
[команда1] // команда1 выполнится лишь если условное выражение истинно
[команда2]// команда2 выполнится в любом случае

Оператор if может иметь несколько условий:

if ([логическое выражение1])

else if ([логическое выражение2])

else

Пример программы, которая определяет, какое из двух введенных чисел больше:

static void Main(string[] args)
int a, b;
Console.WriteLine("Введите первое число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второе число:");
b = Convert.ToInt32(Console.ReadLine());
if (a > b)
Console.WriteLine("Первое число больше второго");
else if (a 40) //если температура меньше -20 или больше 40
Console.WriteLine("Вам лучше посидеть дома!");
else
Console.WriteLine("Можете идти гулять");
Console.ReadKey();
>


Оператор switch

switch (выражение)
case значение1:
блок1;
break;
case значение2:
блок2;
break;
.
case значениеN:
блокN;
break;
default:
блокN+1;
break;
>

Выражение сравнивается последовательно со значениями. Если выражение равно значению – выполняется соответственный блок кода и при достижении ключевого слова break оператор switch заканчивает работу. Если выражение не будет соответствовать ни одному значению, тогда выполнится блок после default.

Пример программы с использованием switch, которая выводит на экран название дня недели соответственно вводимому порядковому номер дня:

static void Main(string[] args)
int a;
Console.WriteLine("Введите порядковый номер дня недели:");
a = Convert.ToInt32(Console.ReadLine());
switch (a)
case 1:
Console.WriteLine("Понедельник");
break;
case 2:
Console.WriteLine("Вторник");
break;
case 3:
Console.WriteLine("Среда");
break;
case 4:
Console.WriteLine("Четверг");
break;
case 5:
Console.WriteLine("Пятница");
break;
case 6:
Console.WriteLine("Суббота");
break;
case 7:
Console.WriteLine("Воскресенье");
break;
default :
Console.WriteLine("Ошибка");
break;
>
Console.ReadKey();
>

Этот оператор используется для сокращения объема кода. Им можно заменять простые по сложности операторы if-else. Тернарный оператор имеет такую структуру:

логическое выражение ? выражение1 : выражение2

Сначала вычисляется логическое выражение. Если оно истинно, то вычисляется выражение1, в противном случае - вычисляется выражение2.

static void Main(string[] args)
int a;
Console.WriteLine("Введите число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine( a % 2 == 0 ? "Число чётное" : "Число нечётное" );
Console.ReadKey();
>

static void Main(string[] args)
int a, b, max;
Console.WriteLine("Введите первое число:");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введите второе число:");
b = Convert.ToInt32(Console.ReadLine());
max = a > b ? a : b;
>


Домашнее задание

1) С клавиатуры вводятся два числа – количество забитых голов хозяевами и гостями в футбольном матче. Вывести на экран результат игры – победили хозяева/гости/ничья.

Пожалуйста, приостановите работу AdBlock на этом сайте.

Математические вычисления не ограничиваются лишь арифметическими действиями. Кроме них, можно ещё встретить корни, модули, логарифмы, тригонометрические функции и пр. Научимся же использовать подобные функции в своих программах.

Для использования математических функций нужно подключить заголовочный файл math.h . В ней определено много различных функций, но мы пока рассмотрим следующие:

Некоторые математические функции

fabs(x) модуль числа x
sqrt(x) квадратный корень из числа x
sin(x) синус числа x (х в радианах)
cos(x) косинус числа x (х в радианах)
pow(x, y) вычисление x y
exp(x) вычисление e x
log(x) натуральный логарифм числа x
log10(x) десятичный логарифм числа x

  • Все функции возвращают значение типа double .
  • Параметры функций – вещественные числа( double ), но можно передавать и целые числа. При этом произойдёт неявное преобразование типа . Компилятор из целого числа, например 3, сделает вещественное 3.0.

Примеры.
Даны длины катетов прямоугольного треугольника. Вычислить длину гипотенузы. Простая задачка на знание теоремы Пифагора.

Вычислить синус угла ввёденного с клавиатуры. Угол вводится в градусах.

В этой программе есть о чём поговорить. Тригонометрические функции, которые определены в math.h работают с радианной мерой угла. Людям же привычнее работать с градусами. Поэтому в данной программе мы предварительно перевели значение из градусов в радианы. Если этого не сделать, результат получится неправильным. Проверьте это самостоятельно.

Неявное преобразование типов

При явном преобразовании типа мы в скобках перед значением указывали тип, к которому нужно привести данное значение. В неявном преобразовании этого делать не нужно. Компилятор автоматически подберёт необходимый тип.

Неявное преобразование типов осуществляется в следующих случаях:

  1. перед передачей аргументов в функцию (как в нашем примере с корнем. Листинг 1.)
  2. выполнение арифметических операций с разными типами аргументов
  3. перед выполнением присваивания

Правила неявного преобразования типов

  • если выполняются арифметические операции с разными типами аргументов. Оба аргумента приводятся к большему типу.
    Порядок типов: int float double
  • при присваивании. Значение справа от оператора присваивания приводится к типу переменной слева от оператора присваивания. При этом, если больший тип присваивается меньшему, то может произойти потеря точности.

int+float будет автоматически преобразовано к float+float
float/int будет автоматически преобразовано к float/float
double*float будет преобразовано к double*double
int = double double будет преобразовано к int с потерей дробной части
float = int int будет преобразовано к float

Практика

Решите предложенные задачи:


Для удобства работы сразу переходите в полноэкранный режим

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Создание пользовательского интерфейса калькулятора

Калькулятор также содержит кнопки. Всего их 28 штук. Пользовательский интерфейс представлен на рисунке 1.

Рисунок 1. Интерфейс калькулятора

Кнопка “+/-” меняет знак операнда на противоположный.

Кнопка MRC, а также кнопки M+, M-, M×, M÷, реализуют отдельный регистр памяти калькулятора и команды для управления им. Что такое MRC можно прочитать – здесь.

Реализация интерфейса класса

Поскольку наш калькулятор будет написан в рамках парадигмы ООП (объектно-ориентированного программирования), то начнем кодирование с описания структуры интерфейса для класса, реализующего математические операции программы.

Добавим в проект класс InterfaceCalc.cs и определим в созданном файле интерфейс InterfaceCalc.

Для выполнения математических операций понадобится два операнда: a и b (например, a + b). Операнд a придется хранить в памяти калькулятора, пока пользователь будет вводить второй аргумент операции. Для сохранения числа a объявим прототип метода void Put_A(double a), для очистки – void Clear_A(). Для умножения, деления, сложения и вычитания чисел a и b соответственно понадобятся методы: double Multiplication(double b), double Division(double b), double Sum(double b), double Subtraction(double b). Вычисление корня степени b из a: double SqrtX(double b). Возведение числа a в степень b: double DegreeY(double b). Вычисление квадратного корня: double Sqrt(). Возведение числа a в квадрат: double Square(). Вычисление факториала a!: double Factorial(). Теперь объявления методов для работы с регистром памяти (MRC) калькулятора. Показать содержимое памяти и очистить его: double MemoryShow(), void Memory_Clear(). M×, M÷, M+ и M- к регистру соответственно: void M_Multiplication(double b), void M_Division(double b), void M_Sum(double b), void M_Subtraction(double b).

Создание класса, реализующего интерфейс InterfaceCalc

Теперь добавим в калькулятор класс, который будет реализовывать написанный ранее интерфейс. Для этого в проекте создадим класс Calc : InterfaceCalc. Как вы видите, здесь используется наследование (оператор “двоеточие”). В данном классе напишем реализацию всех методов, требуемых спецификацией нашего интерфейса.

Я знаю, как получить квадратный корень С помощью .

Как я могу получить квадратный корень ряда?

sqrt означает "квадратный корень", а" квадратный корень " означает повышение до степени 1/2 . Нет такой вещи, как "квадратный корень с корнем 2" или "квадратный корень с корнем 3". Для другие корни, вы меняете первое слово;в вашем случае, вы ищете, как выполнить куб болеть.

перед C++11 для этого нет конкретной функции, но вы можете вернуться к первым принципам:

  • квадрат root: std::pow(n, 1/2.) (или std::sqrt(n) )
  • кубический корень: std::pow(n, 1/3.) (или std::cbrt(n) С C++11)
  • четвертый корень: std::pow(n, 1/4.)
  • etc.

если вы ожидаете передать отрицательные значения для n , не std::pow решение он не поддерживает отрицательные входы с дробными показателями, и поэтому std::cbrt был добавлено:

Б. Н., Что . - это очень важно, потому что в противном случае 1/3 использует целочисленное деление и приводит к 0 .

в C++11 std::cbrt был введен как часть мат библиотека, вы можете см.

Читайте также: