AYUDA

Iniciado por joseanh, 30 Junio 2013, 02:43 AM

0 Miembros y 1 Visitante están viendo este tema.

joseanh

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
.cedula) then
                 begin
                    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
.cedula,' apellido: ',personas
.apellido,' nombre: ',personas
.nombre,' edad: ',personas
.edad,' nacionalidad: ',personas
.nacionalidad,' telefono: ',personas
.telefono);
readkey;
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
>cant[y] then
         for z:=1 to cant do
            begin
               aux
:=cant[z];
               cant[z]:=cant[y];
               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
.cedula)then
          begin
               encon:=1;
               posicion:=x;
          end;
         end;

   if encon=0 then
   writeln('dato no encontrado')
    else
      begin
        for x:=posicion to cant do
            personas
.cedula:=cant[nuevodat];
           end;

   writeln('ingrese nueva dato');
   readln(nuevodat);
   personas
.cedula:=cant[nuevodat];

   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
.cedula) then
begin
   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
.cedula) then
begin
     encontrado:=1;
     posicion:=x;
  end;
     if encontrado=0 then
        writeln('datos no encotrados')
     else
          for x:=posicion to cant do
begin
              personas
.cedula:=cant[x+1,1];
              personas
.cedula:=cant[x+1,2];
              personas
.cedula:=cant[x+1,3];
              personas
.cedula:=cant[x+1,4];
              personas
.cedula:=cant[x+1,5];
          end;

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.

engel lex

deja de repostear lo mismo -.-

duplicado
http://foro.elhacker.net/ejercicios/ayuda-t393782.0.html;msg1866100

(en realidad triplicado con otro por ahí que hiciste)

va contra las reglas...

si no te responden es porque no hay alguien conectado que sepa hacerlo

consejos para postear...

1- di lo que tienes (codigo, ya lo publicaste)
2- di lo que necesitas (que se supone que hace eso)
3- di en donde tienes problema y por qué puntualmente (incluye textualmente errores lanzados, da detalles de que está haciendo y que deberia)

4- entre las herramientas de edicion del post hay una lista desplegable que dice GeSHi le das, escoges tu lenguaje y lo pegas entre las etiquetas que te coloca, esto es para que sea comodamente visible
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.