karlangadas

TP pc3 2015-1 pregunta1

Oct 30th, 2015
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.85 KB | None | 0 0
  1. program pregunta1;
  2. type TArrPersonas = array [1..1000] of String;
  3.      TArrEnteros = array [1..1000] of Integer;
  4. procedure LeerArchivo(var personas: TArrPersonas;var dni,telef: TArrEnteros;
  5.                       var numPersonas: Integer);
  6. var archPersonas: Text;
  7.     i,aux1,aux3: Integer;
  8.     aux2: String;
  9. begin
  10.   assign(archPersonas,'personas.txt');
  11.   numPersonas:=0;
  12.   for i:=1 to 1000 do begin
  13.     personas[i]:=#0;
  14.     dni[i]:=0;
  15.     telef[i]:=0;
  16.   end;
  17.   reset(archPersonas);
  18.   while not eof(archPersonas) do begin
  19.     inc(numPersonas);
  20.     readln(archPersonas,aux1);
  21.     readln(archPersonas,aux2);
  22.     readln(archPersonas,aux3);
  23.     dni[numPersonas]:=aux1;
  24.     personas[numPersonas]:=aux2;
  25.     telef[numPersonas]:=aux3;
  26.   end;
  27.   close(archPersonas);
  28.  
  29. end;
  30. procedure HacerArchivoSR(var personas,personasSR: TArrPersonas;var dni,dniSR,telef,telefSR: TArrEnteros;
  31.                          numPersonas: Integer; var numPersonasSR: Integer);
  32. var archPersonasSR:Text;
  33.     i,v,u: Integer;
  34.     repetido: Boolean;
  35.  
  36. begin
  37.   for i:=1 to 1000 do begin
  38.     personasSR[i]:=#0;
  39.     dniSR[i]:=0;
  40.     telefSR[i]:=0;
  41.   end;
  42.   assign(archPersonasSR,'personasSR.txt');
  43.   rewrite(archPersonasSR);
  44.  
  45.   personasSR[1]:=personas[1];
  46.   dniSR[1]:=dni[1];
  47.   telefSR[1]:=telef[1];
  48.   u:=1;
  49.   for i:=2 to numPersonas do begin
  50.     v:=i-1;
  51.     repetido:=false;
  52.     while (v>=1) and (repetido=false) do begin
  53.       if dni[i]=dni[v] then repetido:=true;
  54.       v:=v-1;
  55.     end;
  56.     if not repetido then begin
  57.       inc(u);
  58.       dniSR[u]:=dni[i];
  59.       telefSR[u]:=telef[i];
  60.       personasSR[u]:=personas[i];
  61.     end;
  62.   end;
  63.   numPersonasSR:=u;
  64.   //Imprimir
  65.   for i:=1 to numPersonasSR do begin
  66.     writeln(archPersonasSR,dniSR[i],personasSR[i]:20,telefSR[i]:20);
  67.   end;
  68.   close(archPersonasSR);
  69. end;
  70. procedure HacerArchivoCR(var personas,personasSR: TArrPersonas;var dni,dniSR,telef,telefSR: TArrEnteros;
  71.                          numPersonas,numPersonasSR: Integer);
  72. var repetidos: TArrEnteros;
  73.     v,i:Integer;
  74.     archPersonasCR: Text;
  75. begin
  76.   for i:=1 to 1000 do begin
  77.     repetidos[i]:=-1;
  78.   end;
  79.   assign(archPersonasCR,'personasCR.txt');
  80.   rewrite(archPersonasCR);
  81.  
  82.   for i:=1 to numPersonasSR do begin
  83.      for v:=1 to numPersonas do begin
  84.        if dniSR[i]=dni[v] then inc(repetidos[i]);
  85.      end;
  86.   end;
  87.   //Imprimir
  88.   for i:=1 to numPersonasSR do begin
  89.     writeln(archPersonasCR,dniSR[i],personasSR[i]:10,telefSR[i]:15,repetidos[i]:4);
  90.   end;
  91.   close(archPersonasCR);
  92. end;
  93.  
  94. var personas,personasSR: TarrPersonas;
  95.     dni,telef,dniSR,telefSR: TArrEnteros;
  96.     numPersonas,numPersonasSR: Integer;
  97.  
  98. begin
  99.   LeerArchivo(personas,dni,telef,numPersonas);
  100.   HacerArchivoSR(personas,personasSR,dni,dniSR,telef,telefSR,numPersonas,numPersonasSR);
  101.   HacerArchivoCR(personas,personasSR,dni,dniSR,telef,telefSR,numPersonas,numPersonasSR);
  102. end.
Advertisement
Add Comment
Please, Sign In to add comment