lunes, 17 de diciembre de 2012

Tarea 4


1-¿Cómo surge la necesidad de utilizar archivos?
Por el inconveniente que representa que la memoria principal o memoria RAM sea el único medio de almacenamiento (usando variables, arreglos o estructuras de datos mas complejas), pues si se apaga la computadora se pierden los datos. Además, algunas aplicaciones exigen transportar los datos de una computadora a otra.

1. ¿Es correcto decir que los dispositivos dealmecenamiento secundario procesan datos y los almacenan?
No procesan datos, sólo los almacenan. En estos dispositivos sólo se reflejan los datos previamente procesados y funcionan exclusivamente como una bodega.

2. Da una analogía de un archivo:
El modo de operación de un archivo puede ser asociado con el de un archivero en una oficina, ya que ambos almacenan datos y operan de forma semejante.

3. ¿Qué sucede al abrir un archivo?
Al abrir el archivo se establece comunicación entre el programa y el sistema operativo a cerca de cómo accesarlo. Es necesario que el programa le proporcione al sistema operativo el nombre completo del archivo y la intención de uso (leer o escribir datos), entonces se definen áreas de comunicación entre ellos.

4. ¿Como se clasifican los archivos por contenido?
Texto y binario.

5. ¿Cuáles son los archivos de texto?
Son aquellos que pueden contener cualquier clase de datos y de tal manera que son “entendibles” por la gente. Los datos en un archivo de texto se almacenan usando el código ASCII, en el cual cada carácter es representado por un simple
byte. Debido a que los archivos de texto utilizan el código ASCII, se pueden desplegar o imprimir. En este tipo de archivos, todos sus datos se almacenan como cadenas de caracteres, es decir, los números se almacenan con su representación ASCII y no su representación numérica, por lo tanto no se pueden realizar operaciones matemáticas directamente con ellos.

6. ¿Cuáles son los archivos binarios?
Este tipo de archivos almacenan los datos numéricos con su representación binaria. Pueden ser archivos que contienen instrucciones en lenguaje máquina listas para ser ejecutadas. En este tipo de archivos también se pueden almacenar diferentes tipos de datos incluyendo datos numéricos; sin embargo, cabe destacar que los datos numéricos se graban con su representación binaria (no con su representación ASCII), por tal razón, cuando se despliegan con un editor de textos o por medio de comandos del sistema operativo, aparecen caracteres raros que no se interpretan.


7. ¿Cómo se clasifican los archivos por tipo de acceso?
Se clasifican en secuenciales o directos (también conocidos como de acceso directo,
relativos o aleatorios).

8. ¿Cuales son los archivos secuenciales?
En este tipo de archivos los registros se graban en secuencia o consecutivamente y deben accesarse de ese mismo modo, es decir, conforme se van insertando nuevos registros, éstos se almacenan al final del último registro almacenado; por lo tanto, cuando se desea consultar un registro almacenado es necesario recorrer completamente el archivo leyendo cada registro y comparándolo con el que se busca. En este tipo de archivo se utiliza una marca invisible que el sistema operativo coloca al final de los archivos: EOF (End of File), la cual sirve para identificar dónde termina el archivo.

9. ¿Cuáles son los archivos archivos directos?
A diferencia de los archivos secuenciales, en los archivos directos no es necesario recorrerlo completamente para acceder un registro en particular, sino se puede colocar el apuntador interno del archivo directamente en el registro deseado, permitiendo con esto mayor rapidez de acceso. Cabe destacar que para reposicionar este apuntador se utiliza el comando SEEK indicándole la dirección del registro que se desea.

10. ¿Qué son las direcciones lógicas y direcciones físicas?
El lenguaje C++ utiliza direcciones físicas para los archivos (a diferencia de direcciones lógicas de otros lenguajes como PASCAL), esto es, que el direccionamiento consiste en el espacio ocupado por los datos en el archivo (calculado en bytes) no en el renglón al que se asignó dicho registro.

