Pascal/Turbo Pascal - pregunta

 
Vista:

pregunta

Publicado por jona th an (4 intervenciones) el 26/05/2007 22:26:28
tengo una duda de un problema

si me dicen que tengo 4 tipo de billetes
el tipo a vale 1 , 5*a=b osea b=5 , 2b=c osea c=10 y d=2c o D=20

me dice que ingresando por teclado una determinada cantidad de dinero, me diga todas las formas posibles de llegar al resultado qe ingrese, pero sin pasarme y sin que me falte

no tengo idea y es para el cole si alguno me puede ayudar se los agradesco
igual yo lo pense asi una parte esta bien pero nose como continua

program plata;
uses crt;
var
sal:text;
a,b,c,k,d,n:integer;
begin
clrscr;
k:=1;
assign(sal,'plata.out');
rewrite(sal);
writeln('cantidad de billetes "a" ');
readln(n);
writeln(sal,'Nro a b c d');
for a:=1 to n do | aca tengo el problema
for b:=1 to n div 5 do |
for c:=1 to n div 10 do |
for d:=1 to n div 20 do |
if a+b*5+c*10+d*20=n then | y este es el mas importante
begin
write(sal,k,a:4,b:4,c:4,d:4);
writeln(sal);
inc(k);
end;

close(sal);
end.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pregunta

Publicado por Alruhi (2 intervenciones) el 27/05/2007 04:57:26
Compañero programador, yo tengo un código que realiza este procedimiento, si lo deseas nada mas mandame un correo y pidemelo... nada mas necesitaras conocimientos basicos como uso de for's y if's... con gusto... Atte: Alruhi
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pregunta2

Publicado por Alruhi (2 intervenciones) el 27/05/2007 14:22:37
Este es el código que resuelve tu problema. Cualquier duda, ponla por aqui!!!

Program Billetes;
Uses crt;

Procedure Leer;forward; Procedure Mostrar(valo:longint);forward;
{para que el procedure pueda ser llamado o utilizado
desde cualquier parte del programa}
{**************************************************}
Procedure Leer;
Vr valor:longint;
Begin
gotoxy(10,10);
Write('Digite la cantidad:');
readln(valor);
{mostrar(valor); {Llamo al procedimiento con paso de variables}
Mostrar(valor);
End;
{**************************************************}
Function Calcular(canti:longint;nomi:integer):integer;
Var cdiez,ccinco,cdos,cuno:byte;
resi,cant:longint
Begin
cdiez:=0;ccinco:=0;cdos:=0;cuno:=0;
resi:=canti mod 10000;
cdiez:=canti div 10000;
if nomi = 10000 then Begin
Calcular:=cdiez;
exit;
end;
ccinco:=resi div 5000;
resi:=resi mod 5000;
if nomi = 5000 then Begin
Calcular:=ccinco;
exit;
end;
cdos:=resi div 2000;
resi:=resi mod 2000;
if nomi = 2000 then Begin
Calcular:=cdos;
exit;
end;
cuno:=resi div 1000;
resi:=resi mod 1000;
if nomi = 1000 then Begin
Calcular:=cuno;
exit;
end;
{Si deseas poner alguna otra cantidad de moneda o billete nada mas necesitas }
{agregar otro procedimiento como este nada mas que tiene que llevar orden descendente}
{y asiganr otras variables para cuno...}
{cuno:=resi div 1000;}
{ resi:=resi mod 1000;}
{ if nomi = 1000 then Begin}
{ Calcular:=cuno;}
{ exit;}
{ end;}
End;
{**************************************************}
Procedure mostrar(valo:longint);
Begin
writeln('El total de billetes de ½10000 es ',calcular(valo,10000));
writeln('El total de billetes de ½5000 es ',calcular(valo,5000));
writeln('El total de billetes de ½2000 es ',calcular(valo,2000));
writeln('El total de billetes de ½1000 es ',calcular(valo,1000));
End;
{**************************************************}
Begin
clrscr;
Leer;
readkey; {Esparará que presione tecla desde teclado}
End.

{Atte: Alruhi}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

pero

Publicado por jona th an (4 intervenciones) el 27/05/2007 20:10:08
asi no seria mas facil enves de usar procedure mas rapido digo

program plata;
uses crt;
var
sal:text;
x:longint;
function convb(n:longint):longint;
var
a,b,c,k,d:longint;
begin
clrscr;
k:=1;
for d:=0 to n div 20 do
for c:=0 to n div 10 do
for b:=0 to n div 5 do
for a:=0 to n do
if a+b*5+c*10+d*20=n then
begin
write(sal,k:2,a:4,b:4,c:4,d:4);
writeln(sal);
inc(k);
end;
end;
begin
clrscr;
assign(sal,'plata.out');
rewrite(sal);
writeln('cantidad de billetes "a" ');
readln(x);
writeln(sal,'Nro a b c d');
convb(x);
close(sal);
end.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar