
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.
"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


1