Pascal/Turbo Pascal - Ayuda Urgente

 
Vista:

Ayuda Urgente

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:07:20
Tengo dos problemas con mi programa, este compila y corre bien, En la pantalla principal podemos ver 1. ingresar datos de revista, 2. ingresar datos de periodico, 3. ingresar datos de libros. El problema consiste que al ingresar en la opcion 2, no puedo ingresar datos, sino que se sale a la pantalla principal. Que puedo hacer?? Es extraño debido a que tanto con la opcion 1 y la 3 use la misma metodologia. El otro problema es que hice una modificacion al algoritmo, en el procedimiento de imprimirdatosrevista, imprimirdatoslibros, imprimirdatosperiodicos, aqui presento el mismo problema con la opcion 2 y ademas se me presenta otri problema con la opcion 6 llamada revista, debido a que me sale una especie de error... me dice exitcode201. Pero esta modificacion no afecto la opcion 4 la cual me funciona correctament. El programa se encarga de leer datos de revistas, libros y periodicos (Opcion 1,2,3) y mostrarlos de una forma ordenada Opcion (4,5,6).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda Urgente

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:12:15
Como no se puede enviar ma de 10000 letras voy a enviarlo por parte... Inclluso este programa...

Program DISPUBLI;

{----------------------------------------------------------------------------
Este programa permite leer los datos de publicaciones como libros, revistas
y periodicos de la Distribuidora DISPUBLI. Luego de leidos los datos, permi-
te mostrarlos de una forma ordenada en la pantalla del programa.

Programa realizado por Jose Chavier
Cedula de identidad 17942328
Asignatura Computacion I
---------------------------------------------------------------------------}
uses crt;

