jueves, 7 de junio de 2012

Proyecto Final: CC12

CC12 fue el nombre otorgado a este proyecto en honor al centro de computo de nuestra institucion "Instituto Tecnologico de Tijuana" . El 12 proviene del ano en el que nos encontramos. En este proyecto se refleja un programa cuya funcion es registrar las entradas y salidas de los alumnos de la institucion al centro de computo de una manera mas moderna y eficaz. El programa comienza por darte la bienvenida y depues te arroja una pantalla con el menu principal en donde cada estudiante podra elegir la opcion que desee segun sus necesidades. El menu principal cuenta con 5 opciones. El estudiante puede escoger una computadora ingresando su numero de control, si este se encuentra registrado el programa seguira, en caso contrario este arrojara un mensaje el cual avisa al usuario que no se podra brindar el servicio deseado. El usuario tambien puede consultar que computadoras se encuentran ocupadas y cuales se encuentran desocupadas, al igual que dejar el asiento ocupado. El programa guarda una base de datos en archivos para tener un control de entradas y salidas con numero de control del estudiante, computadora y fecha y hora de entrada y de salida.

Espero que estas pantallas les sirvan para que se den una idea de como funciona este programa. Gracias.








lunes, 28 de mayo de 2012

Practica 15

Practica 15 Problema 1

Una pequena aerolinea acaba de comprar una computadora para su nuevo sistema automatico de reservaciones. A usted se le ha pedido que programe el nuevo sistema. Usted debe escribir un programa que asigne los asientos, en cada vuelo. Suponga tres tipos de vuelos con una capacidad de 10 asientos. Su programa debe desplegar el siguiente menu de alternativas: 1) Vuelo 1 2)Vuelo 2 3) Vuelo 3

Para cada vuelo digita 1 para primera clase debe asignar un asiento en la seccion de primera clase (asientos 1 a 5). Si la persona digita 2, su programa debe asignar un asiento en la seccion economica (asientos 6 a 10). Su programa debe imprimir un pase de abordar que indique el numero de asiento de la persona y sie esta en la seccion de primera clase o en la seccion economica del avion.

Utilice un arreglo bidimensional para representar la tabla de asientos del avion. Inicialice en 0 todos los elementos del arreglo para indicar que todos los asientos estan vacios. Mientras se asigna cada asiento, el valor de los elementos correspondientes del arreglo se establece en 1, para indicar que el asiento ya no esta disponible. Por supuesto, su programa nunca debe asignar un asiento que ya esta asignado. Cuando la seccion de primera clase esta llena, su programa nunca debe asignar un asiento que ya esta asignado. Cuando la seccion de primera clase esta llena, su programa debe preguntar a la persona si acepta que se le coloque en la seccion economica y viceversa. Si acepta, entonces haga la asignacion apropiada del asiento. Si no acepta, entonces despliegue el mensaje "El siguiente vuelvo parte en tres horas".

Pseudocodigo

Inicio Programa
Int  main()
{
vuelo[3][10] int
clase,viaje,continua int  
Print       Viajes Electronicos\n"
do
{
Print        1) Holanda
Print        2) Roma
Print        3) Alemania
Print       Seleccionar viaje: " read viaje
Print       \nTipo de viaje\n1) Primera clase\n2) Clase economica\n"
Print        Seleccionar clase:" read clase
Fin programa

Inicio funciones
Asientos(vuelo,clase,viaje)
Print "\nDesea continuar comprando 1)si 2)no: " read continua
}while(continua==1)
}
Fin funcion

void Asientos(Int vuelo[3][10],Int clase,Int viaje)
 i,b int
switch(clase)
{
case 1:
i=0 b=0
while(i<=4 && b==0)
{
if(vuelo[viaje-1][i]!=1)
{
vuelo[viaje-1][i]=1
b=1
Print      \nPase de abordar
Print       viaje " , (viaje) , " en Primera clase
}
else
{
i++
if(i==4)
{
Print       \nLa primera clase esta llena
Print        El siguiente vuelo parte en 3 horas }
}}
break
case 2:
i=5
b=0
while(i<=9 && b==0)
{
if(vuelo[viaje-1][i]!=1)
{
vuelo[viaje-1][i]=1
b=1
Print       \nPase de abordar
Print       viaje " , (viaje) , " en Clase economica
}
else
{
i++
if(i==9)
{Print       \nLa clase economica esta llena
Print       El siguiente vuelo parte en 3 horas }
}}
break
default:print  “Error en clase\n"
}}
Fin funcion






Practica 15 Problema 2

