[ Foro de Pascal ]

Factura

12-Aug-2016 23:35
Invitado (MH)
2 Respuestas

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


19-Aug-2016 02:59
Luis Torres (+18)

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


22-Aug-2016 00:04
Luis Torres (+18)

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