Files
ISTU_TEST_LR1/LR1/AppTesting/Program.cs
2026-03-11 15:48:28 +04:00

152 lines
3.9 KiB
C#

using System.Globalization;
public class Program
{
private static void Main()
{
double[] inputArray = ReadInputData(@"D:\Projects\ISTU_TEST_LR1\LR1\DataGeneration\input_data.txt");
Console.WriteLine($"Input data: [{string.Join("; ", inputArray)}]");
var outputData = ArrayProc(inputArray);
WriteToFile(outputData!, "output_data.txt");
var minValue = SearchMinValue(outputData!);
Console.WriteLine($"Output data: [{(outputData != null ? string.Join(" ; ", outputData) : "null")}]");
WriteToFile(minValue!, "min_value.txt");
Console.WriteLine($"Min value: {minValue.ToString()}");
}
public 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));
}
}
public static void WriteToFile(double? data, string filename)
{
if (data == null) return;
File.WriteAllText(filename, data.Value.ToString(CultureInfo.InvariantCulture) + Environment.NewLine);
}
private static double[] ReadInputData(string txtFile)
{
string[] lines = File.ReadAllLines(txtFile);
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 null;
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;
}
/*
private static double? SearchMinValue(double[] inputData)
{
if (inputData == null || inputData.Length == 0)
return null;
var minValue = inputData[0];
for (int i = 1; i < inputData.Length; i++)
{
if (inputData[i] < minValue)
minValue = inputData[i];
}
return minValue;
}
*/
/*
private static double[]? ArrayProc(double[] inputData)
{
double[] outputArray;
int pairs = 0;
int n = inputData.Length - 1;
for (int i = 0; i <= n / 2; i++)
{
if (i + 8 <= n)
pairs++;
}
if (pairs == 0)
return null;
outputArray = new double[pairs];
for (int i = 8, j = 0; j < outputArray.Length; j++, i++)
{
outputArray[j] = inputData[i] * inputData[i - 8];
}
if (outputArray.Length % 2 != 0)
{
int centralIdx = outputArray.Length / 2;
double centralItem = outputArray[centralIdx];
outputArray[centralIdx] = centralItem * centralItem;
}
return outputArray;
}
*/
}