Проблема с выводом программы
Требовалось создать текстовый файл с помощью объекта класса StreamWriter.
- Занести в него 10 строк, в каждой строке три числа – длины сторон треугольника через пробел. Значения создавать с помощью датчика случайных чисел (объекта класса
Random). - Создайте список
listтипаList<Тriangle>. Используя объект классаSteamReader, прочитайте содержимое текстового файла, преобразуйте в требуемый формат и занесите в списокlist. - Отсортируйте список в порядке убывания значений. Выведите содержимое списка – длины сторон треугольников на консоль. В одной строке выводятся длины сторон, периметр и площадь треугольника.
Код для класса Program
class Program
{
static void Main(string[] args)
{
string list_1 = "TextFile1.txt";
StreamWriter f = new StreamWriter(list_1);
Random rnd = new Random();
double n1 = 0, n2 = 0, n3 = 0;
for (int i = 0; i < 10; i++)
{
n1 = rnd.Next(100);
n2 = rnd.Next(100);
n3 = rnd.Next(100);
f.WriteLine(n1 + " " + n2 + " " + n3);
Console.WriteLine(n1 + " " + n2 + " " + n3);
}
Console.WriteLine();
f.Close();
string path1 = "TextFile1.txt";
List<Triangle> list = new List<Triangle>();
StreamReader g = new StreamReader(@path1);
for (int j = 0; j < 10; j++)
{
list.Add(new Triangle(n1, n2, n3));
}
list.Sort();
list.Reverse();
Console.WriteLine("Сортировка по убыванию");
foreach (Triangle x in list)
Console.Write(x + " ");
g.Close();
}
}
для класса Тriangle:
public class Triangle : IComparable
{
double a, b, c;
double perimeter;
public double A
{
get
{
return a;
}
set
{
a = value;
}
}
public double B
{
get
{
return b;
}
set
{
b = value;
}
}
public double C
{
get { return c; }
set { c = value; }
}
public Triangle(double a, double b, double c)//разносторонний
{
this.a = a;
this.b = b;
this.c = c;
}
// Вычисление периметра
public double Perimeter()
{
return perimeter = a + b + c;
}
// Вычисление площади
public double Square()
{
// Вычисление по формуле Герона
double result = 0.25 * Math.Sqrt((a + b + c)
* (a + b - c)
* (a + b - c)
* (a + b - c));
return result;
}
public override string ToString()
{
return A.ToString();
}
public int CompareTo(object p)
{
Triangle c = (Triangle)p;
if (A > c.A) return 1;
if (a < c.A) return -1;
return 0;
}
}
Должно выводить 10 строк, в каждой - длины сторон, периметр и площадь, а выводит 1 длину 10 раз.
Не могу исправить ошибку.