11. ¿Que encabezado se requiere Para realizar programas de manejo de archivos en Lenguaje C++?
#include <stdio.h>

12. ¿Como se delcara una variable de tipo FILE?
FILE *alias;

13. ¿Para que se usa la funcion fopen?
Se usa la función fopen para abrir un archivo, determinar el modo de apertura y establecer la vía de comunicación mediante su alias correspondiente. Además determinar el tipo de contenido del archivo (texto o binario).

14. ¿Cuáles son los modos de apertura de archivo de texto?
r, w, a, r+, w+ y a+.

15. ¿Cómo se cierra un archivo?
Esto se logra mediante las funciones fclose o fcloseall. Si se usa fclose es necesario indicarle el alias del archivo que se desea cerrar. La función fcloseall cierra todos los archivos abiertos.    

16. ¿Qué proporciona fwrite?
proporciona el mecanismo para almacenar todos los campos de un registro en un archivo. Cabe destacar que al utilizar esta función, se almacena una variable (de tipo struct) que representa un bloque de datos o campos; es decir, no se almacena campo por campo. Esta función tiene cuatro argumentos: la variable que se desea grabar, su tamaño en bytes, la cantidad de variables y el alias del archivo donde se desea almacenar.

17. ¿Qué es un buffer y que objetivo tienen?
Un buffer es un área de almacenamiento temporal en memoria para el conjunto de datos leídos o escritos en el archivo. Estos buffers retienen datos en tránsito desde y hacia al archivo y tienen la finalidad de hacer más eficiente las operaciones de entrada/salida en los archivos de disco, provocando menor cantidad de accesos, los cuales son más lentos que la memoria.

18. ¿Qué hace la función fread?
La función fread permite “cargar” todos los campos de un registro en un archivo, es decir, lee un registro y lo copia en la memoria RAM.

19. ¿Qué hace la función fseek()?
Permite reposicionar el apuntador del archivo en la dirección física deseada mediante tres argumentos: el alias del archivo, la dirección física (en bytes) y el punto de referencia.

20. ¿Qué es necesario para poder reposicionar el apuntador del archivo?
Para poder reposicionar el apuntador del archivo es necesario que éste se encuentre abierto y se le haya asignado el alias correspondiente, también es necesario calcular la dirección física donde se desea colocar e indicarle el punto de referencia de donde se partirá en el conteo de la cantidad de bytes indicado por la dirección física, los cuales pueden ser desde el principio, desde donde se encuentre el apuntador del archivo y desde el final.

21. ¿Cuales son los puntos de referencia de fseek()?
SEEK_SET, SEEK_CUR y SEEK_END.

22. ¿Cual esla operacion de SEEK_SET?
Inicia elconteo de bytes  desde el principio del archivo.

23. ¿Cual es la operacion de SEEK_CUR?
Inicia el conteo de bytes  desde la posición actual del apuntador del archivo.

24. ¿Cual es la operacion de SEEK_END?
Empieza desde el final del archivo

25. ¿Para que se usa ftell?
Para conocer la posición actual del apuntador de un archivo abierto. La posición se expresa en bytes (dirección física) contados desde el principio del archivo.

Tarea 5

1. ¿Que es un archivo?
Es una coleccion de datos alamcenados juntos bajo un nombre comun,por lo general enun disco, cinta magnetica o CD-ROM.

2. ¿Que es el nombre externo del archivo?
Es la manera enque es conocido el archivo por  el sistema operativo.

3. De ejmplos de nombres de archivos validos segun la convencion de DOS.
preios.dat, exper1.dat, info.txt y fisica.mem.

4. ¿Que es un un flujo?
Es una ruta de transmisison en un solo sentido entre una fuente y un destino. Un flujo de bytes es enviado por esta ruta de transmision.

5. De una anlogia para el flujo de bytes.
Es un arroyo de agua que proporciona una ruta unidireccional para que el agua viaje de una fuente a  un destino.

