using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace task3 { class Program { /* * Функция print выполняет вывод значений массива a типа double в консоль * */ public static void print(double[] a) { for (int i = 0; i < a.Length; i++) { Console.Write("{0}\t", a[i]); } Console.Write("\n"); } /* * Функция interpolation выполняет алгоритм линейной интерполяции заданной функции * x0 - параметр в котором храниться введённое в консоли значение относительно которого будет вычисляться значение функции * y0 - переменная в которой будет сохраняться вычисленное значение функции после интерполяции * x и y - исходные массивы значений аргументов и функции * value - переменная типа bool, которая используется в условии вывода сообщения пользователю в зависимости от результата выполнения функции * */ public static void interpolation(double x0, double y0, double[] x, double[] y, bool value) { for (int i = 0; i < x.Length; i++) { //ищем первый элемент исходного массива аргументов, который будет выполнять условие //для определения интервала для заданного пользователем значения x0 if (x0 < x[i]) { //вычисляем значение функции y0 = y[i - 1] + ((y[i] - y[i - 1]) / (x[i] - x[i - 1])) * (x0 - x[i - 1]); value = true; break; } } //Условие вывода сообщения с результатом выполнения интерполирования if (value == true) { Console.WriteLine("\nПри аргументе x0 = {0:f2} функция принимает значение F(x) = {1:f3}", x0, y0); } else { Console.WriteLine("\nВведенное значение аргумента x0 = {0} лежит вне границ функции F(x)", x0); } } /* Приложение В2 * Функция FindMax выполняет поиск максимального значения массива аргументов для определения допустимого интервала введенного значения x0 * a - массив поиска * max - переменная, в которой храниться найденное значение * */ public static double FindMax(double[] a, double max) { max = a[0]; for (int i = 0; i < a.Length; i++) { if (max < a[i]) max = a[i]; } return max; } /* * Функция FindMin аналогичная функции FindMax, только здесь выполняется поиск минимального значения * */ public static double FindMin(double[] a, double min) { min = a[0]; for (int i = 0; i < a.Length; i++) { if (min > a[i]) min = a[i]; } return min; } static void Main(string[] args) { //Табличные значения аргументов и значений функции double[] x = new double[] { 0, 5, 10, 15, 20, 25, 30, 40, 50, 60, 70 }; double[] y = new double[] { 40.0, 22.5, 14.6, 10.2, 7.5, 6.0, 5.0, 3.8, 3.0, 2.7, 2.7 }; //вывод в консоль массивов x и y print(x); print(y); // переменная infinity необходима для организации бесконечно цикла работы программы bool infinity = true; string user_command = ""; // в данную переменную запоминается введенная команда в консоли пользователем //организация бесконечно цикла выполнения программы выход из которой происходит при вводе определенной команды while (infinity) { System.Console.Write("\nПожалуйста, введите одну из команд:\nstart -начало выполнения программы;\nexit - выход из программы;\n\n>>"); user_command = System.Console.ReadLine(); switch (user_command) // определение введенной команды { //условия работы программы при вводе команды start case "start": { double max = 0, min = 0; max = FindMax(x, max); min = FindMin(x, min); Console.Write("Введите аргумент x0 лежащий в отрезке [{0}, {1}]\n x0 = ", min, max); double x0 = double.Parse(Console.ReadLine()); // считывание значения x0 введенного пользователем в консоли double y0 = 0; bool value = false; Console.Write("\n"); interpolation(x0, y0, x, y, value); // выполнение функции break; } //условия работы программы при вводе команды exit case "exit": { infinity = false; break; } } } } } }