Fecha y hora actual: Sábado 21 Oct 2017 06:07
Índice del Foro

Foros de programación informática, diseño gráfico y Web

En esta comunidad intentaremos dar soporte de programación a todos los niveles, desde principiantes a profesionales de la informática, desarrollo de programas, programación web y mucho más.

Programando desde 0: 19- Más tipos a definir: Registros.

Responder al Tema Ir a página Anterior12

Índice del Foro > Programación en general > Programando desde 0: 19- Más tipos a definir: Registros.

Autor Mensaje
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1022

Mensaje Publicado: Viernes 05 Jul 2013 18:54

Título del mensaje: Re: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Me alegra que te haya gustado el tema y que además te tomes la molestia de leer lo que otros postean.

Sigue adelante amigo.
Saludos.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
xRoki
Usuario Inquieto


Registrado: 22 Ago 2013
Mensajes: 71

Mensaje Publicado: Martes 10 Sep 2013 20:49

Título del mensaje: Re: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

estuvo muyy facil , lo entendi rapido , pero es gracias a tu explicacion :D eres muyy buenoo , graciassss !!

ejercicio 1
la a es mala y las demas buenas

ejercicio 2

me diverti haciendo este programa , fue muy facil :D

Código:
Program BasedeDatoEstudiantil;

const

n=10;



TYPE
     Grados= (primero, segundo, tercero, cuarto, quinto, sexto);
        aux= array[1..n] of integer;

     Estudiante= RECORD
        Nombre: String;
        Edad: Integer;
        Documento: real;
        Grado: Grados;

    END;

     BasesEstudiantes= Array[1..10] Of Estudiante;


   VAR

  Est: BasesEstudiantes;
  i: integer;
  opcion: char;
  document: real;
  auxx : aux;

   Procedure ejec(var a: BasesEstudiantes);



   begin

     i:=i+1;

    writeln('ingresa el nombre del Estudiante ',i,' : ');
    readln(a[i].nombre);

    writeln('ingresa  la edad de ',a[i].nombre,' : ');
    readln(a[i].edad);

    writeln('ingresa el documento de ',a[i].nombre,' : ');
    readln(a[i].documento);

    writeln('ingresa el grado de ',a[i].nombre,'(1-6) : ');
    readln(auxx[i]);
    a[i].grado:= Grados(auxx[i]-1);



   end;

   procedure buscar(var b : BasesEstudiantes);

        var j: integer;


           Begin

             j:=0;
             writeln('ingresa documento del estudiante a buscar : ');
             readln(document);

             repeat

             j:=j+1;


             if document= (b[j].documento) then
              begin
             writeln('los datos del documento ',document,' son');
             writeln('el nombre es : ',b[j].nombre);
             writeln('la edad es : ',  b[j].edad);
             write('el grado es : ');

             case grados(auxx[j])  of

             primero: write(' primero ');
             segundo: write(' segundo ');
             tercero: write(' tercero ');
             cuarto : write(' cuarto  ');
             quinto : write(' quinto ');
             sexto: write('sexto');
              end;

             writeln;
             end;

             until (j=10) or (document=b[j].documento) ;

             if (j=10) then
             writeln('el documento ingresado no se encuentra ')


             end;

  begin
     i:=0;
   repeat

   writeln;
   writeln('1)ingresar');
   writeln('2)buscar');
   writeln('3)salir');
   readln(opcion);

   case opcion of

   '1': begin

     ejec(est);

         end;
   '2': begin

      buscar(est);

       end;
   '3':begin
        exit
        end;

    end;

    until (i=10) or (opcion='3');

  end.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
daalpri
Usuario Inquieto


Registrado: 28 Dic 2014
Mensajes: 99

Mensaje Publicado: Jueves 26 Feb 2015 21:50

Título del mensaje: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Mis soluciones