const
Max = 100; { Se define el maximo de 100 elementos para los arreglos }
var
Opcion: char; { Opcion para los menus }
CodigoRevista: array [1..Max] of integer; { Codigo de la Revista segun el Tipo}
TituloRevista: array [1..Max] of string; { Nombres de la revista }
PrecioRevista: array [1..Max] of real; { Precio de la revista }
CantidadRevista: array [1..Max] of integer; { Cantidad de Revistas disponibles }
NumeroRevista: array [1..Max] of integer; { Numero de la Revista }
EmpresaRevista: array [1..Max] of string; { Empresa que publica la Revista }
DiaRevista: array [1..Max] of integer; { Dia de publicacion de Revista }
MesRevista: array [1..Max] of integer; { Mes de publicacion de Revista }
AnoRevista: array [1..Max] of integer; { Ano de publicacion de Revista }
NumRevista: integer; { Numero de periodicos registrados }
CodigoPeriodico: array [1..Max] of integer; { Codigo del periodico segun el Tipo}
TituloPeriodico: array [1..Max] of string; { Titulo del periodico }
PrecioPeriodico: array [1..Max] of real; { Precio del periodico }
CantidadPeriodico: array [1..Max] of integer; { Cantidad de pericodicos disponibles }
DiaPeriodico: array [1..Max] of integer; { Dia de publicacion del Periodico }
MesPeriodico: array [1..Max] of integer; { Mes de publicacion del Periodico }
AnoPeriodico: array [1..Max] of integer; { Año de publicacion del Periodico }
EmpresaPeriodico: array [1..Max] of string; { Empresa que publica el Periodico }
IdiomaPeriodico: array [1..Max] of string; { Idioma en que se publica el Periodico }
NumPeriodico: integer; { Numero de periodicos registrados }
CodigoLibro: array [1..Max] of integer; { Codigo del libro segun el Tipo}
TituloLibro: array [1..Max] of string; { Nombres del libro }
Preciolibro: array [1..Max] of real; { Precio del libro }
CantidadLibro: array [1..Max] of integer; { Cantidad de libros disponibles }
AutorLibro: array [1..Max] of string; { Autor del libro }
IdiomaLibro: array [1..Max] of string; { Idioma en que se publica el libro }
EditorialLibro: array [1..Max] of string; { Editorial que publica el libro }
NumLibro: integer; { Numero de libros registrados }
NLibro: integer; { Numero de libros registrados }
NRevistas: integer; { Numero de revistas registrados en total}
NPeriodico: integer; { Numero de periodicos registrados en total}
j: integer; { Variable usada en el metodo de la burbuja}
aux_CodigoRevista: integer; { Codigo de la Revista segun el Tipo -Burbuja-}
aux_TituloRevista: string; { Nombres de la revista -Burbuja-}
aux_PrecioRevista: real; { Precio de la revista -Burbuja-}
aux_CantidadRevista: integer; { Cantidad de Revistas disponibles-Burbuja- }
aux_NumeroRevista: integer; { Numero de la Revista -Burbuja-}
aux_DiaRevista: integer; { Dia de publicacion de Revista -Burbuja-}
aux_MesRevista: integer; { Mes de publicacion de Revista -Burbuja-}
aux_AnoRevista: integer; { Año de publicacion de Revista -Burbuja-}
aux_EmpresaRevista: string; { Empresa que publica la Revista -Burbuja-}
aux_NumRevista: integer; { Numero de periodicos registrados -Burbuja-}
aux_CodigoPeriodico: integer; { Codigo del periodico segun el Tipo -Burbuja-}
aux_TituloPeriodico: string; { Titulo del periodico -Burbuja-}
aux_PrecioPeriodico: real; { Precio del periodico -Burbuja-}
aux_CantidadPeriodico: integer; { Cantidad de pericodicos disponibles -Burbuja-}
aux_DiaPeriodico: integer; { Dia de publicacion del Periodico -Burbuja-}
aux_MesPeriodico: integer; { Mes de publicacion del Periodico -Burbuja-}
aux_AnoPeriodico: integer; { Ano de publicacion del Periodico -Burbuja-}
aux_EmpresaPeriodico: string; { Empresa que publica el Periodico -Burbuja-}
aux_IdiomaPeriodico: string; { Idioma en que se publica el Periodico -Burbuja-}
aux_NumPeriodico: integer; { Numero de periodicos registrados -Burbuja-}
aux_CodigoLibro: integer; { Codigo del libro segun el Tipo -Burbuja-}
aux_TituloLibro: string; { Nombres del libro -Burbuja-}
aux_Preciolibro: real; { Precio del libro -Burbuja-}
aux_CantidadLibro: integer; { Cantidad de libros disponibles -Burbuja-}
aux_AutorLibro: string; { Autor del libro -Burbuja-}
aux_IdiomaLibro: string; { Idioma en que se publica el libro -Burbuja-}
aux_EditorialLibro: string; { Editorial que publica el libro -Burbuja-}
aux_NumLibro: integer; { Numero de libros registrados -Burbuja-}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programa1. Part 2.

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:15:29
{----------------------------------------------------------------------------
Procedimiento: ImpText
Par metros...: lin, pos, Texto
Variables....: PosicionAbsoluta
Funci¢n......: Imprimir texto en pantalla en una linea especifica y
centrando la posici¢n si asi se requiere
----------------------------------------------------------------------------}
procedure ImpText (lin: integer; pos: integer; Texto: string);
var
PosicionAbsoluta: integer;
begin
{Si la posici¢n leida es <> -1 entonces la posicion absoluta es igual
a la posicion leida originalmente, de lo contrario se calculara la posicion absoluta
restando 40 del largo del texto leido y dividido entre dos para asi
centrar el texto en pantalla }

if pos <> -1 then
PosicionAbsoluta := pos
else
PosicionAbsoluta:= (40 - (Length(Texto) div 2));

gotoxy (PosicionAbsoluta, lin);
write (Texto);
end;

{----------------------------------------------------------------------------
Funci¢n......: LeerCaracter
Par metros...: lin, pos, Texto
Funci¢n......: Leer un y validar un caracter introducido por teclado.
-----------------------------------------------------------------------------}
function LeerCaracter (lin: integer; pos: integer;
Texto: string; Ayuda: string): char;
Var
Caracter: char;
begin
{Imprimir el mensaje de ayuda y el texto leido en la linea y
posicion leida}

ImpText (25, 1, 'AYUDA: ' + Ayuda);
if Texto <> '' then
ImpText (lin, pos, Texto)
else

gotoxy (pos, lin);

{Luego leer un caracter en teclado para imprimirlo en pantalla,
la funci¢n LeerCaracter regresa el valor del caracter leido
y borrar el texto en la linea de ayuda}
Caracter := upcase (readkey);
delay(5000);
write (Caracter);
LeerCaracter := Caracter;
ImpText (25, 1, 'AYUDA: ');
end;

