Pascal/Turbo Pascal - CORRECCION DE EJERCICIO

 
Vista:
sin imagen de perfil

CORRECCION DE EJERCICIO

Publicado por Matias (4 intervenciones) el 06/05/2016 22:32:16
Hola que tal programadores, les vengo a subir mi solucion al ejercicio siguiente , quiero ,si puede ser que me corrigan y me ayuden en los errores que tengo en mi solucion, desde ya gracias, el planteo del problema es el siguiente:

"MAS Automotores posee 2 sucursales, una en Ctes. y otra en Rcia. Para manejar sus deudores dispone de una secuencia de caracteres denominada DEU donde cada deudor está precedido por un simbolo # .

Para cada deudor comienza con el carácter #, luego su DNI, “|”, codigo de sucursal, “|”, y finalmente la marca del automóvil , “|” su modelo (año de compra cuatro digitos).



Ejemplo: #17651785|1|FORD FIESTA|2014#29465282|2|FIAT PALIO|2015 ….



Se desea obtener 2 secuencias de salida (DEU-CTES y DEU-RCIA), una por cada sucursal, que contenga los deudores que hayan comprado automóviles en los 5 últimos años.

Sabemos que el código 1 pertenece a Ctes y el 2 a Rcia.

El formato de cada archivo de salida deberá ser: DNI (numérico de 8), MARCA, &MODELO(formato año)

Al final del proceso el programa deberá informar por pantalla la cantidad de deudores de la secuencia de entrada y que porcentaje corresponde a cada sucursal."

EL CODIGO ES

program miprograma;
var
deu, deu_ctes, deu_rcia, aux:text;
v,va:char;
b1,b2:boolean;
t,cs1,cs2:real;
porcent1,porcent2:real;
i:integer;
anio:string[4];
begin
assign(deu,'C:\Users\JMASCOTENA\Desktop\Deu'); { secuencia de entrada .text que dentro de el se encuentran los datos que hay que analizar, en el planteo del problema esta el ejemplo}
reset(deu);
assign(deu_ctes,'C:\Users\JMASCOTENA\Desktop\deu_ctes'); { secuencia de salida de salida 1}
rewrite(deu_ctes);
assign(deu_rcia,'C:\Users\JMASCOTENA\Desktop\deu_rcia');
rewrite(deu_rcia); { secuencia de salida 2}
assign(aux,'C:\Users\JMASCOTENA\Desktop\aux1'); { secuencia auxiliar }
b1:=false;
b2:=false;
t:=0;
cs1:=0;
cs2:=0;
read(deu,v);
while not eof(deu) do
begin
if (v ='#')then
read(deu,v);
t:= t+1;
rewrite(aux);
for i:= 1 to 9 do
begin
va:=v;
write(aux,va);
read(deu,v);
end;
readln;
read(deu,v);

if v='1' then
begin
b1:= true;
cs1:=cs1+1;
read(deu,v);
end
else
begin
b2:=true;
cs2:=cs2+1;
read(deu,v);
end;
va:=v;
write(aux,va);
read(deu,v);
while v<>'|' do
begin
va:=v;
write(aux,va);
read(deu,v);
end;

va:=v;
write(aux,va);
read(deu,v);
close(aux);

while v<>'#' do
begin
anio:=v;
read(deu,v);
end;

if (anio='2012')or (anio='2013')or(anio='2014')or (anio='2015')or (anio='2016') then
begin
if b1 then
begin
reset(aux);
read(aux,va);
while not eof(aux)do
begin
write(deu_ctes,va);
read(aux,va);
end;
readln;
close(aux);
write(deu_ctes,anio);
end;

if b2 then
begin
reset(aux);
read(aux,va);
while not eof(aux)do
begin
write(deu_ctes,va);
read(aux,va);
end;

close(aux);
write(deu_rcia,anio);

end;
while (not eof(deu)) and (v <> '') do
begin
read(deu,v);
end;

end;
read(deu,v);
readln;
end;
close(deu);
close(deu_ctes);
close(deu_rcia);
readln(deu);
write('Cantidad deudores:',t);
porcent1:=((cs1*100)/t); porcent2:=((cs2*100)/t);
write('Porcentaje deudores sucursal de Corrientes:',porcent1,'%');
write('Porcentaje deudores sucursal de Resistencia:',porcent2,'%');
readln;
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder

CORRECCION DE EJERCICIO

Publicado por ramon (2158 intervenciones) el 09/05/2016 11:29:28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
{Mira Esto}
 
 program miprograma;
  uses
   crt;
     const
       texto = '#17651785|1|FORD FIESTA|2014#29465282|2|FIAT PALIO|2015';
   var
   deu, deu_ctes, deu_rcia, aux : text;
   porcent1, porcent2 : real;
   ct, rc, total : integer;
   let : char;
   tomado : string;
 
   procedure inicio_proceso;
   begin
     ct := 0;
     rc := 0;
     total := 0;
     {Creo el archivo de inicio guardando el contenido de la
      constante texto}
     assign(deu,'C:\tp\bin\deu.txt');
    {$I-} reset(deu); {$I+}
    if ioresult = 0 then
    begin
       {Si existe lo borro y creo de nuevo}
       close(deu);
       erase(deu);
       assign(deu,'C:\tp\bin\deu.txt');
       rewrite(deu);
       writeln(deu,texto);
       close(deu);
       assign(deu,'C:\tp\bin\deu.txt');
       reset(deu);
    end
  else
     begin
        {Si no existe lo creo}
        rewrite(deu);
        writeln(deu,texto);
        close(deu);
        assign(deu,'C:\tp\bin\deu.txt');
        reset(deu);
     end;
     assign(deu_ctes,'C:\deu_ctes.txt');
     rewrite(deu_ctes);
     assign(deu_rcia,'C:\deu_rcia.txt');
     rewrite(deu_rcia);
    while not Eof(deu) do
    begin
       read(deu,let);
       if let = #35 then
       begin
          while let <> #124 do
          begin
             read(deu,let);
          end;
          read(deu,let);
          if let = '1'then
          ct := ct + 1;
          if let = '2' then
          rc := rc + 1;
          total := total + 1;
       end;
    end;
  end;
 
  begin
     clrscr;
     inicio_proceso;
     writeln('  Los Valores Son Ct = ',ct,'   Rc = ',rc, ' Total = ',total);
     writeln;
     porcent1:=((ct * 100) / total);
     porcent2:=((rc * 100) / total);
     writeln('  Procentaje Ct = ',porcent1:0:2,'%');
     writeln('  Procentaje Rc = ',porcent2:0:2,'%');
     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
1
Comentar