ejercicio1
creo que todas son incorrectas ya que los campos de un registro tienen que ser tipos de variables, no podemos escribir
sexo:(masculino,femenino) por ejemplo, tendriamos que definir primero un tipo enumerado por ejemplo sexsoS y declarar sexo:sexsoS, o para prueba:1..100 o final:'A'..'F' lo mismo pero definiendo un subrango. Tampoco podemos hacer directamente la declaracion de tipo como en la declaracion "nombre" en el apartado a.

ejecicio2
Código:

PROGRAM cap19ejercicio2;

USES crt;

TYPE
   grados=(primero,segundo,tercero,cuarto,quinto,sexto);
   
   estudiante=RECORD   
      nombre:string;
      edad,documento:integer;
      grado:grados;
   end;
   
   BasesEstudiantes=array[1..10] of estudiante;
   
VAR
   est:BasesEstudiantes;
   i,curso,num_doc:integer; //curso es para leer el grado en la entrada y num_doc el numero de documento a buscar.
   
BEGIN //asumo todas las entradas correctas.

{Un bucle "for..." para leer los datos de todos los estudiantes}
   for i:=1 to 10 do
      begin
      writeln('ESTUDIANTE ',i);
      write('Introduzca el nombre del estudiante: ');
      readln(est[i].nombre);
      write('Introduzca su edad: ');
      readln(est[i].edad);
      write('Introduzca su numero de documento: ');
      readln(est[i].documento);
      write('Introduzca el grado, 1...6: ');
      readln(curso); //usamos la variable "curso" para leer el grado y asignarle un valor.
      case curso of
         1: est[i].grado:=primero;
         2: est[i].grado:=segundo;
         3: est[i].grado:=tercero;
         4: est[i].grado:=cuarto;
         5: est[i].grado:=quinto;
         6: est[i].grado:=sexto;
         end; //del case.
         writeln;
      end; //del bucle "for...".
   clrscr;
   
   {Ahora que los datos de todos los estudiantes estan guardados pedimos el numero
   de documento que queremos buscar y lo almacenamos en la variable "num_doc"}
   write('Introduzca el documento del estudiante para mostrar los datos: ');
   readln(num_doc);
   
   {Vamos comparando "num_doc" con "est[i].documento" hasta que coincidan o hayamos comparado
   con todos los terminos}
   i:=1;
   
   while (i<=10) and (num_doc<>est[i].documento) do
      i:=i+1;
   
    {Mostramos el resultado en funcion de si se ha encontrado una coincidencia o no}
    if i>10 then
        writeln('El documento solicitado no corresponde a ningun estudiante')
     else
        begin
        writeln('Nombre: ',est[i].nombre);
        writeln('Edad: ',est[i].edad);
        writeln('Documento: ',est[i].documento);
        case est[i].grado of
           primero: writeln('Grado: primero');
           segundo: writeln('Grado: segundo');
           tercero: writeln('Grado: tercero');
           cuarto: writeln('Grado: cuarto');
           quinto: writeln('Grado: quinto');
           sexto: writeln('Grado: sexto');
        end; //del "case...".
        end; //del "else".

END. //del programa.

espero vuestros comentarios

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1022

Mensaje Publicado: Viernes 27 Feb 2015 14:56

Título del mensaje: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Excelente. Ok

Volver arriba
Ver perfil del usuario Enviar mensaje privado
ystudent
Usuario Iniciado


Registrado: 23 Feb 2017
Mensajes: 30

Mensaje Publicado: Jueves 06 Abr 2017 16:45

Título del mensaje: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Hola!

Este es mi codigo para el ejercicio 2 (espero quede bien indentado):

Código:

program ejercicio219;
type
    grados=(primero, segundo, tercero, cuarto, quinto, sexto);
    estudiante= record
       nombre:string;
       edad, documento:integer;
       grado: grados;
    end;
    basestudiantes=array[1..10] of estudiante;
var
   est:basestudiantes;
   degree:string;     // auxiliar para el enumerado grado
   a, i:integer;
   numero:integer;    // auxiliar para buscar estudiante por documento