{----------------------------------------------------------------------------
Funci¢n......: LeerDatoEntero
Par metros...: lin, pos
Variables....: Dato (El valor que ser  leido)
Control (Recibe el valor del dato luego de la conversion del
valor de la vriable dato a num‚rico)
ErrorPosicion (Recibe 0 si no hubo error en la conversi¢n y
cualquier numero indicando la posicion donde hubo error
en la conversion)
Funci¢n......: Leer un texto en pantalla en una linea y posicion especificada
y controlar que sea un numero tipo entero
----------------------------------------------------------------------------}
function LeerNumeroEntero (lin: integer; pos: integer;
Ayuda: string): integer;
var
Dato: string;
Control: integer;
ErrorPosicion: integer;
begin
{Imprimir el mensaje de ayuda y el leer el dato deseado en la linea y
posicion leida}
ImpText (25, 1, 'AYUDA: ' + Ayuda);
gotoxy(pos, lin);
readln (Dato);

{Luego leer el valor la funci¢n LeerNumeroEntero regresa 0 si hay error
en la conversion del dato leido si no es asi devuelve el valor convertido
en la variable Control, finalmente borrar el texto en la linea de ayuda}
val(Dato, Control, ErrorPosicion);
if ErrorPosicion <> 0 then
LeerNumeroEntero := 0
else
LeerNumeroEntero := Control;
ImpText (25, 1, 'AYUDA: ');
end;

{----------------------------------------------------------------------------
Funci¢n......: LeerDatoReal
Par metros...: lin, pos
Variables....: Dato (El valor que ser  leido)
Control (Recibe el valor del dato luego de la conversion del
valor de la vriable dato a num‚rico)
ErrorPosicion (Recibe 0 si no hubo error en la conversi¢n y
cualquier numero indicando la posicion donde hubo error
en la conversion)
Funci¢n......: Leer un texto en pantalla en una linea y posicion especificada
y controlar que sea un numero tipo entero
----------------------------------------------------------------------------}
function LeerNumeroReal (lin: integer; pos: integer;
Ayuda: string): real;
var
Dato: string;
Control: real;
ErrorPosicion: integer;
begin
{Imprimir el mensaje de ayuda y el leer el dato deseado en la linea y
posicion leida}
ImpText (25, 1, 'AYUDA: ' + Ayuda);
gotoxy(pos, lin);
readln (Dato);

{Luego leer el valor la funci¢n LeerNumeroReal regresa 0 si hay error
en la conversion del dato leido si no es asi devuelve el valor convertido
en la variable Control, finalmente borrar el texto en la linea de ayuda}
val(Dato, Control, ErrorPosicion);
if ErrorPosicion <> 0 then
LeerNumeroReal := 0
else
LeerNumeroReal := Control;
ImpText (25, 1, 'AYUDA: ');
end;

{----------------------------------------------------------------------------
Funci¢n......: LeerTexto
Par metros...: lin, pos, Texto
Variables....: Dato (El valor que ser  leido y devuelto por la funcion)
Funci¢n......: Leer un texto en pantalla en una linea y posicion especificada
----------------------------------------------------------------------------}
function LeerTexto (lin: integer; pos: integer;
Ayuda: string): string;
var
Dato: string;
begin
{Imprimir el mensaje de ayuda y el leer el dato deseado en la linea y
posicion leida}
ImpText (25, 1, 'AYUDA: ' + Ayuda);
gotoxy(pos, lin);
readln (Dato);

{Luego de leer el dato borrar el texto en la linea de ayuda}
LeerTexto := Dato;
ImpText (25, 1, 'AYUDA: ');
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programa1. Part 3

Publicado por José (8 intervenciones) el 09/12/2009 22:17:07
{----------------------------------------------------------------------------
Procedimiento: Imprimir los Datos de Revistas
Par metros...: Ninguno
Variables....:
Funci¢n......:
----------------------------------------------------------------------------}
procedure ImprimirDatosRevistas;
Begin
{aplicamos el metodo de la burbuja para ordenar de forma descendente el listado las revistas por codigo}
begin
for NumRevista:= 1 to (NRevistas - 1) do
for j:= 1 + NumRevista to (Nrevistas) do
if (CodigoRevista[NumRevista] < CodigoRevista[j]) then
begin
aux_CodigoRevista := CodigoRevista[NumRevista];
CodigoRevista[NumRevista] := CodigoRevista[j];
CodigoRevista[j] := aux_CodigoRevista;

