|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - twipsy
Páginas: [1]
1
« en: Viernes 21 de Enero de 2011, 20:35 »
tengo un problema con un programa que tengo que hacer. el programa trata sobre una agenda de amigos en el que los datos se guardan en un archivo y la parte que me da problemas consiste en lo siguiente -compactar los datos de forma que eliminemos los marcados como borrados (o sea, que si teníamos 23 ocupados y 5 estaban marcados como borrados, al final he de tener 18 ocupados, 0 marcados como borrados y han de ocupar las 18 primeras posiciones en el vector). como podreis observar en el codigo, todo el programa esta bien excepto el procedure en el que se eliminan esos datos borrados program registres; uses crt; { type vector = array [1..100] of integer; type matriz = array [1..10,1..5] of integer; type mezcla = array [1..10] of matriz;} type persona = record nombre : string[15]; ap1,ap2 : string[12]; varon : boolean; direccion : string[30]; any_nac : integer; mes_nac : byte; dia_nac : byte; borrado : boolean; end; type vecpersonas = array [1..100] of persona; type agenda = record num_ocupados : byte; num_borrados : byte; personas : vecpersonas; end; Type fichero = file of agenda; procedure pulsa_tecla; begin gotoxy(1,24); write('Pulsa una tecla para continuar...'); readkey; clrscr; end; procedure presenta; begin clrscr; gotoxy(5,10); write('Programa de mantenimiento de una agenda'); gotoxy(5,11); write('======================================='); pulsa_tecla; end; procedure ficha; begin clrscr; gotoxy(10,5); write('Persona num :'); gotoxy(10,7); write('Nombre :'); gotoxy(10,8); write('Apellido 1 :'); gotoxy(10,9); write('Apellido 2 :'); gotoxy(10,10); write('Varón (s/n)?:'); gotoxy(10,11); write('Dia nacim. :'); gotoxy(10,12); write('Mes nacim. :'); gotoxy(10,13); write('Any nacim. :'); end; procedure muestra(i:byte; p:persona); begin ficha; gotoxy(24,5); write(i); gotoxy(24,7); write(p.nombre); gotoxy(24,8); write(p.Ap1); gotoxy(24,9); write(p.Ap2); gotoxy(24,10); if p.varon then write('Sí') else write('No'); gotoxy(24,11); write(p.dia_nac); gotoxy(24,12); write(p.mes_nac); gotoxy(24,13); write(p.any_nac); pulsa_tecla; end; procedure lee(i:byte; var p:persona); var op : char; begin ficha; gotoxy(24,5); write(i); gotoxy(24,7); readln(p.nombre); gotoxy(24,8); readln(p.Ap1); gotoxy(24,9); readln(p.Ap2); gotoxy(24,10); repeat op := readkey until op in ['s','S','n','N']; write(op); if op in ['s','S'] then p.varon := true else p.varon := false; gotoxy(24,11); readln(p.dia_nac); gotoxy(24,12); readln(p.mes_nac); gotoxy(24,13); readln(p.any_nac); p.borrado := false; pulsa_tecla; end; procedure nuevo(var a:agenda); var p : persona; begin inc(a.num_ocupados); lee(a.num_ocupados,p); a.personas[a.num_ocupados] := p; end; procedure modifica(var a:agenda); var num : byte; p : persona; begin clrscr; gotoxy(10,5); write('Dime el número de persona que quieres modificar: '); readln(num); lee(num,p); a.personas[num] := p; end; procedure lista(var a:agenda); var i : byte; begin clrscr; if (a.num_ocupados - a.num_borrados) = 0 then begin gotoxy(10,5); write('La agenda está vacía'); end else for i := 1 to a.num_ocupados do if not (a.personas[i].borrado) then muestra(i,a.personas[i]); pulsa_tecla; end; procedure borra(var a:agenda); var num : byte; begin clrscr; gotoxy(10,5); write('Dime el número de persona que quieres borrar: '); readln(num); a.personas[num].borrado := true; inc(a.num_borrados); end; procedure recupera(var a:agenda); var num : byte; begin clrscr; gotoxy(10,5); write('Dime el número de registro que quieres recuperar: '); readln(num); a.personas[num].borrado := false; dec(a.num_borrados); end; procedure elimina(var a:agenda); {este es la parte que no me funciona} var num: byte; var i: byte; begin for num:= 1 to a.num_ocupados do begin if not a.personas[num].borrado then begin inc (i); a.personas[i] := a.personas[num]; end; end; a.num_ocupados := num; a.num_borrados := 0; end; procedure menu(var a:agenda); var op : char; begin repeat clrscr; gotoxy(10,5); write('M E N U'); gotoxy(10,6); write('======='); gotoxy(10,8); write('1 - Nuev@ amig@'); gotoxy(10,9); write('2 - Modifica amig@'); gotoxy(10,10); write('3 - Lista amig@s'); gotoxy(10,11); write('4 - Elimina amig@s'); gotoxy(10,12); write('5 - Recupera amig@s'); gotoxy(10,13); write('6 - Compacta amig@s'); gotoxy(10,14); write('7 - Salir del programa'); gotoxy(10,17); write('Pulsa el número de tu elección: '); repeat op := readkey until op IN ['1'..'7']; case op of '1' : nuevo(a); '2' : modifica(a); '3' : lista(a); '4' : borra(a); '5' : recupera(a); '6' : elimina(a); end; until op = '7'; end; procedure lee_del_fichero(var f:fichero; var a:agenda); begin assign(f,'agenda.dat'); {$I-} reset(f); {$I+} if IOresult > 0 then begin a.num_ocupados := 0; a.num_borrados := 0; end else read(f,a); end; procedure guarda_al_fichero(var f:fichero; a:agenda); begin rewrite(f); write(f,a); close(f); end; var a:agenda; f:fichero; begin presenta; lee_del_fichero(f,a); menu(a); guarda_al_fichero(f,a); end.
como puedo solucionarlo? gracias y disculpen las molestias, pero empiezo a creer que soy un negado en la programacion
2
« en: Martes 18 de Enero de 2011, 20:41 »
mi nick es el nombre de la mascota de la expo 2000 de Hanover creado por Javier Mariscal. tambien es el nombre de una serie de television con dicha mascota de 23 capitulos que se emitio en Televisio de Catalunya
3
« en: Martes 18 de Enero de 2011, 20:35 »
buenas tardes. alguien podria explicarme un poco como funciona el tema del tratamiento de ficheros?
4
« en: Viernes 10 de Diciembre de 2010, 21:24 »
por fin he conseguido terminarlo y ya esta entregado. muchas gracias por la ayuda
5
« en: Viernes 10 de Diciembre de 2010, 16:14 »
ya he arreglado el switch y funciona perfectamente. ahora debo arreglar la parte del burbuja ya que no me sale el resultado que debe salir (directamente solo ordena 1 numero, el resto nada).
estoy trabajando en la solucion pero me seria de ayuda si me pudierais decir que debo cambiar del codigo
6
« en: Jueves 9 de Diciembre de 2010, 22:51 »
estoy haciendo unos ejercicios de ordenacion que me ha mandado el g*********. el caso es que en el de ordenacion switch me da un error de compilacion que o acabo de entender program vectores01; uses crt; const mini = 1; maxi = 100; type vector = array [mini..maxi] of integer; Procedure despide; begin gotoxy(5,22); write('Pulsa una tecla para continuar...'); readkey; end; procedure escribe_vector(v:vector;N:byte); var i : integer; begin for i := mini to N do write(v[i]:5); writeln; end; procedure SeleccionDirecta (v : vector; N:byte); var vuelta,recorrido, valor_mas_peque,pos_del_mas_peque : integer; begin escribe_vector(v,N); for vuelta := mini to N - 1 do begin valor_mas_peque := v[vuelta]; pos_del_mas_peque := vuelta; for recorrido := vuelta + 1 to N do if v[recorrido] < valor_mas_peque then begin valor_mas_peque := v[recorrido]; pos_del_mas_peque := recorrido; end; if vuelta < pos_del_mas_peque then begin v[pos_del_mas_peque] := v[vuelta]; v[vuelta] := valor_mas_peque; end; escribe_vector(v,N); end; despide; end; procedure Baraja(v:vector;N:byte); Var i, j, index : Integer; Begin For i := 1 to N do Begin index := v[i]; j := i-1; While ((j >= 0) AND (v[j] > index)) do Begin v[j+1] := v[j]; j := j - 1; End; v[j+1] := index; escribe_vector(v,N); End; despide; end; procedure Burbuja(v:vector;N:byte); var i,j,index:integer; begin for i:=1 to N-1 do for j:=1 to N-i do begin if v[i] > v[j+1] then begin index:=v[j]; v[j]:=v[j+1]; v[j+1]:=index; end; escribe_vector(v,N); end; despide; end; procedure Switch(v:vector;N:byte); var i,j,index:integer; cambiado: boolean; begin clrscr; repeat cambiado := false; for i := N downto 2 do if v[i] < v[j+1] then {esta es la linea que da error} begin index:=v[j]; v[j]:=v[j+1]; v[j+1]:=index; cambiado := true; end; until not cambiado; despide; end; procedure Sacudida(v:vector;N:byte); begin clrscr; gotoxy(5,5); write('Este método aún no lo tengo implementado'); despide; end; procedure Shell(v:vector;N:byte); begin clrscr; gotoxy(5,5); write('Este método aún no lo tengo implementado'); despide; end; procedure presenta(var N:byte); begin clrscr; gotoxy(5,5); write('Este programa nos ordena un vector de N valores'); gotoxy(5,6); write('Primero me rellena aleatoriamente el vector'); gotoxy(5,7); write('Y luego el usuario elige un método de ordenación'); gotoxy(5,8); write('================================================'); gotoxy(5,10); write('Dime cuántos valores quieres que tengamos: '); readln(N); despide; end; procedure rellena_vector(var v:vector; N:byte); var i : integer; begin randomize; for i := mini to N do v[i] := random(1000); end; function menu(v:vector;N:byte):char; var c : char; begin clrscr; gotoxy(5,5); write('M E N U D E O R D E N A C I O N'); gotoxy(5,6); write('==================================='); gotoxy(5,8); write('1.- Método selección directa'); gotoxy(5,9); write('2.- Método baraja'); gotoxy(5,10); write('3.- Método burbuja'); gotoxy(5,11); write('4.- Método switch'); gotoxy(5,12); write('5.- Método sacudida'); gotoxy(5,13); write('6.- Método shell'); gotoxy(5,14); write('7.- Salir'); gotoxy(5,17); write('Pulsa el número de tu elección: '); repeat c := readkey; until c IN ['1'..'7']; clrscr; case c of '1' : SeleccionDirecta(v,N); '2' : Baraja(v,N); '3' : Burbuja(v,N); '4' : Switch(v,N); '5' : Sacudida(v,N); {Opcional, sólo para sacar un 10} '6' : Shell(v,N); {Opcional, sólo para sacar un 10} end; menu := c; end; var v : vector; N : byte; BEGIN presenta(N); rellena_vector(v,N); repeat until menu(v,N) = '7'; END.
el error en cuestion es el siguiente: sin título.pas(94,20) Warning: Local variable "j" does not seem to be initialized (uso geany) como lo puedo solucionar? esta bien el resto del codigo? gracias y disculpen las molestias
7
« en: Jueves 9 de Diciembre de 2010, 20:04 »
tengo una pregunta. es posible insertar un procedure dentro de otro procedure?
8
« en: Martes 23 de Noviembre de 2010, 21:03 »
Esto es un francés, un japonés y un español. Dice el japonés: -en mi país hay un tren tan rápido que se llama el tren bala Y dice es francés: -en mi país hay un tren que va por debajo del agua y que une París con Londres Y dice el español: -tss! en mi país hay un tren que va de Madrid a Sevilla, parando en ciudad-real, Puertollano y Córdoba. En 2 horas y un poquito. Y dice el japonés: -quilo! Que pasa? Que va volando? Y dice el español: -AVE
9
« en: Martes 23 de Noviembre de 2010, 20:47 »
He conseguido resolver el ejercicio y lo he entregado. El profe me ha puesto un 7,5
10
« en: Sábado 20 de Noviembre de 2010, 13:11 »
en esa tarea de las mayusculas os pondre el codigo en cuanto pueda sacarlo de la particion de linux donde esta el archivo
muchas gracias por el recibimiento
11
« en: Sábado 20 de Noviembre de 2010, 13:09 »
muchas gracias
12
« en: Sábado 20 de Noviembre de 2010, 11:34 »
tengo que hacer un programa que me cuente cuantas veces se repite la palabra "pepe" en una frase. el problema esta en que no consigo que me cuente un solo pepe. os mando el codigo a ver como se puede solucionar Program Pepe; uses crt; var frase : string; cont, i : integer; begin clrscr; writeln('Ingresa frase'); readln(frase); cont := 1; for i:=1 to length(frase) do if frase[i] = 'pepe' then cont := cont + 1; writeln('La frase contiene ',cont,' pepe/s...'); readkey; end.
13
« en: Miércoles 17 de Noviembre de 2010, 17:40 »
os pondre el codigo en cuanto pueda conectar el disco duro externo. lo que si os puedo decir es que tengo el formulario hecho y me devuelve la frase tal cual esta escrita ya que no funciona la funcion. ni siquiera se como tengo que hacerlo ya que mi profe de programacion es un g*********(disculpen el comentario, pero me tiene frito)
14
« en: Martes 16 de Noviembre de 2010, 22:51 »
a ver si podeis ayudarme a hacer este programa:
Pedimos una frase por teclado y que nos la muestre de forma que todas las palabras estén con la primera letra en mayúscula y las demás en minúscula, Todo ello independientemente de cómo se hayan introducido.
muchas gracias
15
« en: Martes 16 de Noviembre de 2010, 22:49 »
buenas noches, soy nuevo en este lugar y actualmente estoy estudiando programacion (eso si no envio a mi profe a la...), asi que espero que me ayudeis con las dudas que tenga
Páginas: [1]
|
|
|