You are on page 1of 4

Лабораторна робота №2.

Програмування розгалужених алгоритмів


мовою C# .NET
Приклад 2.1. Скласти програму для визначення найменшого із
чотирьох заданих чисел a, b, c, d . Використати функцію для
визначення меншого із двох заданих чисел.
Розв’язок
using System;
namespace MinABCD
{
class Program
{
public static void Main(string[] args)
{ Console.WriteLine("Визначення найменшого
із чотирьох заданих чисел ");
double a,b,c,d;
Console.Write("Введiть значення a = ");
a = double.Parse(Console.ReadLine());
Console.Write("Введiть значення b = ");
b = double.Parse(Console.ReadLine());
Console.Write("Введiть значення c = ");
c = double.Parse(Console.ReadLine());
Console.Write("Введiть значення d = ");
d = double.Parse(Console.ReadLine());
double min = MinXY( MinXY(a,b),MinXY(c,d));
Console.WriteLine(
"Найменше із {0},{1},{2},{3} = {4}",a,b,c,d,min);
}
static double MinXY(double x, double y)
{double m;
if (y > x) m = x;
else m = y;
Console.WriteLine(
"Мінімум iз {0} та {1} дорiвнює {2}", x, y, m);
return m ;
}
}
}
Зауваження. Умовний оператор може записуватись всередині
формул у вигляді тернарної операції:
double m = (y > x) ? x : y;

8
Приклад 2.2. Визначити, яке з двох заданих чисел x та y менше, а яке
більше. Скласти програму без використання умовного оператора.
Розв’язок.
double min = (x + y) / 2 – Math.Abs(x - y)/2;
double max = (x + y) / 2 + Math.Abs(x - y)/2;
Зауваження. Насправді умовний оператор неявно використовується
при обчисленні функції Abs(x) :
if (x<0) Abs = -x ; else Abs = x
Приклад 2.3. Скласти програму для знаходження коренів
квадратного рівняння a*x*x+b*x+c=0
Розв’язок.
using System;
namespace SquareEquation
{class Program
{public static void Main(string[] args)
{ Console.WriteLine(
"Розв’язування квадратного рівняння");
double a,b,c,d;
Console.Write("Введiть значення a = ");
a = double.Parse(Console.ReadLine());
Console.Write("Введiть значення b = ");
b = double.Parse(Console.ReadLine());
Console.Write("Введiть значення c = ");
c = double.Parse(Console.ReadLine());
d =b*b-4*a*c;
if (d<0)
{d = Math.Sqrt(-d);
double re = -b/(2*a);
double im = d/(2*a);
Console.WriteLine( "Комплексні корені
x1 = {0}+{1}i, x2 = {0}-{1}i",re,im);
}
else
{d = Math.Sqrt(d);
double x1 = (-b+d)/(2*a);
double x2 = (-b-d)/(2*a);
Console.WriteLine(
"Дійсні корені x1 = {0}, x2 = {1}", x1, x2);
}
}
}
}

9
Завдання 2.1. Скласти програму для знаходження всіх дійсних
коренів біквадратного рівняння та обчислення їх кількості
a*x*x*x*x+b*x*x+c=0 або a*z*z+b*z+c=0 , z=x*x

Календарні розрахунки
Приклад 2. 4. Скласти програму для визначення дня тижня для
заданої дати ХХ та ХХІ століть.
Розв’язок. Враховуючи, що 31 грудня 1989 року була неділя,
знайдемо кількість днів, яка пройшла від початку двадцятого сторіччя
до заданої дати. Потім за залишком від ділення на 7 можна визначити
день тижня.
При цьому календарні розрахунки (обчислення кількості
пройдених днів) можна значно спростити, якщо початок року
перенести з 1 січня на 1 березня. Тоді кожен з пройдених 11 місяців
матиме 30 або 31 день і з допомогою множення числа 30,59 на
кількість пройдених від 1 березня місяців і виділення цілої частини
одержаного добутку дістанемо точне число днів за скоректовану
кількість місяців. Додавши цілу частину добутку 365,25 на кількість
пройдених років і число днів за останній місяць, отримаємо шукану
кількість днів.
Наведений алгоритм коректно працює для дат ХХ і ХХІ
століть. Для інших століть потрібно враховувати високосні сторіччя за
григоріанським календарем: якщо номер століття ділиться націло на 4,
то останній рік має 366 днів, якщо ні , то – 365. Наприклад, 1600, 2000
рік - 366 днів, 1700,1800,1900,2100 – 365.
using System;
namespace XX_XXI_Century
{ class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Календарні розрахунки");
int day, month, year;
Console.Write("Введiть число day = ");
day = int.Parse(Console.ReadLine());
Console.Write("Введiть місяць month = ");
month = int.Parse(Console.ReadLine());
Console.Write("Введiть рік year = ");
year = int.Parse(Console.ReadLine());
int cor = ( 12 -month ) / 10 ;
int year1 = year - cor ;

10
int month1 = month + 12 * cor - 2 ;
int number = (int)( (double)((year1-1900)*365.25))
+(int)((double)( month1 * 30.59 )) + day + 29 ;
int dayOfWeek = number % 7 ;
switch (dayOfWeek)
{
case 0:
Console.WriteLine("Sunday");
break;
case 1:
Console.WriteLine("Monday");
break;
case 2:
Console.WriteLine("Tuesday");
break;
case 3:
Console.WriteLine("Wednesday");
break;
case 4:
Console.WriteLine("Thursday");
break;
case 5:
Console.WriteLine("Friday");
break;
case 6:
Console.WriteLine("Saturday");
break;
}
}
}
}
Завдання 2.2. Скласти програму для визначення відстані (кількості
днів) між двома заданими датами ХХ та ХХІ століть. Обчислити
кількість прожитих Вами днів.

11

You might also like