6. ¿Como deben ser declaradas los objetos de flujo archivo usados para entrada?
Deben ser declaradas como objetosdela calse ifstream.

7. ¿Como deben ser delcaradas losobjetos de flujo de archivo usados para salida?
Deben ser declaradas como objetos de la case ofstream.

8. ¿Cuales son los archivos basicos?
Archivos de texto (archivos basados enc caracteres) y archivos binarios.

9. ¿Comos se define la direccion o modo?
Se define en relacion con el programa y no el archivo, los datos que van a un programa se consideran datos de entrada, y los datos enviados desde el programa se consideran datos de salida.

10. ¿Que se necesita para que un programa lea y escriba en un archivo?
Objeto de flujo de archivos de entrada.
Objeto de flujo de archivos de salida.

11. ¿Que hace el prototipo eof()?
Devuelve un valor booleano verdadero si se ha intentado leer mas alla del final del archivo; de lo contrario,devuelve un valor booleano falso. El valor se vuelve verdadero solo cuando se lee el primer caracterdespues del ultimo caracter del archivo valido.

12. ¿Cuales sonlos metodos que se utilizan en C++ para detectar el estado de un archivo?
fail(), eof(), good(), bad() y is_open().

13. ¿Para que se utiliza en C++, c_str()?
Se usa un objeto de clase de cadena y se convierte este objeto en una cadena C utilizando el metodo c_str().

14. ¿Como se cierra un archivo?
Se cierra usando el metodo close(). Este metodo rompe la conexion entre el nombre externo delarchivo y el objeto de flujo de archivo, el cual puede ser usado por oro archivo

15. ¿Por que se deben cerrar los archivos?
Porque todos las computadoras tienen un limite en el numero maximo de archvios que pueden abrirse a la vez. Los archivos abiertosexistentes al final de la ejecucion del programa normal seran cerrados de manera automatia por el sistema normal.

16. ¿Como se declaran objetos para entrada o salida?
Se declaran objetos fstream.
fstream nombreObjeto;

17.¿Cuales son los indicadores en C++?
ios::in
ios::out
ios::app
ios::ate
ios::binary
ios::trunc
ios::nocreate
ios::noreplace

18. De un ejemplo de formateo de datos de flujo de salida de un archivo de texto.
salidaArchivo << setiosflags(ios::fixed);
salidaArchivo << setiosflags(ios::showpoint);
salidaArchivo << setprecision(2);

19. De otro ejemplo de formateo de datos de flujo de salida de un archivo de texto.
salidaArchivo.setf(ios::fixed);
salidaArchivo.setf(ios::showpoint)
salidaArchivo.precision;

20. ¿Que metodos fstream existen?
get()
get(charVar)
getline(strObj, termChar)
peek
ignore(int n)

Problema 10 pag. 470

Problema 10 a.

Problema 10 b.

martes, 20 de noviembre de 2012

Practica 12

Problema 1

Pseudocodigo:

inicio funcion imprimeCaracter(char ch,int n)
i int
for(i=1 to n step i=i+1)
{
print ch
}
print "\n"

fin funcion imprimeCaracter

inicio progama principal
caracter char
x int
print "introduce el caracter a imprimir= "
read caracter
print "\n","introduce la cantidad de caracteres= "
read x
imprimeCaracter(caracter,x)
 a,b int
print "\n","introduce dos valores enteros= "
read a,b
suma=a+b int
print "\n","El resultado de la suma esta representado por el caracter * \n"
imprimeCaracter('*',suma)

fin

Lenguaje C++


Problema 2

Pseudocodigo:

inicio funcion imprimeAsteriscos()
i int
for(i=1 to 30 step i=i+1)
 {
 print "*"
 }
print "\n","\n"
fin funcion imprimeAsterisco


inicio funcion mayor(int x, int y)
 if(x>y)
 {
 return x
 }
 else
 {
 return y
 }
