| |||
Buenas.Duda Pascal Tengo una duda sobre como enlazar datos de una lista local con una multilista en pascal para que muestre los datos de la lista local usando la multillista |
| |||
Respuesta: Buenas.Duda Pascal (*TITULO: Practicas de PROGRAMACION II SUBTITULO: Practica 1 AUTOR 1: KEVIN ALAN LOPEZ PEREZ LOGIN 1: k.lopez AUTOR 2: ROI SOENGAS GONZALEZ LOGIN 2: roi.soengas GRUPO: 5.2.2 FECHA: 05/03/2013 *) PROGRAM PruebaMultilista(input,output); USES Multilista,crt; VAR Lista:tMultilista; Dato:tDatoM; Dato1:tDatoM; Dato2:tDatoM; Dato3:tDatoM; Dato4:tDatoM; Dato5:tDatoM; PrimerDato:tDatoM; UltimoDato:tDatoM; ejemplo:tDatoM; ejemplo2,ejemplo3:tDatoM; procedure Listado(Lista:tMultilista); VAR p:tPosM; dato,datos:tDatoM; begin p:=PrimeraM(Lista); if esMultilistaVaciaM(Lista) then writeln('No hay Colegios dados de alta ') else begin while (p<>NULOM) do begin dato := ObtenerDatoM(p,Lista); TEXTCOLOR(11); writeln(' Colegio ',dato.NombreColegio,' Número de Votantes ',dato.numVotantes); writeln; TEXTCOLOR(14); writeln('Partido ' ,dato.recuentoVotos^.Dato.nombrePartido,' Numero de votos ',dato.recuentoVotos^.Dato.numVotos); writeln; p:=SiguienteM(p,Lista); end; end; end; BEGIN CLRSCR; CLRSCR; // Borra la pantalla TEXTCOLOR(8); //Pone el texto en cian writeln(' ********************************************** '); writeln(' *************PROGRAMA DE PRUEBA*************** '); writeln(' ********************************************** '); writeln; TEXTCOLOR(RED); writeln(' Creamos una lista vacía: '); writeln; MultilistaVaciaM(Lista); write(' ¿ La lista está vacía ?',esMultilistaVaciaM(Lista)); writeln; writeln(' Ahora introducimos 5 Colegios: '); writeln; (*Introduccion de datos en la MultilistaVacia.*) // Introduccir los colegios //COLEGIO Q Dato1.nombreColegio:='Q'; Dato1.numVotantes:= 10; Dato1.recuentoVotos^.Dato.nombrePartido:='P'; Dato1.recuentoVotos^.Dato.numVotos:= 10; Dato1.recuentoVotos^.Dato.nombrePartido:='T'; Dato1.recuentoVotos^.Dato.numVotos:= 16; //COLEGIO W Dato2.nombreColegio:='W'; Dato2.numVotantes:= 20; Dato2.recuentoVotos^.Dato.nombrePartido:='M'; Dato2.recuentoVotos^.Dato.numVotos:= 12; Dato2.recuentoVotos^.Dato.nombrePartido:='P'; Dato2.recuentoVotos^.Dato.numVotos:= 10; // COLEGIO L Dato3.nombreColegio:='L'; Dato3.numVotantes:= 15; Dato3.recuentoVotos^.Dato.nombrePartido:='E'; Dato3.recuentoVotos^.Dato.numVotos:= 12; Dato3.recuentoVotos^.Dato.nombrePartido:='R'; Dato3.recuentoVotos^.Dato.numVotos:= 5; Dato3.recuentoVotos^.Dato.nombrePartido:='X'; Dato3.recuentoVotos^.Dato.numVotos:= 25; // COLEGIO S Dato4.nombreColegio:='S'; Dato4.numVotantes:= 2; Dato4.recuentoVotos^.Dato.nombrePartido:='P'; Dato4.recuentoVotos^.Dato.numVotos:= 10; Dato4.recuentoVotos^.Dato.nombrePartido:='T'; Dato4.recuentoVotos^.Dato.numVotos:= 10; Dato4.recuentoVotos^.Dato.nombrePartido:='E'; Dato4.recuentoVotos^.Dato.numVotos:= 12; // COLEGIO C Dato5.nombreColegio:='C'; Dato5.numVotantes:= 18; //Comprobar si metimos Colegios y los partidos TEXTCOLOR(11); writeln('Ahora verificamos que se insertaron los colegios de forma correcta: '); writeln; writeln('Primer Colegio: ', InsertarDatoM(Dato1,Lista)); // COLEGIO writeln; writeln; writeln('Segundo Colegio: ', InsertarDatoM(Dato2,Lista)); // COLEGIO writeln; writeln; writeln; writeln('Tercer Colegio: ', InsertarDatoM(Dato3,Lista)); // COLEGIO writeln; writeln; writeln('Cuarto Colegio: ', InsertarDatoM(Dato4,Lista)); // COLEGIO writeln; writeln; writeln('Quinto Colegio: ', InsertarDatoM(Dato5,Lista)); // COLEGIO writeln; writeln; //Comprobar si la lista esta vacia TEXTCOLOR(red); writeln(' ¿ La lista esta vacía ? '); writeln; writeln(esMultilistaVaciaM(Lista)); writeln; //Obtener Datos writeln(' Obteniendo Dato de la primera posición . . . '); PrimerDato:=ObtenerDatoM(PrimeraM(Lista),Lista); writeln; writeln(' Obteniendo Dato de la última posición . . . '); UltimoDato:= ObtenerDatoM(UltimaM(Lista),Lista); writeln; TEXTCOLOR(11); writeln(' Colegio en la primera posicion = ', PrimerDato.nombreColegio); // DEBERÍA MOSTRAR C MAL writeln(' Numero de votantes del colegio = ' , PrimerDato.numVotantes); writeln; TEXTCOLOR(14); writeln(' Partido en la primera Posicion = ',PrimerDato.recuentoVotos^.Dato.nombrePartido); // DEBERÍA ESTAR EN BLANCO writeln; writeln(' Numero de votos = ',PrimerDato.recuentoVotos^.Dato.numVotos);// DEBERÍA MOSTRAR 0 TEXTCOLOR(11); writeln(' Colegio en la ultima posicion = ', UltimoDato.nombreColegio); // DEBERÍA MOSTRAR W writeln(' Numero de votantes del colegio =' , UltimoDato.numVotantes); writeln; TEXTCOLOR(14); writeln(' Partido en la primera Posicion = ',PrimerDato.recuentoVotos^.Dato.nombrePartido); // DEBERÍA MOSTRAR M writeln; writeln(' Numero de votos ',PrimerDato.recuentoVotos^.Dato.numVotos); writeln; writeln(' Ultimo partido = ' ,UltimoDato.recuentoVotos^.Dato.nombrePartido); // DEBERÍA MOSTRAR P writeln; writeln(' Numero de votos = ',UltimoDato.recuentoVotos^.Dato.numVotos); writeln; TEXTCOLOR(11); write(' El Siguiente Colegio del colegio guardado en la primera posicion es: '); ejemplo:=ObtenerDatoM(SiguienteM(PrimeraM(Lista),L ista),Lista); writeln(ejemplo.nombreColegio); // DEBERÍA MOSTRAR L write(' El numero de votantes es : '); writeln(ejemplo.numVotantes); writeln; TEXTCOLOR(14); writeln(' Partido en primer lugar = ',PrimerDato.recuentoVotos^.Dato.nombrePartido); // DEBERÍA MOSTRAR E writeln; TEXTCOLOR(11); write(' El anterior Colegio del Dato guardado en la última posición es: '); ejemplo2:=ObtenerDatoM(AnteriorM(UltimaM(Lista),Li sta),Lista); writeln(ejemplo2.nombreColegio); // DEBERÍA MOSTRAR S BIEN write(' El numero de votantes es : '); writeln(ejemplo2.numVotantes); writeln; TEXTCOLOR(RED); writeln(' Búsqueda de datos: '); writeln; //Buscar si existe el dato TEXTCOLOR(11); writeln(' Buscamos el Dato Q en la lista: '); Dato:=ObtenerDatoM(BuscarDatoM('Q',Lista),lista); writeln; writeln(' El Dato Q está en la posición: '); writeln; writeln(Dato.nombreColegio); (*Muesta la posición donde está el dato 'T' almacenado.*) writeln; writeln(' Buscamos el Dato W en la lista: '); Dato:=ObtenerDatoM(BuscarDatoM('W', Lista),lista); writeln(' El Dato W está en la posición: '); writeln(Dato.nombreColegio); (*Muestra la posición del dato 'W'.*) writeln; writeln(' Buscamos el Dato S en la lista: '); Dato:=ObtenerDatoM(BuscarDatoM('S', Lista),lista); writeln(' El Dato s está en la posición: '); writeln(Dato.nombreColegio); (*Muestra la posición del dato 'R'.*) writeln(); // Eliminar Dato TEXTCOLOR(RED); writeln(' Ahora eliminamos el Dato situado en la posición 2'); EliminarPosicionM(SiguienteM(PrimeraM(Lista),Lista ),Lista); writeln; (*En esta parte vamos a actualizar los datos. Vamos a cambiar el número de votos.*) writeln(' Ahora Actualizamos los Datos modificando algunos de los votos: '); ActualizarDatoM(Lista,PrimeraM(Lista),90); ActualizarDatoM(Lista,UltimaM(Lista),70); writeln(); Listado(Lista); writeln; TEXTCOLOR(14+blink); // Texto en amarillo y parpadea writeln(' Gracias por usar nuestro Programa '); TEXTCOLOR(11); writeln; TEXTCOLOR(GREEN); write('Escrito por : '); write('Roi Soengas Gonzalez'); TEXTCOLOR(cyan); writeln; writeln; END. Ese el el codigo que tengo para probar la multilista y el problema me viene en insertarDato como si tuviera un puntero que no finaliza nunca |
| |||
Respuesta: Buenas.Duda Pascal La duda la tengo que me da un error en un aceso a un puntero y la pregunta que me hacia es como llamar desde la multulista a una función que esta en una lista Local |
Etiquetas: |