aux_TituloRevista := TituloRevista[NumRevista];
TituloRevista[NumRevista] := TituloRevista[j];
TituloRevista[j] := aux_TituloRevista;

aux_PrecioRevista := PrecioRevista[NumRevista];
PrecioRevista[NumRevista] := PrecioRevista[j];
PrecioRevista[j] := aux_PrecioRevista;

aux_CantidadRevista := CantidadRevista[NumRevista];
CantidadRevista[NumRevista] := CantidadRevista[j];
CantidadRevista[j] := aux_CantidadRevista;

aux_NumeroRevista := NumeroRevista[NumRevista];
NumeroRevista[NumRevista] := NumeroRevista[j];
NumeroRevista[j] := aux_NumeroRevista;

aux_DiaRevista := DiaRevista[NumRevista];
DiaRevista[NumRevista] := DiaRevista[j];
DiaRevista[j] := aux_DiaRevista;

aux_MesRevista := MesRevista[NumRevista];
MesRevista[NumRevista] := MesRevista[j];
MesRevista[j] := aux_MesRevista;

aux_AnoRevista := AnoRevista[NumRevista];
AnoRevista[NumRevista] := AnoRevista[j];
AnoRevista[j] := aux_AnoRevista;

aux_EmpresaRevista := EmpresaRevista[NumRevista];
EmpresaRevista[NumRevista] := EmpresaRevista[j];
EmpresaRevista[j] := aux_EmpresaRevista;

end;
end;

{Mostramos de forma descendente el listado de las revistas por codigo}

begin
clrscr;
writeln('listado ordenado por codigo de revista');
writeln;
writeln;
for NumRevista:= 1 to NRevistas do
begin
writeln('Revista: ',TituloRevista[NumRevista]);
writeln('Codigo: ',CodigoRevista[NumRevista]);
writeln('Precio: ',PrecioRevista[NumRevista]);
writeln('Cantidad Disponible: ',CantidadRevista[NumRevista]);
writeln('Numero: ',NumeroRevista[NumRevista]);
writeln('Fecha de Publicacion: ',DiaRevista[NumRevista],'/', MesRevista[NumRevista],'/',AnoRevista[NumRevista]);
writeln('Empresa: ',EmpresaRevista[NumRevista]);
writeln;
writeln;
writeln;
end;
end;
readln;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programa1. Part 4

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:18:25
{----------------------------------------------------------------------------
Procedimiento: Imprimir los Datos de Periodicos
Par metros...: Ninguno
Variables....:
Funci¢n......:
----------------------------------------------------------------------------}
procedure ImprimirDatosPeriodicos;
Begin
{aplicamos el metodo de la burbuja para ordenar de forma descendente el listado los periodicos por codigo}
begin
for

NumPeriodico:= 1 to (NPeriodico - 1) do
for j:= 1 + NumPeriodico to (NPeriodico) do
if (CodigoPeriodico[NumRevista] < CodigoPeriodico[j]) then
begin
aux_CodigoPeriodico := CodigoPeriodico[NumPeriodico];
CodigoPeriodico[NumPeriodico] := CodigoPeriodico[j];
CodigoPeriodico[j] := aux_CodigoPeriodico;

aux_TituloPeriodico := TituloPeriodico[NumPeriodico];
TituloPeriodico[NumPeriodico] := TituloPeriodico[j];
TituloPeriodico[j] := aux_TituloPeriodico;

aux_PrecioPeriodico := PrecioPeriodico[NumPeriodico];
PrecioPeriodico[NumPeriodico] := PrecioPeriodico[j];
PrecioPeriodico[j] := aux_PrecioPeriodico;

aux_CantidadPeriodico := CantidadPeriodico[NumPeriodico];
CantidadPeriodico[NumPeriodico] := CantidadPeriodico[j];
CantidadPeriodico[j] := aux_CantidadPeriodico;

aux_DiaPeriodico := DiaPeriodico[NumPeriodico];
DiaPeriodico[NumPeriodico] := DiaPeriodico[j];
DiaPeriodico[j] := aux_DiaPeriodico;

aux_MesPeriodico := MesPeriodico[NumPeriodico];
MesPeriodico[NumPeriodico] := MesPeriodico[j];
MesPeriodico[j] := aux_MesPeriodico;

