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 |