Título: Registros en Pascal Publicado por: Corso en 26 Diciembre 2005, 02:04 am Problema con codigo que no consigo sacar.
Esto es lo que yo e hecho: Código: program cuadros; Tengo que hacer esto: Añadir al programa anterior una función de nombre suma_coleccion. Esta función devuelve como resultado de la función el valor total de la colección. Pero como es posible que algunos cuadros no estén a la venta, esta función además devolverá como parámetro por referencia el número de cuadros que no están en venta. Y llamarlo de esta manera, y no puedo hacerlo de otra: Código:
De lo que yo e codeado, se que todo funciona menos la función suma_coleccion que se me solicita codear y llamar de esa precisa manera... Ideas? Lo de Código:
Y por que no me deja llamar asi Código: lectura[i].cuadros.precio; Salu2. Título: Re: Registros en Pascal Publicado por: jvchino en 26 Diciembre 2005, 06:49 am Primero veamos algunas "cosillas" de tu codificación y luego vienen las sugerencias.
Dentro de la función "suma_coleccion" tienes la siguiente sentencia: Código: function suma_coleccion(lectura:Tcoleccion;tamcoleccion:integer;VAR no_en_venta:real):real; Eso se llama "Recursividad", es decir dentro de una función llamas a la misma funcion. Eso es válido pero hay que saber usarlo. Personalmente no me gusta mucho la recursividad pero algunas veces su uso es necesario. Además que te faltarían los parámetros: suma_coleccion := suma_coleccion(parámetros) Dicho esto, pasamos a: Citar Y por que no me deja llamar asi Código: lectura[i].cuadros.precio; Aclarando que "PRECIO" no es un registro sino un CAMPO de un registro. Para acceder a un campo del registro va: variable_tipo_registro.campo En este caso las variables tipo registro son cada una de los datos del array coleccion1, es decir coleccion1[1], coleccion1[2] y coleccion1[3]; que en la función son asignadas al array "lectura" En resumen: Para acceder al campo precio (dentro de la función) debes escribir: lectura.precio Ahora sí pasamos a la parte más importante. Primero debes tener una variable suma_aux dentro de la función: Código: function suma_coleccion(lectura:Tcoleccion;tamcoleccion:integer;VAR no_en_venta:real):real; Sugerencias final: La variable "no_en_venta" al ser un contador debería ser del tipo integer. Esta variable deber tener como valor inicial "CERO". Algunos compiladores inicializan automáticamente las variables numéricas con cero, por lo cual ya no es necesario escribir la sentencia (En mi version del Turbo Pascal 5.5 sí es necesario inicializarlo) SUERTE Título: Re: Registros en Pascal Publicado por: Corso en 26 Diciembre 2005, 14:47 pm Gracias jvchino.
No pego el code, pero ya le asigne al "contador" no_en_venta 0 y de tipo integer. Salu2. Título: Re: Registros en Pascal Publicado por: sv51 en 21 Junio 2008, 02:24 am :laugh: gracias a Corso por publicar ese registro en pascal, yo estoy haciendo una agenda y no me salia el array pero al ver el ejemplo de Corso lo pude corregir.
Gracias a Corso y a todos los usuarios de este foro. Título: Re: Registros en Pascal Publicado por: tugatime en 4 Diciembre 2012, 15:21 pm Bueno, olviden mi pregunta ya esta resuelta.
Título: Re: Registros en Pascal Publicado por: joseanh en 29 Junio 2013, 03:40 am Ayuda con este ejercicio, no corre porque el array de registro esta lleno, que hago?
program registro(input,output); uses crt; const numpersona=3; type carasteristica=record cedula,edad,telefono: integer; apellido,nombre,sexo,nacionalidad: string; end; lista=Array[1..numpersona] of carasteristica; var personas:lista; var cant:integer; procedure insertar(var personas:lista; var cant:integer); var ced,ed,tel,x:integer; var ape,nom,nac:string; var encontrado:integer; begin encontrado:=0; writeln('ingrese cedula'); readln(ced); if (cant=0) then encontrado:=0 else for x:=1 to cant do begin if (ced=personas
encontrado:=1; end; end; if (encontrado=0) then begin cant:=cant+1; writeln('ingrese apellido'); readln(ape); writeln('ingrese nombre'); readln(nom); writeln('ingrese edad'); readln(ed); writeln('ingrese nacionalidad'); readln(nac); writeln('ingrese telefono'); readln(tel); personas[cant].cedula:=ced; personas[cant].apellido:=ape; personas[cant].nombre:=nom; personas[cant].edad:=ed; personas[cant].nacionalidad:=nac; personas[cant].telefono:=tel; end else writeln(' Registro ya existe'); end; procedure mostrar(var personas:lista; var cant:integer); var x: integer; begin for x:=1 to cant do writeln(' cedula: ',personas
end; begin end. procedure ordenar(var personas:lista; var cant:integer); var x,y,z:integer; var aux:dat; begin for x:=1 to cant do begin for y:=x+1 to cant do begin if personas
begin aux
cant[y]:=aux[z]; end; end; end; end; procedure modificar(var personas:lista; var cant:integer); var x,valor,encon,posicion,nuevodat:integer; var opcion:string; begin repeat clrscr; encon:=0; writeln('ingrese valor a modificar'); readln(valor); for x:=1 to cant do begin if (valor= personas
encon:=1; posicion:=x; end; end; if encon=0 then writeln('dato no encontrado') else begin for x:=posicion to cant do personas
writeln('ingrese nueva dato'); readln(nuevodat); personas
writeln('desea buscar otra opcion'); readln(opcion); until (opcion='n') or (opcion='N'); end; procedure buscar(var personas:lista; var cant:integer); var valor:integer; var x,encontrado:integer; var opcion:string; begin repeat clrscr; encontrado:=0; writeln('ingrese valor a buscar'); readln(valor); for x:=1 to cant do begin if (valor= personas
encontrado:=1; end; end; if encontrado=0 then writeln('no encontrado'); else begin writeln('valor encontrado',valor); writeln('desea buscar otro?'); end; readln(opc); until (opc='n') or opc(='N'); end; procedure eliminar(var personas:lista; var cant:integer); var x,i,encontrado,posicion,cedula:integer; var opci,valor:string; begin repeat clrscr; encontrado:=0; writeln('eliminar valor'); readln(valor); for x:=1 to cant do if (valor= personas
encontrado:=1; posicion:=x; end; if encontrado=0 then writeln('datos no encotrados') else for x:=posicion to cant do begin personas
personas[x,1]:=''; personas[x,2]:=''; personas[x,3]:=''; personas[x,4]:=''; personas[x,5]:=''; writeln('Quiere borrar otra fila'); readln(opci); until opci='n'; end; var opcion:integer; begin repeat clrscr; writeln('menu principal'); writeln('1 insertar'); writeln('2 mostrar'); writeln('3 ordenar'); writeln('4 modificar'); writeln('5 buscar'); writeln('6 eliminar'); writeln('7 salir'); repeat readln (opcion); until (opcion >0) and (opcion <8); clrscr; case (opcion) of 1:insertar(personas); 2:mostrar(personas); 3:ordenar(personas); 4:modificar(personas); 5:buscar(personas); 6:eliminar(personas); end; until opcion=7; readkey; end. |