aux_AnoPeriodico := AnoPeriodico[NumPeriodico];
AnoPeriodico[NumPeriodico] := AnoPeriodico[j];
AnoPeriodico[j] := aux_AnoPeriodico;

aux_EmpresaPeriodico := EmpresaPeriodico[NumPeriodico];
EmpresaPeriodico[NumPeriodico] := EmpresaPeriodico[j];
EmpresaPeriodico[j] := aux_EmpresaPeriodico;

aux_IdiomaPeriodico := IdiomaPeriodico[NumPeriodico];
IdiomaPeriodico[NumPeriodico] := IdiomaPeriodico[j];
IdiomaPeriodico[j] := aux_IdiomaPeriodico;

end;
end;

{Mostramos de forma descendente el listado de los libros por codigo}

begin
clrscr;
writeln('listado ordenado por codigo de Periodico');
writeln;
writeln;
for NumPeriodico:= 1 to NPeriodico do
begin
writeln('Periodico: ',TituloPeriodico[NumPeriodico]);
writeln('Codigo: ',CodigoPeriodico[NumPeriodico]);
writeln('Precio: ',PrecioPeriodico[NumPeriodico]);
writeln('Cantidad Disponible: ',CantidadPeriodico[NumPeriodico]);
writeln('Fecha de Edicion: ',DiaPeriodico[NumPeriodico],'/', MesPeriodico[NumPeriodico],'/',AnoPeriodico[NumPeriodico] );
writeln('Empresa: ',EmpresaPeriodico[NumPeriodico]);
writeln('Idioma: ',IdiomaPeriodico[NumPeriodico]);
writeln;
writeln;
writeln;
end;
end;
readln;
end;

{----------------------------------------------------------------------------
Procedimiento: Imprimir los Datos de Libros
Par metros...: Ninguno
Variables....:
Funci¢n......:
----------------------------------------------------------------------------}
procedure ImprimirDatosLibros;
Begin
{aplicamos el metodo de la burbuja para ordenar de forma descendente el listado los libros por codigo}
begin
for NumLibro:= 1 to (NLibro - 1) do
for j:= 1 + NumLibro to (NLibro) do
if (CodigoLibro[NumLibro] < CodigoLibro[j]) then
begin
aux_CodigoLibro := CodigoLibro[NumLibro];
CodigoLibro[NumLibro] := CodigoLibro[j];
CodigoLibro[j] := aux_CodigoLibro;

aux_TituloLibro := TituloLibro[NumLibro];
TituloLibro[NumLibro] := TituloLibro[j];
TituloLibro[j] := aux_TituloLibro;

aux_PrecioLibro := PrecioLibro[NumLibro];
PrecioLibro[NumLibro] := PrecioLibro[j];
PrecioLibro[j] := aux_PrecioLibro;

aux_CantidadLibro := CantidadLibro[NumLibro];
CantidadLibro[NumLibro] := CantidadLibro[j];
CantidadLibro[j] := aux_CantidadLibro;

aux_AutorLibro := AutorLibro[NumLibro];
AutorLibro[NumLibro] := AutorLibro[j];
AutorLibro[j] := aux_AutorLibro;

aux_EditorialLibro := EditorialLibro[NumLibro];
EditorialLibro[NumLibro] := EditorialLibro[j];
EditorialLibro[j] := aux_EditorialLibro;

aux_IdiomaLibro := IdiomaLibro[NumLibro];
IdiomaLibro[NumLibro] := IdiomaLibro[j];
IdiomaLibro[j] := aux_IdiomaLibro;

end;
end;

{Mostramos de forma descendente el listado de los libros por codigo}

begin
clrscr;
writeln('Listado ordenado por el codigo de los Libros');
writeln;
writeln;
for NumLibro:= 1 to NLibro do
begin
writeln('Libro: ',TituloLibro[NumLibro]);
writeln('Codigo: ',CodigoLibro[NumLibro]);
writeln('Precio: ',PrecioLibro[NumLibro]);
writeln('Cantidad Disponible: ',CantidadLibro[NumLibro]);
writeln('Autor: ',AutorLibro[NumPeriodico]);
writeln('Empresa: ',EmpresaPeriodico[NumPeriodico]);
writeln('Idioma: ',IdiomaPeriodico[NumPeriodico]);
writeln;
writeln;
writeln;
end;
end;
readln;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programa1. Part 5

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:20:20
{----------------------------------------------------------------------------
Procedimiento: IngresarDatosRevistas
Par metros...: Ninguno
Variables....:
Funci¢n......: Leer los datos de las revistas a ingresar al sistema
----------------------------------------------------------------------------}
procedure IngresarDatosRevistas;