fin funcion mayor


inicio funcion menor(int x, int y)
 if(x<y)
 {
 return x
 }
 else
 {
 return y
 }

fin funcion menor

inicio programa principal
a,b int
print "introduce dos valores enteros: "
read a,b
imprimeAsteriscos()
print "El dato mayor es: ",mayor(a,b),"\n","\n"
 imprimeAsteriscos()
print "El dato menor es: ",menor(a,b),"\n","\n"
imprimeAsteriscos()

fin

Lenguaje C++

Problema 3

Pseudocodigo:

inicio funcion lecturaDatos(int a[10])
i int
 for(i=0 to <10 step i=i+1)
 {
 print "numero[",i,"]= "
 read a[i]
 }

fin funcion lecturaDatos

inicio funcion desplegarDatos(int a[10])
i int
print "listado de los 10 valores enteros \n"
  for(i=0 to <10 step i=i+1)
 {
 print a[i],"\n"
 }
fin funcion desplegarDatos


inicio funcion sumaValores(int a[10])
i,suma=0 int
 for(i=0 to <10 step i=i+1)
 {
 suma=suma+a[i]
 }
return suma

fin funcion sumaValores
inicio funcion mayorValores(int a[10])
mayor=a[0] int
pos=0 int
i int
 for(i=0 to <10 step i=i+1)
 {
  if(a[i]>mayor)
  {
  mayor=a[i]
  pos=i
  }
 }
print "Dato mayor= ",mayor
print "posicion del dato= ",pos
fin funcionmayorValores


Inicio programa principal
int numeros[10]
lecturaDatos(numeros)
print "\n","\n"
desplegarDatos(numeros)
print "La suma total es: ",sumaValores(numeros)
mayorValores(numeros)
fin


Lenguaje C++

Problema 4 a) Valores enteros

Pseudocodigo:

inicio funcion lecturaDatos(T a[10])
i int
 for(i=0 to <10 step i=i+1)
 {
 print "numero[",i,"]= "
 read a[i]
 }
fin funcion lecturaDatos

inicio funcion desplegarDatos(T a[10])
i int
print "listado de 10 valores enteros \n"
 for(i=0 to <10 step i=i+1)
 {
 print,a[i]
 }
fin funcion desplegarDatos


inicio funcion sumaValores(T a[10])
i int
suma=0 T
 for(i=0 to <10 step i=i+1)
 {
 suma=suma+a[i]
 }
return suma
fin funcion sumaValores

inicio funcion mayorValores(T a[10])
mayor=a[0] T
pos=0 int
i int
 for(i=0 to <10 step i=i+1)
 {
  if(a[i]>mayor)
  {
  mayor=a[i]
  pos=i
  }
 }
print "Dato mayor= ",mayor
print "posicion del dato= ",pos
fin funcion mayorValores


inicio programa principal
numeros[10] int
lecturaDatos(numeros)
print "\n","\n"
desplegarDatos(numeros)
print "La suma total es: ",sumaValores(numeros)
mayorValores(numeros)

fin

Lenguaje C++

Problema 4 b) Valores flotantes

Pseudocodigo:

inicio funcion lecturaDatos(T a[10])
i int
for(i=0 to <10 step i=i+1)
{
print "numero[",i,"]= "
read a[i]
}
fin funcion lecturaDatos

inicio funcion desplegarDatos(T a[10])
i int
print "listado de 10 valores enteros \n"
for(i=0 to <10 step i=i+1)
{
print,a[i]
}
fin funcion desplegarDatos


inicio funcion sumaValores(T a[10])
i int
suma=0 T
for(i=0 to <10 step i=i+1)
{
suma=suma+a[i]
}
return suma
fin funcion sumaValores

inicio funcion mayorValores(T a[10])
mayor=a[0] T
pos=0 int
i int
for(i=0 to <10 step i=i+1)
{
if(a[i]>mayor)
{
mayor=a[i]
pos=i
}
}
print "Dato mayor= ",mayor
print "posicion del dato= ",pos
fin funcion mayorValores


