• Domingo 22 de Diciembre de 2024, 14:43

Autor Tema:  Colas  (Leído 1488 veces)

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Colas
« en: Martes 8 de Diciembre de 2009, 16:14 »
0
Código: C#
  1.  
  2. /* Escriu un programa que demani nom d'alumnes i nota obtinguda en un examen fins entrar una linea buida. Finalment mostra els alumnes suspesos i el aprovats en llistes separades
  3. , amb la seva nota, pero mantenint en cada llista l'ordre d'introducció. */
  4.  
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8.  
  9. public class Dato
  10.     {
  11.         public string nombre;
  12.         public int nota;
  13.     }
  14.  
  15. public class Colas
  16. {
  17.     static void Main()
  18.     {
  19.         Queue <Dato> alumne = new Queue <Dato>();
  20.         Dato alumno = new alumno();
  21.         string nombre1;
  22.         int nota1;
  23.        
  24.         Console.WriteLine("Introdueix el nom de l'alumne:");
  25.         nombre1=Console.ReadLine();
  26.         nombre.alumne.Enqueue(nombre1);
  27.         Console.WriteLine("Introdueix la nota de l'alumne:");
  28.         nota1=Console.ReadLine();
  29.         nota1=Convert.ToInt32(nota1);
  30.         alumno.nota=nota1;
  31. //      alumne.nota.Enqueue(alumno.nota);
  32.        
  33.         while ( alumno.nombre == null )
  34.         {
  35.             //alumne=Console.ReadLine();
  36.         }
  37.         Console.ReadKey();
  38.     }
  39.  
  40. }
  41.  
  42.  

Tengo un lio con las colas, como puedo hacer para meter el nombre y la nota del alumno q es de tipo dato, dentro de la cola?

tannke

  • Miembro MUY activo
  • ***
  • Mensajes: 152
  • Nacionalidad: es
    • Ver Perfil
Re: Colas
« Respuesta #1 en: Martes 8 de Diciembre de 2009, 17:19 »
0
Ahora mismo ando un poco perdido y mal de tiempo, solo decirte de momento que en la linea 28 puedes tener un problema, deberias ponerlo de la siguiente manera:

nota1 = Int32.Parse(Console.ReadLine()); y eliminar la siguiente linea.

otra manera seira declarar una variable sting de nota y despues transformarla:

 string notatemp;
 notatemp=Console.ReadLine();
 nota1=Convert.ToInt32(notatemp);

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Colas
« Respuesta #2 en: Martes 8 de Diciembre de 2009, 19:19 »
0
Por lo menos hubieras traducido el ejemplo que bajaste de internet al español  :wacko:

Tienes un error en esta linea:

Código: C#
  1.  
  2.         Dato alumno = new alumno();
  3.  
  4.  
Deberia ser:

Código: C#
  1.  
  2.         Dato alumno = new Dato();
  3.  
  4.  

Y luego, una vez que leiste tu datos en la variable alumno, solo tienes que hacer:

Código: C#
  1.  
  2.         alumne.Enqueue(alumno);
  3.  
  4.  

Para "encolar" tus datos de alumno.

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Colas
« Respuesta #3 en: Martes 8 de Diciembre de 2009, 20:48 »
0
Código: C#
  1.  
  2. /* Escriu un programa que demani nom d'alumnes i nota obtinguda en un examen fins entrar una linea buida. Finalment mostra els alumnes suspesos i el aprovats en llistes separades
  3. , amb la seva nota, pero mantenint en cada llista l'ordre d'introducció. */
  4.  
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8.  
  9. public class Dato
  10.     {
  11.         public string nombre;
  12.         public int nota;
  13.     }
  14.  
  15. public class Colas
  16. {
  17.     static void Main()
  18.     {
  19.         Queue <Dato> alumne = new Queue <Dato>();
  20.         Dato alumno = new Dato();
  21.         string nombre1;
  22.         int nota1;
  23.         do
  24.         {
  25.             Console.WriteLine("Introdueix el nom de l'alumne:");
  26.             nombre1=Console.ReadLine();
  27.             alumne.Enqueue(alumno);
  28.             Console.WriteLine("Introdueix la nota de l'alumne:");
  29.             nota1 = Int32.Parse(Console.ReadLine());
  30.             alumne.Enqueue(alumno);
  31.  
  32.         }while ( nombre1 != null );
  33.        
  34.         Console.WriteLine("Alumnos Suspendidos");
  35.         while ( alumne.Count > 0 ) //Saber el numero de elementos de la cola.
  36.         {
  37.             if ( alumno.nota < 5 )
  38.             {
  39.                 nombre1 = alumne.Dequeue(); //Sacar de la cola elementos.
  40.                 Console.Write(nombre1);
  41.                 nota1 = alumne.Dequeue();
  42.                 Console.Write(nota1);
  43.                 Console.WriteLine();
  44.             }
  45.         }
  46.        
  47.         Console.ReadKey();
  48.     }
  49.  
  50. }
  51.  
  52.  

Y ahora para sacar los valores, y printar los suspendidos intento hacerlo asi, pero me da error.
Me hago un lio al convertir el tipo dato a string o int :S

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Colas
« Respuesta #4 en: Miércoles 9 de Diciembre de 2009, 01:59 »
0
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.

Código: C#
  1.  
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5.  
  6. public class Dato
  7. {
  8.     public string nombre;
  9.     public int nota;
  10. }
  11.  
  12. public class Colas
  13. {
  14.     static void Main()
  15.     {
  16.         Queue<Dato> alumne = new Queue<Dato>();
  17.         Dato alumno;
  18.         string nombre1;
  19.         int nota1;
  20.         do
  21.         {
  22.             Console.WriteLine("Introdueix el nom de l'alumne:");
  23.             nombre1 = Console.ReadLine();
  24.             Console.WriteLine("Introdueix la nota de l'alumne:");
  25.             nota1 = Int32.Parse(Console.ReadLine());
  26.             // Debes hacer new Dato() por cada dato nuevo que vayas a encolar
  27.             alumno = new Dato();
  28.             alumno.nombre = nombre1;
  29.             alumno.nota = nota1;
  30.             alumne.Enqueue(alumno);
  31.         } while (nombre1 != "");
  32.  
  33.         Console.WriteLine("Alumnos Suspendidos");
  34.         while (alumne.Count > 0) //Saber el numero de elementos de la cola.
  35.         {
  36.             // Retiras un elemento de la cola y lo guardas en alumno
  37.             alumno = alumne.Dequeue();
  38.             if (alumno.nota < 5)
  39.             {
  40.                 Console.WriteLine(alumno.nombre);
  41.                 Console.WriteLine(alumno.nota);
  42.                 Console.WriteLine();
  43.             }
  44.         }
  45.         Console.ReadKey();
  46.     }
  47. }
  48.  
  49.  

Saludos :)

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

badyalberto

  • Miembro activo
  • **
  • Mensajes: 77
    • Ver Perfil
Re: Colas
« Respuesta #5 en: Miércoles 9 de Diciembre de 2009, 08:25 »
0
Okis, muchas gracias  ^_^  ^_^ Ahora se entiende xDDD