procedure BorrarCampos;
{Este procedimiento es local y se ejecuta en el  mbito del procedimiento
Ingresar Datos, su funcion es borrar los campos leidos en pantalla}
begin
ImpText (9, 41, ' ');
ImpText (10, 41, ' ');
ImpText (11, 41, ' ');
ImpText (12, 41, ' ');
ImpText (13, 41, ' ');
ImpText (14, 41, ' ');
ImpText (15, 41, ' ');
ImpText (16, 41, ' ');
ImpText (17, 41, ' ');
ImpText (18, 41, ' ');
end;

var
ErrorPosicion: Integer;
i: integer;
begin
if NumRevista = 0 then
NumRevista := 1;
clrscr;
ImpText (7, -1, '1.- INGRESO DE DATOS DE LA REVISTA ');
ImpText (8, -1, '------------------------------------');
ImpText (9, 20, 'Revista # ');
ImpText (10, 20, 'Codigo.............: ');
ImpText (11, 20, 'Titulo.............: ');
ImpText (12, 20, 'Precio.............: ');
ImpText (13, 20, 'Cantidad Disponible: ');
ImpText (14, 20, 'Numero.............: ');
ImpText (15, 20, 'Dia de Publicacion.: ');
ImpText (16, 20, 'Mes de Publicacion.: ');
ImpText (17, 20, 'Ano de Publicacion.: ');
ImpText (18, 20, 'Empresa............: ');
Imptext (20, 10, 'Codigos: Pulse el numero entre < >');
Imptext (21, 6, '<1>R01-Investigacion, <2>R02-Cientifica, <3>R03-Espectaculos y farandula ');
gotoxy (30,9); write (NumRevista);
CodigoRevista[NumRevista] := LeerNumeroEntero(10, 41, 'Ingrese cero <0> o pulse <ENTER> para salir');

while CodigoRevista[NumRevista] <> 0 do
begin
TituloRevista[NumRevista] := LeerTexto(11, 41, 'Ingrese el titulo de la revista');
PrecioRevista[NumRevista] := LeerNumeroReal(12, 41, 'Ingrese el precio de la revista');
CantidadRevista[NumRevista] := LeerNumeroEntero(13, 41, 'Ingrese cantidad de revistas disponibles');
NumeroRevista[NumRevista] := LeerNumeroEntero(14, 41, 'Ingrese el numero de la Revista');
DiaRevista[NumRevista] := LeerNumeroEntero(15, 41, 'Ingrese el dia de publicacion de la revista');
MesRevista[NumRevista] := LeerNumeroEntero(16, 41, 'Ingrese el mes de publicacion de la revista');
AnoRevista[NumRevista] := LeerNumeroEntero(17, 41, 'Ingrese el año de publicacion de la revista');
EmpresaRevista[NumRevista] := LeerTexto(18, 41, 'Empresa que publica la revista');

BorrarCampos;
NumRevista := NumRevista + 1;
gotoxy (30,9); write (NumRevista);
CodigoRevista[NumRevista] := LeerNumeroEntero(10, 41, '< Ingrese cero <0> o pulse <ENTER> para salir');
end;
NRevistas:= NumRevista;
end;

{----------------------------------------------------------------------------
Procedimiento: IngresarDatosPeriodicos
Par metros...: Ninguno
Variables....:
Funci¢n......: Leer los datos de los periodicos a ingresar al sistema
----------------------------------------------------------------------------}
procedure IngresarDatosPeriodicos;

procedure BorrarCampos;
{Este procedimiento es local y se ejecuta en el  mbito del procedimiento
Ingresar Datos, su funcion es borrar los campos leidos en pantalla}
begin
ImpText (9,41, ' ');
ImpText (10, 41, ' ');
ImpText (11, 41, ' ');
ImpText (12, 41, ' ');
ImpText (13, 41, ' ');
ImpText (14, 41, ' ');
ImpText (15, 41, ' ');
ImpText (16, 41, ' ');
ImpText (17, 41, ' ');
ImpText (18, 41, ' ');
ImpText (19, 41, ' ');
end;

