mirror of
https://github.com/KhasanovAMdev/ISTU_TEST_LR1.git
synced 2026-04-03 21:59:35 +04:00
105 lines
2.8 KiB
C#
105 lines
2.8 KiB
C#
using System.Globalization;
|
|
|
|
public class Program
|
|
{
|
|
private static void Main()
|
|
{
|
|
double[] inputArray = ReadData(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "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;
|
|
}
|
|
} |