[ Foro de Pascal ]
Realice un programa el cual le solicite al usuario que ingrese el nombre y precio de un producto y le pregunte si desea ingresar de nuevo precio y nombre y asi sucesivamente. Al final se debe de mostrar la factura detallada de cuánto debe de pagar, simulando que estamos en un supermercado (en la caja). Entonces el usuario paga la factura y le dice cual es el cambio. (Tome en cuenta que el resultado o cambio puede salir negativo, realice la conversión).
¿Me podrías explicar qué quiere decir "Tome en cuenta que el resultado o cambio puede salir negativo, realice la conversión? Por favor, dame un ejemplo, es que no lo entiendo muy bien.
Saludos.
No me has respondido, pero yo había hecho un código hace tiempo y traté de adaptarlo lo más posible al planteamiento de tu problema. Aquí te lo dejo, espero que te sirva de guía.
program Factura;
uses CRT;
type
prodPrecs = record
Producto: string;
Precio: integer;
end;
var
prodPrec: array[1..10] of prodPrecs;
mas: char;
acum, acum2, k, total, pagoRecibido, cambio: integer;
procedure dibujaCeldas(xi: integer; y: integer; xf: integer);
var
i: integer;
Begin
(* Linea horizonatal arriba *)
gotoxy(xi+1,y);
for i:= xi to xf-2 do
write(char(45));
(* Linea horizonatal arriba *)
gotoxy(xi,y+2);
for i:= xi+1 to xf do
write(char(45));
(* Linea vertical izquierda *)
for i:= y to y+2 do
begin
gotoxy(xi,i);
write(char(124));
end;
for i:= y to y+2 do
begin
(* Linea vertical derecha *)
gotoxy(xf,i);
write(char(124));
end;
for i:= y to y+2 do
begin
gotoxy(60,i);
write(char(124));
end;
End;
BEGIN
ClrScr;
acum:= 1;
write('Desea introducir algun producto?: '); readln(mas);
while mas='s' do
Begin
ClrScr;
write('Nombre del Producto: '); readln(prodPrec[acum].Producto);
write('Precio: '); readln(prodPrec[acum].Precio);
write('Otro producto?: '); readln(mas);
acum:= acum + 1;
if acum>5 then
Begin
writeln('El maximo de productos permitidos es de 5.'); readln;
mas:= 'n';
End;
End;
if acum>1 then
Begin
ClrScr;
gotoxy(31,3); writeln('F A C T U R A');
total:= 0;
acum2:= 3;
For k:=1 to acum - 1 do
Begin
acum2:= acum2 + 2;
dibujaCeldas(3,acum2,77);
gotoxy(5,acum2 + 1); writeln(prodPrec[k].Producto);
gotoxy(65,acum2 + 1); writeln(prodPrec[k].Precio);
total:= total + prodPrec[k].Precio;
End;
acum2:= acum2 + 2;
dibujaCeldas(40,acum2,77);
gotoxy(43,acum2 + 1); writeln('T O T A L');
gotoxy(65,acum2 + 1); writeln(total);
gotoxy(30,20); write('Cuanto va a pagar?: '); readln(PagoRecibido);
cambio:= PagoRecibido - total;
gotoxy(30,21); writeln('Su vuelto es: ', cambio);
End;
readln;
END.
Saludos.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)