Haga un programa que almacene 10 nombres de alumnos en un arreglo de caracteres [10][25] y los ordene alfabeticamente ascendentemente. El usuario debe introducir la cantidad de alumnos a insertar.

Pseudocodigo


Inicio Funciones

int insertardatoslista(char nombres[20][30])
{
i int 
i=0 
do
{
print "Nombre del Alumno: " 
read(nombres[i]) 
i=i+1 
}
while(strcmp(nombres[i-1],"fin")!=0&&i<20) 
return i 
}
Fin funcion

int reordenar (char nombres[20][30],int n)
{
i,j  int
temp[30] char 
for(i=0  i<(n-1)  i++){
for(j=i+1  j<(n-1)  j++)
{
if(strcmp(nombres[i],nombres[j])>0)
{
strcpy(temp,nombres[i]) 
strcpy(nombres[i],nombres[j]) 
strcpy(nombres[j],temp) 
}}}}
Fin funcion

int desplegardatos(char nombres[20][30], int n)
{
i int   
for(i=0  i<(n-1)  i++)
{
print nombres[i],
}
}
Fin function

Inicio programa
int main()
{
n int   
nombres[20][30] char
n=insertardatoslista(nombres) 
reordenar(nombres,n) 
desplegardatos (nombres, n) 
}
Fin programa





Practica 15 Problema 3

Escribir un programa interactivo que acepte el nombre de un pais como entrada y escriba su correspondiente capital, y viceversa. Disenar el programa de modo que se ejecute repetidamente, hasta que se introduzca la palabra Fin.

Pseudocodigo


Inicio Programa
int main()
{
x int
selecion[20],continuar[5] char
paises[11][20]={"canada","inglaterra","francia","india","isrrael","italia","japon","mexico","china","usa","rusia"} char
capitales[11][20]={"ottawa","londres","paris","nueva delhi","jerusalen","roma","tokio","cd. mexico","beijing","washington","moscu"} char
do
{
print ,"\n1)Pais a capital\n2)Capital a pais\nSeleccionar: " read x
switch(x)
{
case 1:
print ,"\nIntroducir el nombre del pais: " read selecion
PaisCapital(paises,selecion)
print ,"La capital es: ",capitales[PaisCapital(paises,selecion)]
print ,"\n Desea continuar 'si' o 'fin': " read continuar
break
case 2:
print ,"\nIntroducir el nombre de la capital: " read selecion
CapitalPais(capitales,selecion)
print ,"El pais es: ",paises[CapitalPais(capitales,selecion)]
print ,"\n Desea continuar 'si' o 'fin': " read continuar
break
}
}while(strcmp(continuar,"fin")!=0)
}
Fin programa

Inicio funciones
int PaisCapital(char p[11][20],char selec[20])
{
 i,regresa,w int
for(i=0 i<11 i++)
{
w=strcmp(p[i],selec)  
if(w==0)
{regresa=i }
}
return regresa
}
Fin funcion

int CapitalPais(char c[11][20],char selec[20])
{
i,regresa,w int
for(i=0 i<11 i++)
{
w= strcmp(c[i],selec)  
if(w==0)
{regresa=i }
}
return regresa
}
Fin funcion





Practica 15 Problema 4

Haga un programa que escriba en un archivo llamado nombres.txt que genere un archivo texto para almacenar los nombres de n alumnos y un archivo de calificaciones.txt para almacenar 6 calificaciones de cada estudiante. Debe calcular el promedio de cada estudiante.

Pseudocodigo

Inicio archivos
void salida_datos_file(int n)
{
ofstream salida 
salida.open("C://Datos//nombres.txt") 
i int 
name[30] char 
for(i=1  i<=n  i++)
{
print "Nombre " ,i ,"=? " 
read (name) 
salida ,name ,endl 
}
salida.close() 
}
Fin archivo

void entrada_datos_file()
{
ifstream entrada 
entrada.open("C://Datos//nombres.txt") 
name[30] char
print "\nListado de nombres\n" 
entrada.getline(name,30) 
print name   
while(!entrada.eof())
{
entrada.getline(name,30) 
print name ,endl 
}
entrada.close() 
}
Fin archivo

 void almacena_calif(int n)
{
ofstream salida 
salida.open("C://Datos//calificaciones.txt") 
r,c,calf  int
for(r=0  r<n  r++)
{
print "Introduce calificaciones del estudiante " ,(r+1)
for(c=0  c<6  c++)
{
print "calificacion " , (c+1)  ,"= ?" 
read calf 
salida ,calf ," " 
}
salida
}
}
Fin archivo

void leer_archivo_calif(int a[20][6], int promedio[20],int n)
{ ifstream entrada 
entrada.open("C://Datos//calificaciones.txt") 
r,c,suma int   
for(r=0  r<n  r++)
{
suma=0 
for(c=0  c<6  c++)
{
entrada>>a[r][c] 
print a[r][c] ,"\t" 
suma=suma + a[r][c] 
}
promedio[r]=suma/6 
print promedio[r]   
}
}

Inicio programa
int main()
{
n int
c[20][6],p[20] int
print "No. de estudiantes = ? " 
read n 
salida_datos_file(n) 
entrada_datos_file() 
almacena_calif(n) 
leer_archivo_calif(c, p, n)   
}
Fin programa




  Practica 15 Problema 5a

Introducir en un archivo una lista de nombres y obtener un reporte del contenido del archivo, el usuario debe introducir la palabra fin, para detener el proceso de almacenamiento de nombres.

Pseudocodigo

Inicio Archivos
void salida_datos_file(int n)
{
ofstream salida 
salida.open("C://Datos//nombres.txt") 
i=0 int  
name[30] char 
do
{
print  ,"Nombre del Alumno: " 
read (name) 
salida ,name  
}
while(strcmp(name,"fin")!=0) 
salida.close() 
}
Fin archivo

void entrada_datos_file()
{
ifstream entrada 
entrada.open("C://Datos//nombres.txt") 
name[30] char
print  ,"\nListado de nombres\n" 
entrada.getline(name,30) 
print  ,name  
while(!entrada.eof())
{
entrada.getline(name,30) 
print  ,name  
}
entrada.close() 
}
Fin archivo

Inicio Programa
int main()
{
n int
c[20][6],p[20]  int
salida_datos_file(n) 
entrada_datos_file() 
}
Fin programa




Practica 15 Problema 5b

Agregar datos al archivo de nombres e imprimir el contenido del archivo.

Pseudocodigo

Inicio Archivos
void salida_datos_file(int n)
{
ofstream salida 
salida.open("C://Datos//nombres.txt"ios::app) 
i=0 int  
name[30] char 
do
{
print  ,"Nombre del Alumno: " 
read (name) 
salida ,name  
}
while(strcmp(name,"fin")!=0) 
salida.close() 
}
Fin archivo

void entrada_datos_file()
{
ifstream entrada 
entrada.open("C://Datos//nombres.txt") 
name[30] char
print  ,"\nListado de nombres\n" 
entrada.getline(name,30) 
print  ,name  
while(!entrada.eof())
{
entrada.getline(name,30) 
print  ,name  
}
entrada.close() 
}
Fin archivo

Inicio Programa
int main()
{
n int
c[20][6],p[20]  int
salida_datos_file(n) 
entrada_datos_file() 
}
Fin programa



Practica 15 Problema 6a

Escriba un programa que acepte n lineas de texto desde el teclado y almacenar cada linea a un archivo llamado texto.dat hasta que el usuario introduzca fin. Leer y mostrar los datos guardados en el archivo texto.dat

Pseudocodigo

Inicio archivos
void salida_datos_file()
{ofstream salida 
salida.open("C://Problema6a//texto.dat") 
texto[90] char
print "\t\t\t\tEscribir mensaje\n\n" 
do{read texto 
if(strcmp(texto,"Fin")!=0)
{salida, texto, " "  }}
while(strcmp(texto,"Fin"))   print  
salida.close()  }
Fin archivo

void entrada_datos_file()
{ifstream entrada 
entrada.open("C://Problema6a//texto.dat") 
texto[90] char
print "\t\t\t\tMensaje escrito\n\n" 
entrada.getline(texto,90)   print texto  
while(!entrada.eof())
{entrada.getline(texto,90)   print texto  
}
entrada.close()  }
Fin archivo

Inicio Programa
int main()
{
salida_datos_file() 
entrada_datos_file()   
}
Fin programa



Practica 15 Problema 6b

Escriba un programa en C++ que acepte lineas de texto desde el teclado y escriba cada linea a un archivo de texto llamado texto.dat hasta que introduzca una linea vacia. Una linea en blanco es una linea vacia. Una linea en blanco es una linea sin texto, es solo una linea nueva ocasionada al oprimir la tecla Enter. Leer  mostrar los datos almacenados en el archivo texto.dat.

Pseudocodigo


Inicio archivos
void salida_datos_file()
{
ofstream salida
salida.open("C://Texto//texto.dat")
n=0 int
texto[80] char
print "\t\t\t\tEscribir mensaje\n\n"
do{read(texto)
if(strcmp(texto,"\n")>=0)
{salida,texto
}}
while(strcmp(texto,"\n" )>=0)
print  
salida.close() }
Fin archivo

void entrada_datos_file()
{ifstream entrada
entrada.open("C://Texto//texto.dat")
texto[80]c har
print "\t\t\t\tMensaje escrito\n\n"
entrada.getline(texto,80)  print texto
while(!entrada.eof())
{entrada.getline(texto,80)  print texto
 }
entrada.close() }
Fin archivo

Inicio programa
int main()
{salida_datos_file()
entrada_datos_file()
}
Fin programa



Practica 15 Problema 7a

Escriba un programa que pueda crear un achivo texto llamado voltios y escriba en el los siguientes registros:

120.3  122.7  90.3     99.8
95.3    120.5  127.3   120.8
123.2  118.4  123.8   115.6
122.4  95.6    118.2   120.99
123.5  130.2  123.98 124.4

Pseudocodigo

Inicio Programa
int main()
{
valor[5][4] real
promedio[5] real
datos()  cpromedio(valor,promedio)  displayPromedio(promedio)  
}
Fin programa


Inicio archivos
void datos()
{
ofstream salida
salida.open("C://Problema7//voltios.txt")
salida ,120.3 ," " ,122.7 ," " ,90.3 ," " ,99.8   
salida ,95.3 ," " ,120.5 ," " ,127.3 ," " ,120.8   
salida ,123.2 ," " ,118.4 ," " ,123.8 ," " ,115.6   
salida ,122.4 ," " ,95.6 ," " ,118.2 ," " ,120.99   
salida ,123.5 ," " ,130.2 ," " ,123.98 ," " ,124.4  
salida.close()  print  "\n"
}
Fin archivo

void cpromedio(float valor[5][4], float promedio[5])
{
ifstream entrada
entrada.open("C://Problema7//voltios.txt")
R=0,C=0 int
suma=0  for(R=0 R<5 R++) real
{
suma=0  for(C=0 C<4 C++)
{
entrada>>valor[R][C]  
suma=suma+valor[R][C]
}
promedio[R]=suma/4 }
entrada.close()
}
Fin archivo


void displayPromedio(float promedio[5])
{
R=0  for(R=0 R<5 R++)int
{
print  "Promdio de renglon " ,(R+1) ,": " ,promedio[R] ,"\n"
}}
Fin archivo



Practica 15 Problema 7b

Con base en los dats del archivo voltios. Leer cada registro en el archivo y calclar el promedio para cada registro. Leer cada registro y calcular el promedio de cada registro y el promedio general de los voltajes.

Pseudocodigo

Inicio Programa
int main()
{
valores[5][4] real
promedio[5] real
insertar_lista_datos()
calcular_promedio(valores,promedio)
desplegar_promedio(promedio)
}
Fin programa


Inicio archivos
void insertar_lista_datos()
{
ofstream salida
salida.open("C://Problema7//voltios.txt")
salida,120.3,"   ",122.7,"   ",90.3,"    ",99.8,   
salida,95.5,"    ",120.5,"   ",127.3,"   ",120.8,   
salida,123.2,"   ",118.4,"   ",123.8,"   ",115.6,   
salida,122.4,"   ",95.6,"    ",118.2,"   ",120.99,   
salida,123.5,"   ",130.2,"   ",123.98,"  ",124.4,   
salida,122.11,"  ",128.5,"   ",99.2,"    ",89.70,   
salida,125.12,"  ",101.33,"  ",89.75,"   ",129.90,   
salida,95.33,"   ",124.50,"   ",133.23,"  ",95.34,   
salida.close()
print    
}
Fin archivo

void calcular_promedio(float valores[8][4],float promedio[8])
{
ifstream entrada
entrada.open("C://Problema7//voltios.txt")
r=0,c=0 int
suma=0 real
for(r=0 r<8 r++)
{
suma=0
for(c=0 c<4 c++)
{
entrada>>(valores[r][c])
suma=suma+valores[r][c]
}
promedio[r]=suma/4
}
entrada.close()
}
Fin archivo

Inicio funcion
void desplegar_promedio(float promedio[8])
{
r=0 int
suma=0 real
promediog=0 real
for(r=0 r<8 r++)
{
print "PROMEDIO  ",(r+1),"  : ",promedio[r]
}
for(r=0 r<8 r++)
{
suma=suma+promedio[r]
}
promediog=suma/8
print "PROMEDIO GRAL: ",promediog   
}
Fin funcion