using System.Globalization; public class Program { private static void Main() { double[] inputArray = ReadData(@"..\..\..\..\TestData\input_data.txt"); Console.WriteLine($"Input data: [{string.Join("; ", inputArray)}]"); var outputData = ArrayProc(inputArray); WriteToFile(outputData!, "output_data_csharp.txt"); var minValue = SearchMinValue(outputData!); Console.WriteLine($"Output data: [{(outputData != null ? string.Join(" ; ", outputData) : "null")}]"); WriteToFile(minValue!, "min_value_csharp.txt"); Console.WriteLine($"Min value: {minValue.ToString()}"); } private static void WriteToFile(double[] data, string filename) { if (data == null) return; using (StreamWriter sw = new StreamWriter(filename)) { foreach (var value in data) sw.WriteLine(value.ToString(CultureInfo.InvariantCulture)); } } private static void WriteToFile(double? data, string filename) { if (data == null) return; File.WriteAllText(filename, data.Value.ToString(CultureInfo.InvariantCulture) + Environment.NewLine); } public static double[] ReadData(string txtFile) { string[] lines = File.ReadAllLines(txtFile); if (lines.Length == 0 || lines[0] == "None") return new double[0]; double[] data = new double[lines.Length]; for (int i = 0; i < lines.Length; i++) { data[i] = double.Parse(lines[i], CultureInfo.InvariantCulture); } return data; } public static double? SearchMinValue(double[] inputData) { if (inputData == null) return null; if (inputData.Length == 0) return null; var minValue = inputData[0]; int i = 1; while (i < inputData.Length) { if (inputData[i] < minValue) minValue = inputData[i]; i++; } return minValue; } public static double[]? ArrayProc(double[] inputData) { double[] outputArray; int pairs = 0; int n = inputData.Length - 1; int i = 0; while (i <= n / 2) { if (i + 8 <= n) pairs++; i++; } if (pairs == 0) return new double[0]; outputArray = new double[pairs]; int j = 0; i = 8; while (j < outputArray.Length) { outputArray[j] = inputData[i] * inputData[i - 8]; j++; i++; } if (outputArray.Length % 2 != 0) { int centralIdx = outputArray.Length / 2; double centralItem = outputArray[centralIdx]; outputArray[centralIdx] = centralItem * centralItem; } return outputArray; } }