Пути к файлам передаются программе в качестве аргументов!
Одно из заданий это то? что надо сделать, что пути к файлам передаются программе в качестве аргументов!
я знаю что оно делатеся вот так:
//string circleFilePath = args[0];
//string dotsFilePath = args[1];
И когда мы запускаем проект должно быть что-то вроде такого:
dotnet run <path-to-input-file>
dotnet run <path-to-input-file> <path-to-input-file>
а у меня оно пока что делается вот так:
в самом Main:
string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";
string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";
И я не понимаю как сделать... То есть сам проект можно как-то скомпилировать и это уже будет отдельно файл. который запускается не с помощи Visual Studio, а с помощью командной строки? и если эти файлы которые надо подгрузить находятся в той же папке где и сам скомпилированный проектик то мы просто пишем... dotnet run <path-to-input-file>
.
Я просто никогда еще ничего не "компилировал" и даже не знаю что это такое...
using System.Text.Json;
namespace Perfomance_Lab2
{
internal class Program
{
static void Main(string[] args)
{
try
{
string circleFileJson = File.ReadAllText(circleFilePath);
Circle circle = JsonSerializer.Deserialize<Circle>(circleFileJson);
string dotsFilePathJson = File.ReadAllText(dotsFilePath);
Dictionary<string, Dot> dotsDictionary = JsonSerializer.Deserialize<Dictionary<string, Dot>>(dotsFilePathJson);
List<Dot> dots = new List<Dot>(dotsDictionary.Values);
foreach (var dot in dots)
{
double distance = Calculate(circle, dot);
PrintResult(circle, distance);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading the data from json: \n{ex.Message}");
}
}
static double Calculate(Circle circle, Dot dot)
{
double circleX = circle.Dot.X;
double circleY = circle.Dot.Y;
double dotX = dot.X;
double dotY = dot.Y;
return (double)Math.Sqrt(Math.Pow(dotX - circleX, 2) + Math.Pow(dotY - circleY, 2));
}
static void PrintResult(Circle circle, double distance)
{
if(distance < circle.Radius)
Console.WriteLine("The dot is located indise of the circle");
else if(distance > circle.Radius)
Console.WriteLine("The dot is located outside of the circle");
else
Console.WriteLine("The dot is located on the radius of the circle");
}
}
}
Ответы (1 шт):
получилось у меня разобраться и сделать. а сам путь файлам надо указать в:
Project
→ task4 Properties
→ Debug General
→ Open debug launch profile UI
→ in Command Line Arguments
и туда вставляем ссылку на файлы.
using System.Text.Json;
namespace task2
{
internal class Program
{
static void Main(string[] args)
{
// это для себя
// string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";
// string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";
if (args.Length < 2)
{
Console.WriteLine("Usage: dotnet run <circleFilePath> <dotsFilePath>");
return;
}
// путь к файлу закинул в Project - task4 Properties - Debug General - Open debug launch profile UI - in Command Line Arguments два пути там:
// string circleFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File1.json";
// string dotsFilePath = "C:\\Users\\Oberg\\OneDrive\\Desktop\\PortFolio\\2024\\ПерфомансЛаб\\Perfomance-Lab\\Perfomance-Lab2\\File2.json";
string circleFilePath = args[0];
string dotsFilePath = args[1];
try
{
string circleFileJson = File.ReadAllText(circleFilePath);
Circle circle = JsonSerializer.Deserialize<Circle>(circleFileJson);
string dotsFilePathJson = File.ReadAllText(dotsFilePath);
Dictionary<string, Dot> dotsDictionary = JsonSerializer.Deserialize<Dictionary<string, Dot>>(dotsFilePathJson);
List<Dot> dots = new List<Dot>(dotsDictionary.Values);
foreach (var dot in dots)
{
double distance = Calculate(circle, dot);
PrintResult(circle, distance);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error reading the data from json: \n{ex.Message}");
}
}
static double Calculate(Circle circle, Dot dot)
{
double circleX = circle.Dot.X;
double circleY = circle.Dot.Y;
double dotX = dot.X;
double dotY = dot.Y;
return (double)Math.Sqrt(Math.Pow(dotX - circleX, 2) + Math.Pow(dotY - circleY, 2));
}
static void PrintResult(Circle circle, double distance)
{
if (distance < circle.Radius)
Console.WriteLine("The dot is located indise of the circle");
else if (distance > circle.Radius)
Console.WriteLine("The dot is located outside of the circle");
else
Console.WriteLine("The dot is located on the radius of the circle");
}
}
}