begin
     {ingreso de datos de los estudiantes}
     for i:=1 to 10 do
     begin
          write('Ingrese el nombre del estudiante #',i,': ');
          readln (est[i].nombre);
          write ('Ingrese la edad de ', est[i].nombre,' : ');
          readln (est[i].edad);
          write ('Ingrese el documento de identidad de ', est[i].nombre, ' : ');
          readln (est[i].documento);
          write ('Ingrese el grado de ',est[i].nombre,' : ');
          readln (degree);
          case degree of
          'primero' :  est[i].grado:=primero;
          'segundo' :  est[i].grado:=segundo;
          'tercero' :  est[i].grado:=tercero;
          'cuarto'  :  est[i].grado:=cuarto;
          'quinto'  :  est[i].grado:=quinto;
          'sexto'   :  est[i].grado:=sexto;
          end;
          readln;
    end;
    {busqueda del estudiante por su numero de documento y salida de los datos correspondientes}
    write ('Ingrese el numero de documento del estudiante que desea buscar: ');
    readln (numero);
    {primero se busca si hay algun estudiante con ese numero de documento}
    i:=1;
    a:=0;
    repeat
         if numero=est[i].documento then a:=i {a toma el valor del indice del registro del estudiante buscado}
                                    else i:=i+1;
    until (a=i) or (i>10);
    {salida de los datos de del estudiante buscado, o de mensaje si el estudiante no esta registrado}
    if a=i then begin
                    writeln('Nombre: ', est[i].nombre);
                    writeln('Edad: ', est[i].edad);
                    writeln('Documento: ', est[i].documento);
                    writeln('Grado: ', est[i].grado);
                end
           else writeln ('No hay ningun estudiante registrado con ese numero de documento.');
    end.


Y mi duda es en la salida del grado del estudiante buscado. Segun entendí en la clase los enumerados no pueden ser usados en read ni en write pero a mi no me da error de compilacion, ni de ejecución. Por el contrario, me publica el valor enumerado correspondiente al grado del estudiante buscado. Supongo que he hecho o entendido algo mal, pero no sé que será. Necesito aclaración.

Saludos

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Kyshuo Ayame
Moderador Global


Registrado: 07 Ene 2011
Mensajes: 1022

Mensaje Publicado: Jueves 06 Abr 2017 17:48

Título del mensaje: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Tu pregunta no es en vano. Cuando publiqué esta lección, hace varios años, no podía hacerse WRITE de un enumerado. En las nuevas versiones de Pascal sí se puede. Así que tranquilo, entendiste bien.

Saludos.

Volver arriba
Ver perfil del usuario Enviar mensaje privado
ystudent
Usuario Iniciado


Registrado: 23 Feb 2017
Mensajes: 30

Mensaje Publicado: Jueves 06 Abr 2017 20:20

Título del mensaje: Programando desde 0: 19- Más tipos a definir: Registros.

Responder citando

Hola!

Gracias por la aclaracion. Ya me estaba inventando teorias alternativas! jejeje

Saludos!

Volver arriba
Ver perfil del usuario Enviar mensaje privado
Responder al Tema Ir a página Anterior12
Mostrar mensajes anteriores:   
Ir a:  
Todas las horas están en GMT + 1 Hora

Temas relacionados

Tema Autor Foros Respuestas Publicado
El foro no contiene ningún mensaje nuevo

Crear web desde 0

javitc Programación Web en general 6 Sábado 30 Sep 2017 20:23 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Nuevo desde México!

MarioC Preséntate a la comunidad 1 Viernes 30 Dic 2016 18:39 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Control HTML (o Jquery) desde VBA

morfeoct Visual Basic y VBA 3 Jueves 24 Nov 2016 17:34 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Control HTML (o script) desde VBA

morfeoct Programación en general 0 Martes 22 Nov 2016 23:15 Ver último mensaje
El foro no contiene ningún mensaje nuevo

Hola a todos, desde Venezuela!

silvialp Preséntate a la comunidad 2 Sábado 24 Sep 2016 13:51 Ver último mensaje
Panel de Control
No puede crear mensajes, No puede responder temas, No puede editar sus mensajes, No puede borrar sus mensajes, No puede votar en encuestas,