inicio programa principal
numeros[10] real
lecturaDatos(numeros)
print "\n","\n"
desplegarDatos(numeros)
print "La suma total es: ",sumaValores(numeros)
mayorValores(numeros)

fin

Lenguaje C++

Problema 4 c) Valores doble presicion

Pseudocodigo:

inicio funcion lecturaDatos(T a[10])
i int
for(i=0 to <10 step i=i+1)
{
print "numero[",i,"]= "
read a[i]
}
fin funcion lecturaDatos

inicio funcion desplegarDatos(T a[10])
i int
print "listado de 10 valores enteros \n"
for(i=0 to <10 step i=i+1)
{
print,a[i]
}
fin funcion desplegarDatos


inicio funcion sumaValores(T a[10])
i int
suma=0 T
for(i=0 to <10 step i=i+1)
{
suma=suma+a[i]
}
return suma
fin funcion sumaValores

inicio funcion mayorValores(T a[10])
mayor=a[0] T
pos=0 int
i int
for(i=0 to <10 step i=i+1)
{
if(a[i]>mayor)
{
mayor=a[i]
pos=i
}
}
print "Dato mayor= ",mayor
print "posicion del dato= ",pos
fin funcion mayorValores


inicio programa principal
numeros[10] double
lecturaDatos(numeros)
print "\n","\n"
desplegarDatos(numeros)
print "La suma total es: ",sumaValores(numeros)
mayorValores(numeros)

fin

Lenguaje C++

Problema 5

Pseudocodigo:

inicio funcion LecturaDatos(T m[5][5])
r,c int
for(r=0 to <5 step r=r+1)
{
 for(c=0 to <5 step c=c+1)
 {
  print "matriz[",r,"]","[",c,"]= ";
  read m[r][c]
  }
}
fin funcion LecturaDatos

inicio funcion desplegarDatos(T m[5][5])
r,c int
print "\n","Listado de la matriz"
for(r=0 to <5 step r=r+1)
{
 for(c=0 to <5 step c=c+1)
 {
  print m[r][c],"\t"
  }
 print "\n"
}
fin funcion desplegarDatos

inicio funcion sumaRenglones(T m[5][5], T sr[5])
r,c int
suma T
for(r=0 to <5 step r=r+1)
{
 suma=0
 for(c=0 to <5 step c=c+1)
 {
 suma=suma+m[r][c]
 }
 sr[r]=suma
}
fin funcion sumaRenglones

inicio funcion sumaColumnas(T m[5][5], T sc[5])
r,c int
suma T
for(c=0 to <5 step c=c+1)
{
 suma=0
 for(r=0 to <5 step r=r+1)
 {
 suma=suma+m[r][c]
 }
 sc[c]=suma
}
fin funcion sumaColumnas

inicio funcion desplegarSumaMayorRenglones(T sr[5])
i int
mayor=sr[0] T
pos=0 int
print "\n","listado de suma de renglones "
for(i=0 to <5 step i=i+1)
{
print "renglon ",i," = ",sr[i]
  if(sr[i]>mayor)
 {
 mayor=sr[i]
 pos=i
 }
}
print "El renglon ",pos," tiene la suma mayor: ",mayor
fin funcion desplegarSumaMayorRenglones

inicio funcion desplegarSumaMayorColumnas(T sc[5])
i int
mayor=sc[0] T
pos=0 int
print "\n","listado de suma de renglones "
for(i=0 to <5 step i=i+1)
{
print "columna ",i," = ",sc[i]
  if(sc[i]>mayor)
 {
 mayor=sc[i]
 pos=i;
 }
}
print "La columna ",pos," tiene la suma mayor: ",mayor
fin funcion desplegarSumaMayorColumnas