var
ErrorPosicion: Integer;
i: integer;
begin
if NumPeriodico = 0 then
NumPeriodico := 1;
clrscr;
ImpText (7, -1, '2.- INGRESO DE DATOS DEL PERIODICO ');
ImpText (8, -1, '------------------------------------');
ImpText (9 , 20, 'Periodico # ');
ImpText (10, 20, 'Codigo.............: ');
ImpText (11, 20, 'Titulo.............: ');
ImpText (12, 20, 'Precio.............: ');
ImpText (13, 20, 'Cantidad Disponible: ');
ImpText (14, 20, 'Dia de Edicion.....: ');
ImpText (15, 20, 'Mes de Edicion.....: ');
ImpText (16, 20, 'Ano de Edicion.....: ');
ImpText (17, 20, 'Empresa............: ');
ImpText (18, 20, 'Idioma.............: ');
Imptext (20, 10, 'Codigos: Pulse el numero entre < >');
Imptext (21, 5, '<1>P01-Nacional Noticias, <2>P02-Nacional Deportivo');
Imptext (22, 5, '<3>P03-Internacional Noticia');
gotoxy (32,9); write (NumPeriodico);
CodigoRevista[NumPeriodico] := LeerNumeroEntero(10, 41, ' Ingrese cero <0> o pulse <ENTER> para salir');

while CodigoPeriodico[NumPeriodico] <> 0 do

begin
TituloPeriodico[NumPeriodico] := LeerTexto(11, 41, 'Ingrese el titulo del periodico');
PrecioPeriodico[NumPeriodico] := LeerNumeroReal(12, 41, 'Ingrese el precio del Periodico');
CantidadPeriodico[NumPeriodico] := LeerNumeroEntero(13, 41, 'Ingrese cantidad de periodicos disponibles');
DiaPeriodico[NumPeriodico] := LeerNumeroEntero(14, 41, 'Ingrese el dia de publicacion del Periodico');
MesPeriodico[NumPeriodico] := LeerNumeroEntero(15, 41, 'Ingrese el mes de publicacion del Periodico');
AnoPeriodico[NumPeriodico] := LeerNumeroEntero(16, 41, 'Ingrese el año de publicacion del Periodico');
EmpresaPeriodico[NumPeriodico] := LeerTexto(17, 41, 'Empresa que publica el Periodico');
IdiomaPeriodico[NumPeriodico] := LeerTexto(18, 41, 'Idioma en que se publica el Periodico');

BorrarCampos;
NumPeriodico := NumPeriodico + 1;
gotoxy (32,9); write (NumPeriodico);
CodigoPeriodico[NumPeriodico] := LeerNumeroEntero(10, 41, ' Ingrese cero <0> o pulse <ENTER> para salir');

end;
NPeriodico:= NumPeriodico;
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Programa1. UltimaParte

Publicado por JoséChavier (8 intervenciones) el 09/12/2009 22:39:07
{----------------------------------------------------------------------------
Procedimiento: IngresarDatosLibros
Par metros...: Ninguno
Variables....:
Funci¢n......: Leer los datos de los libros a ingresar al sistema
----------------------------------------------------------------------------}
procedure IngresarDatosLibros;

procedure BorrarCampos;
{Este procedimiento es local y se ejecuta en el  mbito del procedimiento
Ingresar Datos, su funcion es borrar los campos leidos en pantalla}
begin
ImpText (0, 28, ' ');
ImpText (10, 41, ' ');
ImpText (11, 41, ' ');
ImpText (12, 41, ' ');
ImpText (13, 41, ' ');
ImpText (14, 41, ' ');
ImpText (15, 41, ' ');
ImpText (16, 41, ' ');

end;

var
ErrorPosicion: Integer;
i: integer;
begin
if NumLibro = 0 then
NumLibro := 1;
clrscr;
ImpText (7, -1, '3.- INGRESO DE DATOS DEL LIBRO ');
ImpText (8, -1, '------------------------------------');
ImpText (9, 20, 'Libro # ');
ImpText (10, 20, 'Codigo.............: ');
ImpText (11, 20, 'Titulo.............: ');
ImpText (12, 20, 'Precio.............: ');
ImpText (13, 20, 'Cantidad Disponible: ');
ImpText (14, 20, 'Autor..............: ');
ImpText (15, 20, 'Idioma.............: ');
ImpText (16, 20, 'Editorial..........: ');
Imptext (20, 10, 'Codigos:Pulse el numero entre < >');
Imptext (21, 10, '<1> L01-Cocina, <2> L02-Recreativo, <3> P03-Historico ');
gotoxy (29,9); write (NumLibro);
CodigoLibro[NumLibro] := LeerNumeroEntero(10, 41, 'Ingrese cero <0> o pulse <ENTER> para salir');

