我的代码到目前为止: 我有三个数组,但只需要前两个数组来计算这个项目的斜率。我在一个文件中读到了3列和'n'行的格式。我已将文件拆分为三个列出的列,现在我需要计算最大绝对值斜率。要扩展,比如我有2个双数组{1,2,3,4,5,6}和{7,8,9,10,11,12},那么数据点是(1,7),(2) ,8)等我们将得到6个数据点,我需要得到它们之间的斜率。最大的绝对值斜率是我们需要返回的斜率。
static void Main(string[] args)
{
string file1 = System.IO.File.ReadAllText(@"C:\file1.txt");
List<double> Array1 = new List<double>();
List<double> Array2 = new List<double>();
List<double> Array3 = new List<double>();
IEnumerable<string> lines = File.ReadLines(@"C:\File1.txt");
foreach (string line in lines)
{
string[] columns = line.Split(',');
if (columns.Length != 3)
{
continue; // skips this line
}
Array1.Add(Convert.ToDouble(columns[0]));
Array2.Add(Convert.ToDouble(columns[1]));
Array3.Add(Convert.ToDouble(columns[2]));
}
static double GreatestSlope(double[] x, double[] y)
{
int size = x.length;
double ret = 0.0;
for( int i = 0; i < size; i++ )
{
for( int j = i+1; j < size; j++ )
{
double slope = (y[j]-y[i])/(x[j]-x[i]);
if( slope > ret )
{
ret = slope;
Console.WriteLine(i);
Console.WriteLine(j);
}
}
return ret;
}
答案 0 :(得分:0)
我假设斜率是指几何坡度。在这种情况下,我们可以循环遍历所有可能性。因为A和B之间的斜率与B和A之间的斜率相同,所以通过使内环仅从i+1
到结尾,可以使代码更有效。
static double GreatestSlope(double[] x, double[] y)
{
int size = x.length; // For security, Math.Min(x.length,y.length) would be better.
double ret = 0.0;
for( int i = 0; i < size; i++ )
{
for( int j = i+1; j < size; j++ )
{
double slope = (y[j]-y[i])/(x[j]-x[i]);
if( slope > ret )
ret = slope;
}
}
return ret;
}