Inicio programa principal
a[5][5],renglones[5],columnas[5] int
 LecturaDatos(a)
 desplegarDatos(a)
 sumaRenglones(a,renglones)
 sumaColumnas(a,columnas)
 desplegarSumaMayorRenglones(renglones)
 desplegarSumaMayorColumnas(columnas)

fin

Lenguaje C++













Problema 6
 
Pseudocodigo:
 
registro empleado
{
id int
horas int
sueldo int
nombre[30] char
tarifaPago real
 }
empleado emp[10]
 
inicio funcion void leerDatosEmpleado(int n)
{
i int
 for(i=0 to <n step i=i+1)
 {
 print "\n","Numero de empleado= "
 read emp[i].id
 print "\n","Nombre del empleado= "
 read emp[i].nombre
 print "\n","Horas trabajadas = "
 read emp[i].horas
 print "\n","Pago por hora= "
 read emp[i].tarifaPago
 emp[i].sueldo=emp[i].horas*emp[i].tarifaPago
 }
}
final funcion leerDatosEmpleado
 
inicio funcion void desplegarDatosEmpleado(int n)
{
i int
 print "\n","No. empleado   Nombre    Horas trabajadas   Pago por hora   Sueldo"
 for(i=0 to <n step i=i+1)
 {
 print emp[i].id,"   ",emp[i].nombre,"   ",emp[i].horas,"   ",emp[i].tarifaPago,"   ",emp[i].sueldo
 }
}
fin funcion desplegarDatos
 
inicio programa
x int
print "cuantos empleados= "
read x
leerDatosEmpleado(x)
desplegarDatosEmpleado(x)
fin
 
Lenguaje C++
 
Problema 7
 
Pseudocodigo:
 
registro alumno
{
noControl[9] char
nombre[30] char
calf[4] int
promedio real
}
alumno a[10]
 
inicio funcion void leerDatosAlumno(int n)
{
i,j,suma int
 for(i=0 to <n step i=i+1)
 {
 suma=0
 print "\n","numero de control= "
 read a[i].noControl
 print "\n","nombre alumno= "
 read a[i].nombre
  for(j=0 to <4 step j=j+1)
  {
  print "calificacion ",(j+1),"= "
  read a[i].calf[j]
  suma=suma+a[i].calf[j]
  }
  a[i].promedio=suma/4.0
 }
}
fin funcion leerDatosAlumno
 
inicio funcion void desplegarDatosAlumno(int n)
{
i,j int
print "\n","No.control           nombre        c1   c2   c3   c4    promedio"
 for(i=0 to <n step i=i+1)
 {
 print a[i].noControl,"   ",a[i].nombre,"\t"
  for(j=0 to <4 step j=j+1)
  {
  print "   ",a[i].calf[j]
  }
 print "\t",a[i].promedio
  }
}
fin funcion desplegarDatosAlumno
 
inicio programa
x int
print "numero de alumnos a registrar= "
read x
leerDatosAlumno(x)
desplegarDatosAlumno(x)
fin
 
Lenguaje C++
 
Problema 8
 
Pseudocodigo:
 
registro empleado
{
id int
nombre[30] char
horas int
sueldo int
tarifaPago real
}
empleado emp[10]
i=0 int
 
inicio funcion empleado leerDatosEmpleado()
{
empleado e1
print "\n","numero de empleado= "
read e1.id
print "nombre empleado= "
read e1.nombre
print "horas trabajada= "
read e1.horas
print "pago por hora= "
read e1.tarifaPago
e1.sueldo=e1.tarifaPago*e1.horas
return e1
}
fin funcion empleado leerDatosEmpleado
 
inicio funcion void almacenaRegistro(empleado e)
{
 if(i==10)
 {
 print "no se puede registrar trabajador \n\n"
 }
 else
 {
 emp[i]=e
 i=i+1
 }
}
fin funcion almacenaRegistro

