none
Duda Ejercicio estructuras con arreglos RRS feed

  • Pregunta

  • Hola, tengo una duda con el tema de estructuras, con un ejercicio en concreto que debo realizar y no encuentro la solución, el ejercicio es el siguiente: Escriba la definición de una clase CStudent, que debe contener la siguiente información: Identificador un entero utilizado para identificar al estudiante Sexo un personaje ('M' forma masculina y 'F' para mujer) Marca un vector de 10 reales correspondientes a marcas de 10 sujetos Pase un booleano (verdadero o falso) que indique si el estudiante aprueba o no el curso. Escriba la declaración para un estudiante objeto de tipo CStudent. Luego escriba el código para poner "verdadero" en el valor del campo Pase si el alumno aprueba más de 6 materias (para aprobar un tema debe tener una calificación mayoro igual a 5), de lo contrario ponga "falso" en el campo "Pase" mi solucion:

    public class CStudent {
     public int ID;
     public string sexo;
     public int[] notas = new int[10];
    }
    public class Clista_de_estudiantes {
     public int num;
     public CStudent[] studi;
    }
    static void Main(string[] arg) {
     Clista_de_estudiantes estudiants = new Clista_de_estudiantes();
     estudiants.studi = new
     CStudent[MAX];
     int i = 0, conta = 0;
     int y = 0;
     Boolean encontrado = false;
     Console.WriteLine("escriba el numero de estudiantes: ");
     estudiants.num = Convert.ToInt32(Console.ReadLine());
     while (i < estudiants.num) {
      estudiants.studi[i] = new CStudent();
      i++;
     }
     i = 0;
     while (i < estudiants.num) {
      Console.Write("ID: ");
      estudiants.studi[i].ID = Convert.ToInt32(Console.ReadLine());
      Console.Write("sexo M para Masculino y F para Mujer: ");
      estudiants.studi[i].sexo = Console.ReadLine();
      i++;
      i = 0;
      Console.Write("Notas: ");
      while (i < 10) {
       estudiants.studi[y].notas[i] = Convert.ToInt32(Console.ReadLine());
       i++;
      }
     }
     i = 0;
     while (i < 5 && !encontrado) {
      if (estudiants.studi[y].notas[i] > 5) {
       conta++;
       if (conta == 1) {
        encontrado = true;
       }
      }
      i++;
     }
     Console.WriteLine("listado de estudiantes");
     i = 0;
     while (i < estudiants.num) {
      Console.WriteLine("ID: " + estudiants.studi[i].ID + " sexo: " + estudiants.studi[i].sexo + " Pasa: " + encontrado);
      i++;
     }
     Console.ReadLine();
    }
    }
    }

    El problema que tengo es cuando son n estudiantes solo me pide las notas del primero y acaba el programa sin continuar con la secuencia es decir con los datos del otro estudiante.

    viernes, 24 de noviembre de 2017 17:55

Respuestas

  • También.

    Revisa paso a paso este bloque de código

    while (i < estudiants.num) {
      Console.Write("ID: ");
      estudiants.studi[i].ID = Convert.ToInt32(Console.ReadLine());
      Console.Write("sexo M para Masculino y F para Mujer: ");
      estudiants.studi[i].sexo = Console.ReadLine();
      i++;
      i = 0;
      Console.Write("Notas: ");
      while (i < 10) {
       estudiants.studi[y].notas[i] = Convert.ToInt32(Console.ReadLine());
       i++;
      }
     }
    Dentro del bucle while() el cual es controlado por la variable i, la estás tratando(e inclusive volviendo a inicializar a 0) y ejecutando otro bucle interno que depende de la misma... Te recomiendo seguir el flujo de tu programa paso a paso y hacer ajustes



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 24 de noviembre de 2017 18:40
    Moderador

Todas las respuestas

  • hola

    edita la pregunta y agrega identacion al codigo, asi como esta no se entiende

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    viernes, 24 de noviembre de 2017 18:13
  • Hola. Revisa el uso de tu variable "i" que usas como contador. No tengas miedo en usar varias variables para ese fin.

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    viernes, 24 de noviembre de 2017 18:38
    Moderador
  • También.

    Revisa paso a paso este bloque de código

    while (i < estudiants.num) {
      Console.Write("ID: ");
      estudiants.studi[i].ID = Convert.ToInt32(Console.ReadLine());
      Console.Write("sexo M para Masculino y F para Mujer: ");
      estudiants.studi[i].sexo = Console.ReadLine();
      i++;
      i = 0;
      Console.Write("Notas: ");
      while (i < 10) {
       estudiants.studi[y].notas[i] = Convert.ToInt32(Console.ReadLine());
       i++;
      }
     }
    Dentro del bucle while() el cual es controlado por la variable i, la estás tratando(e inclusive volviendo a inicializar a 0) y ejecutando otro bucle interno que depende de la misma... Te recomiendo seguir el flujo de tu programa paso a paso y hacer ajustes



    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos


    viernes, 24 de noviembre de 2017 18:40
    Moderador