No necesitas meter (enqueue) cada valor por separado (nombre y nota) ya que forman parte de la misma variable (alumno), con que metas alumno es suficiente. De hecho, lo que haces es meter 2 veces el mismo valor a la cola. Lo que debes hacer es un new Dato() para cada nombre diferente que vayas a meter.
Para sacar los datos de la cola es lo mismo, no necesitas sacar los valores de nombre y nota por separado, con que saques alumno es mas que suficiente.
Normalmente no hago las tareas, solo doy pistas, pero en vista de que parece que estas completamente "encolado", perdon, enredado, te dejo la manera en que lo debes hacer. Analizalo.
using System;
using System.Collections.Generic;
using System.IO;
public class Dato
{
public string nombre;
public int nota;
}
public class Colas
{
static void Main()
{
Queue
<Dato
> alumne
= new Queue
<Dato
>(); Dato alumno;
string nombre1;
int nota1;
do
{
Console.WriteLine("Introdueix el nom de l'alumne:");
nombre1 = Console.ReadLine();
Console.WriteLine("Introdueix la nota de l'alumne:");
nota1 = Int32.Parse(Console.ReadLine());
// Debes hacer new Dato() por cada dato nuevo que vayas a encolar
alumno.nombre = nombre1;
alumno.nota = nota1;
alumne.Enqueue(alumno);
} while (nombre1 != "");
Console.WriteLine("Alumnos Suspendidos");
while (alumne.Count > 0) //Saber el numero de elementos de la cola.
{
// Retiras un elemento de la cola y lo guardas en alumno
alumno = alumne.Dequeue();
if (alumno.nota < 5)
{
Console.WriteLine(alumno.nombre);
Console.WriteLine(alumno.nota);
Console.WriteLine();
}
}
Console.ReadKey();
}
}
Saludos