while CodigoLibro[NumLibro] <> 0 do
begin
TituloLibro[NumLibro] := LeerTexto(11, 41, 'Ingrese el titulo del libro');
PrecioLibro[NumLibro] := LeerNumeroReal(12, 41, 'Ingrese el precio del Libro');
CantidadLibro[NumLibro] := LeerNumeroEntero(13, 41, 'Ingrese cantidad de libros disponibles');
AutorLibro[NumLibro] := LeerTexto(14, 41, 'Autor del Libro');
IdiomaLibro[NumLibro] := LeerTexto(15, 41, 'Idioma en que se publica el libro');
EditorialLibro[NumLibro] := LeerTexto(16, 41, 'Editorial que elabora el libro');

BorrarCampos;
NumLibro := Numlibro + 1;
gotoxy (29,9); write (NumLibro);
CodigoLibro[Numlibro] := LeerNumeroEntero(10, 41, ' Ingrese cero <0> o pulse <ENTER> para salir');

end;
NLibro:= NumLibro;
end;

begin

repeat
{--- Limpiar la pantalla e imprimir el men£ ---}
clrscr;
Opcion:= ' ';
ImpText (7, -1, 'DISTRIBUIDORA DISPUBLI');
ImpText (8, -1, '-----------------------------------');
ImpText (9, 22, '1.- Ingresar Datos de Revistas');
ImpText (10, 22, '2.- Ingresar Datos de Periodicos');
ImpText (11, 22, '3.- Ingresar Datos de Libros');
ImpText (12, 22, '4.- Revistas');
ImpText (13, 22, '5.- Periodicos');
ImpText (14, 22, '6.- Libros');
ImpText (15, 22, '7.- Salir del Sistema');

{--- Leer la opci¢n de men£ y ejecutar modulos ---}
Opcion := LeerCaracter (18, 22, 'Indique una Opcion (1-7): ', 'Indique una opcion pulsando del 1 al 7');
Case (Opcion) of
'1' : IngresarDatosRevistas;
'2' : IngresarDatosPeriodicos;
'3' : IngresarDatosLibros;
'4' : ImprimirDatosRevistas;
'5' : ImprimirdatosPeriodicos;
'6' : ImprimirdatosLibros;
'7' : ImpText (1, 1, 'Gracias por usar el sistema...');
Else
begin
ImpText (19, 22, '*** Opcion Errada ***');
delay(10000);
end;
end;
until (Opcion = '7');
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa1. UltimaParte

Publicado por edwin (71 intervenciones) el 10/12/2009 19:32:17
aqui esta tu error
en el procedimiento IngresarDatosPeriodicos


CodigoRevista[NumPeriodico] := LeerNumeroEntero(10, 41, ' Ingrese cero <0> o pulse <ENTER> para salir');

while CodigoPeriodico[NumPeriodico] <> 0 do

ingresas el valor en codigoRevista[Numperiodico]
pero en el while comparas CodigoPeriodico[NumPeriodico]

por eso no entra al ciclo

utiliza registros, creo que seria mas facil

puedes usar arreglos pero con registros

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa1. UltimaParte

Publicado por JoséChavier (8 intervenciones) el 10/12/2009 21:10:44
Ok muchas gracias... ahora si funciona... pero ahora me aparece otro error al momento de ver los datos. Le hice el cambio y lee los datos. Pero al momento de ver los datos me sale el error exit code 200. Igual en la parte de periodico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Programa1. UltimaParte

Publicado por edwin (71 intervenciones) el 10/12/2009 23:52:14
por la misma razon que la anterior

for NumPeriodico:= 1 to (NPeriodico - 1) do
for j:= 1 + NumPeriodico to (NPeriodico) do
if (CodigoPeriodico[NumRevista] < CodigoPeriodico[j]) then

estas manejando NumRevista cuando debes de Manejar NumPeriodico
se me hace que hiciste copy paste :)


he visto que manejas string, de milagro no se desborda tu pila, a menos de que uses freepascal, se te puede desbordar..
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar