Вывести в стеке название диска с максимальним размером
Не могу вывести название диска с максимальным объемом, выводится только его размер (сам размер наибольшева диска так же нужно выводить)
class Stack
{
public string Disk;
public int Memori_Size;
public Stack next;
}
class Program
{
static void Main()
{
Stack head = null;
Stack current = null;
Console.WriteLine("Ви бажаєте створити стек (y-так)");
string n = Console.ReadLine();
int count = 0;
//Створення стеку
while (n == "y")
{
current = new Stack();
Console.Write("Назва диска: ");
current.Disk = Console.ReadLine();
Console.Write("Розмiр диска (Gb): ");
current.Memori_Size = int.Parse(Console.ReadLine());
current.next = head;
head = current;
count++;
Console.WriteLine("Ви бажаєте продовжити введення елементiв (y-так)");
n = Console.ReadLine();
}
Console.WriteLine("Кiлькiсть елементiв в стеку: {0}", count);
//Перегляд вмісту стеку
//Стек не знищується
current = head;
while (current != null)
{
Console.WriteLine($"Диск: {current.Disk}\tРозмiр бал: {current.Memori_Size}");
current = current.next;
}
Console.WriteLine("\nВведiть вiдомостi про новий диск:");
//Додавання елемента в стек
current = new Stack();
Console.Write("Назва диска: ");
current.Disk = Console.ReadLine();
Console.Write("Розмiр диска (Gb): ");
current.Memori_Size = int.Parse(Console.ReadLine());
current.next = head;
head = current;
count++;
Console.WriteLine("Количество елементов в стеку: {0}", count);
current = head;
while (current != null)
{
Console.WriteLine($"Диск: {current.Disk}\tРазмер бал: {current.Memori_Size}");
current = current.next;
}
int max_value = int.MinValue;
while (head != null)
{
if (head.Memori_Size > max_value)
max_value = head.Memori_Size;
head = head.next;
}
Console.WriteLine("Диск з максимальним размером: {0}", max_value);
Console.WriteLine("\nСтек знищено");
Console.ReadLine();
}
Также не могу посчитать среднее арифметическое диске, пока программа делает так: добавляет останий элемент столько, сколько всех элементов в стеке и делит на их количество, а нужно чтобы добавлялся каждый элемент в стеке
current = head;
Stack average = current;
double sum = 0;
while (current != null)
{
sum += average.Memori_Size;
current = current.next;
}
Console.WriteLine("Среднее арифметичиское дисков: {0}", sum/count);
Console.ReadLine();
Ответы (1 шт):
Автор решения: Igor
→ Ссылка
Stack current = head;
Stack max = current;
while (current != null)
{
if (current.Memori_Size > max.Memori_Size)
max = current;
current = current.next;
}
Console.WriteLine("Диск з максимальним размером: {0} - {1}", max.Disk, max.Memori_Size);
Console.ReadLine();