inicio funcion void desplegarDatosEmpleado (int n)
{
i int
print "\n","No. empleado   Nombre    Horas trabajadas   Pago por hora   Sueldo"
 for(i=0 to <n step i++)
 {
 print "emp[i].id,"   ",emp[i].nombre,"   ",emp[i].horas,"   ",emp[i].tarifaPago,"   ",emp[i].sueldo
 }
}
fin funcion desplegarDatosEmpleado
 
inicio programa
x,v int
empleado e2
print "cuantos empleados= "
read x
 for(v=1 to <=x step v=v+1)
 {
 e2=leerDatosEmpleado()
 almacenaRegistro(e2)
 }
desplegarDatosEmpleado(x)
fin
 
Lenguaje C++
 
Problema 9
 
Pseudocodigo:
 
registro producto
{
noProd int
descrip[30] char
precio real
cantidad int
}
producto produc
producto p[5]
 
inicio funcion producto leerProducto()
{
producto x
print "numero de producto= "
read x.noProd
print "descripcion producto= "
read x.descrip
print "precio= "
read x.precio
print cantidad= "
raed x.cantidad
return x
}
fin funcion producto leerProducto
 
inicio funcion void almacenaProducto(producto p1,int &i)
{
 if(i == 5)
 {
  print "no se puede registrar mas producto \n"
 }
 else
 {
  p[i]=p1
 }
}
fin funcion almacenaProducto
 
inicio funcion reduceCantidadProd(int cantidadProd,int np,producto totalprod[5],int &ind)
{
j=0 int
bandera=0 int
 do
 {
  if(p[j].noProd == np)
  {
   p[j].cantidad= p[j].cantidad - cantidadProd
   totalprod[ind].noProd = np
   totalprod[ind].cantidad=cantidadProd
   totalprod[ind].precio=p[j].precio
   strcpy(totalprod[ind].descrip,p[j].descrip)
   bandera = 1
   ind=ind+1
 }
 j=j+1
 }
 while(j < 5 and bandera == 0)
return bandera
}
fin funcion reduceCantidadaProd
 
inicio funcion void desplegarListaProd()
{
j int
print "Listado de productos \n\n"
print "No. producto      Descripcion      Precio       Cantidad\n\n"
 for(j = 0 to 4 step  j=j+1)
 {
  print p[j].noProd,"   ",p[j].descrip,"   ",p[j].precio,"   ",p[j].cantidad
 }
}
fin funcion desplegarListaProd
 
inicio funcion void desplegarFactura(producto a[5], int h)
{
total=0,subtotal=0,suma=0 real
c int
print "\n","Factura \n\n"
print "No. producto      Descripcion      Precio       Cantidad      Subtotal"
 for(c=0 to < h step c=c+1)
 {
  print a[c].noProd,"   ",a[c].descrip,"   ",a[c].precio,"   ",a[c].cantidad,"    "
  subtotal=a[c].precio*a[c].cantidad
  suma=suma+subtotal
  print subtotal
 }
print ,"   ","subtotal= ",suma
total=suma*1.11
print ,"   ","iva= ",(suma*0.11)
print ,"   ","total= ",total
}
fin funcion desplegarFactura
 
inicio programa
conta,j=0,numProd,cantidad,ban=0,ind=0 int
producto productos[5]
sigue char
producto produc
 for(conta=0 to 4 step conta=conta+1)
 {
  produc = leerProducto()
  almacenaProducto(produc,j)
  j=j+1
 }
 do
 {
  clrscr()
  print "\n\n"
  desplegarListaProd()
  print "\n\n","numero de producto: "
  read numProd
  print "cantidad de producto: "
  raed cantidad
  ban = reduceCantidadProd(cantidad,numProd,productos,ind)
   if(ban == 0)
   {
    print "no existe producto \n\n"
   }
  print "desea otro producto (s/n)= "
  read sigue
 }
 while(sigue=='s' or sigue=='S')
clrscr()
print "\n\n"
desplegarListaProd()
desplegarFactura(productos,ind)
fin

Lenguaje C++