jueves, 31 de mayo de 2012


Practica 15
1.-Una pequeña 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 menú de alternativas:1)Vuelo 2)Vuelo 2 3)vuelo 3

Para ccada vuelo digita 1 para primera clase debe asignar un asiento en la sección de primera clase (asientos 1 a 5).Si la persona digita 2, su programa debe asignar un asiento en la sección
económica(asientos 6 a 10).Su programa debe imprimir un pase de abordar que indique el numero de asiento de la persona si esta en la sección de primera clase o en la sección económica del avión.

Utilice un arreglo bidimensional para representar la tabla de asientos del avión.Inicialice en 0 todos los elementos arreglo para indicar que todos los asientos están 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 sección de primera clase esta llena,Su programa debe preguntar a la persona si acepta que se le coloque en la sección económica y viceversa. Si acepta, entonces haga la asignación apropiada del asiento. Si no acepta, entonces despliegue el siguiente mensaje
"El siguiente vuelo parte en tres horas"

Pseudocodigo

void sa(entero vuelo[3][10],entero clase,entero dest);
void sv(entero & clase,entero & dest);
void desplegar(entero vuelo[3][10])
void main()
{
entero vuelo[3][10]={0,0,0,0,0,0,0,0,0,0}
entero clase=0,ds=0,clientenew=0
do
{
sv(clase,ds);
sa(vuelo,clase,ds);
print "\n Elejir un nuevo viaje?  Si)1 No)0: "
read clientenew;
}
while(clientenew==1)
desplegar(vuelo)
getch()
}
void sv(entero & clase,entero & ds)
{
print "Aerolinea The BEST \n";
print "1) Japon     \n"
print "2) Madrid    \n"
print "3) Francia   \n"
print "Favor de elegir un destino: "
print ds;
print "1) Primera clase.\n"
print "2) Clase economica.\n"
print "Clase: "
read clase
}
void sa(entero vuelo[3][10],entero  clase,entero  ds)
{
entero i,b
switch(ds)
{
case 1:
switch(clase)
{
case 1:
i=0
b=0
while(i<=4 && b==0)
{
if(vuelo[0][i]!=1)
{
vuelo[0][i]=1
b=1
print "\nPase de abordar\n"
"Vuelo 1\tPrimera clase\tAsiento: ",(i+1)
}
Else
{
i++
if(i==4)
{print "\nPrimera clase: Todas las vacantes ocupadas\n"
"El vuelo parte en 3 horas\n\n";}
}}
break;
case 2:
i=5
b=0
while(i<=9 && b==0){
if(vuelo[0][i]!=1)
{
vuelo[0][i]=1;
b=1
cout<<"\nSu pase de viaje es \n"
"Vuelo 1\tSegunda clase\tAsiento: ",(i+1)
}
Else
{
i++;
if(i==9)
{print "\nSegunda clase: Todas las vacantes ocupadas\n"
"El vuelo parte en 3 horas\n\n"}
}}
break
default:print "Solicitud no encontrada n";
}
break
case 2:
switch(clase)
{
case 1:
i=0
b=0
while(i<=4 && b==0)
{
if(vuelo[1][i]!=1)
{
vuelo[1][i]=1
b=1
print "\nSu pase de viaje es\n"
"Vuelo 2\tPrimera clase\tAsiento: ",(i+1)
}
Else
{
i++
if(i==4)
{print "\nPrimera clase : Todas las vacantes ocupadas\n"
"El vuelo parte en 3 horas\n\n";}
}}
break;
case 2
i=5
b=0
while(i<=9 && b==0)
{
if(vuelo[1][i]!=1)
{
vuelo[1][i]=1
b=1
print "\nSu pase de viaje es\n"
"Vuelo 2\tSegunda clase\tAsiento: ",(i+1)
}
Else
{
i++
if(i==9)
{print "\nSegunda clase: Todas las vacantes ocupadas\n"
"El vuelo parte en 3 horas\n\n"}
}}
break
default:print "Solicitud no encontrada\n"
}
break
case 3:
switch(clase)
{
case 1:
i=0
b=0
while(i<=4 && b==0)
{
if(vuelo[2][i]!=1)
{
vuelo[2][i]=1
b=1
cout<<"\nSu pase de viaje es\n"
"Vuelo 3\tPrimera clase\tAsiento: ",(i+1)
}
Else
{
i++
if(i==4)
{print "\nPrimera clase: Todas las vacantes ocupadas\n"
"El vuelo parte en tres horas\n\n";}
}}
break
case 2:
i=5
b=0
while(i<=9 && b==0)
{
if(vuelo[2][i]!=1)
{
vuelo[2][i]=1
b=1
print "\nSu pase de viaje es\n"
"Vuelo 3\tSegunda clase\tAsiento: ",(i+1)
}
Else
{
i++
if(i==9)
{print "\nSegunda clase no hay vacantes\n"
"El vuelo parte en 3 horas\n"}
}}
break
default:print "Clase no existente\n"
}
break
break
default:print "Destino no existente\n"}}
void desplegar(entero vuelo[3][10])
{
entero r,c
print "1=Ocupados   0=Vacios\n";
print "Ascientos 1 2  3  4  5  6  7  8  9  10\n"
for(r=0 to 3 step r++)
{
print "Vuelo ",(r+1),": "
for(c=0 to 10 step c++)
{
print vuelo[r][c],"  "
}}}























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
entero in(char nombres[10][25]);
void reordenar(char nombres[10][25],entero n)
void dn(char nombres[10][25],entero n)
void main()
{
char nombres [10][25]
entero n
n=in(nombres)
reordenar(nombres,n)
dn(nombres,n)
getch()
}
entero in(char nombres[10][25])
{
entero i
i=0;
char nom[30]
do
{print "Nombre Alumno ",(i+1),": "
gets(nom)
if(strcmp(nom,"listo")!=0)
{strcpy(nombres[i],nom)
i++
}}
while(strcmp(nom,"listo" ) && (i<20))
return i}

void reordenar(char nombres[10][25],entero n)
{entero i,j
char temp[30]
for(i=0 to (n-1) step i++)
{for(j=(i+1)to  step j++)
if(strcmp(nombres[i],nombres[j])>0)
{strcpy(temp,nombres[i])
strcpy(nombres[i],nombres[j])
strcpy(nombres[j],temp)
}}}
void dn(char nombres[10][25],entero n)
{entero i=0
print "Lista en orden.\n"
for (i=0 to n step i++)
{
print (i+1),".- ",nombres[i]
}}




















3.-considere la siguiente lista de paises y sus capitales:
Canada-Ottawa,inglaterra-Londres-francia-Paris-India-Nueva delhi,israel_jerusalen,Italia-
Roma,Japon-Tokio,Mexico_CD.DE MExico,Republica popular de china-Beijin,Estados unidos-Wachington,D.C,Rusia-Moscu

Escribir un programa interactivo que acepte el nombre de un pais como entrada y escriba su correspondiente capital, y viceversa.Diseñar el programa de modo
que se ejecute repetidamente, hasta que se introdusca la palabra FIN.


Pseudocodigo
void ip(char paises[11][30],char capitales[11][30])
void main()
{
char paises[11][30]={"Canada","Inglaterra","Francia","India","Isrrael","Italia","Japon","Mexico","China","Estados Unidos","Rusia"}
char capitales[11][30]={"Ottawa","Londres","Paris","Nueva delhi","Jerusalen","Roma","Tokio","Cd.De Mexico","Beijin","Washington","Moscu"}
ip(paises,capitales);
print "Programa terminado\n"
getch()
}
void ip(char paises[11][30],char capitales[11][30])
{
entero i=0
char cd[30]
do
{
print "Escriba Pais o Capital (con mayuscula al principio):"
gets(cd);

if(strcmp(cd,"FIN")!=0)
{
for(i=0 to 12 step i++)
{
if(strcmp(cd,paises[i])==0)
{
print "\tPais\t\tCapital\n"
print "\t"<<paises[i]<<"\t\t"<<capitales[i]
}
if(strcmp(cd,capitales[i])==0)
{
print "\tCapital\t\tPais\n"
print "\t"<<capitales[i]<<"\t\t",paises[i]
}
}
}
}
while(strcmp(cd,"FIN"))
}

















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
void sd(entero n)
{
ofstream salida
salida.open("C://Dt1//nombres.txt")
entero i
char name[30]
for(i=1 to n step i++)
{
print "Nombre ",(i),": "
gets(name)
salida,name
}
salida.close();
}

void es()
{
ifstream entrada;
entrada.open("C://Dt1//nombres.txt")
char name[30];
print "\nLos estudiantes ingresados son\n"
entrada.getline(name,30)
print name
while(!entrada.eof())
{
entrada.getline(name,30)
print name
}
entrada.close()
}

void ac(entero n)
{
ofstream salida
salida.open("C://Dt1//calificaciones.txt")
int r,c,calf
for(r=0 to n step r++)
{
print "Favor de introducir calificaciones del estudiante ",(r+1)
for(c=0 to 6 step c++)
{
print "Calificacion ",(c+1),": "
read calf;
salida,calf," ";
}
salida;
}
salida.close()}






















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
void sf()
{
ofstream salida
salida.open("C://Dt1//nombres.txt")
entero i=0
char name[30]
do
{
print "Nombre ",(i+1),": "
gets(name)
if(strcmp(name,"FIN")!=0)
{
salida,name
i++
}}
while(strcmp(name,"FIN" ))
salida.close()
}
void ef()
{
ifstream entrada
entrada.open("C://Dt1//nombres.txt")
char name[30
print "\nListado de Estudiantes\n"
entrada.getline(name,30)
print name
while(!entrada.eof())
{
entrada.getline(name,30)
print name
}
entrada.close()
}
void main()
{
entero n
entero c[20][6]
sf()
ef()
getch()
}





















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 introdusca la palabra fin.Leer y mostrar los datos guardados en el archivo texto.dat

Pseudocodigo

void sf()
{
ofstream salida
salida.open("C://Datos3//texto.dat")
char texto[80]
print "introdusca el texto que desee, para finalizar introdusca la leyenda FIN"
do
{
gets(texto)
if(strcmp(texto,"FIN")!=0)
{
salida,texto
}}
while(strcmp(texto,"FIN" ))

salida.close()
}
void en()
{
ifstream entrada
entrada.open("C://Datos3//texto.dat")
char texto[80]
print "Texto guardado\n"
entrada.getline(texto,80)
print texto
while(!entrada.eof())
{
entrada.getline(texto,80)
print texto
}
entrada.close()
}
void main()
{
sf()
en()
getch()
}

















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

Pseudocodigo
void sf()
{
ofstream salida
salida.open("C://Datos3//texto.dat")
entero n=0
char texto[80]
print "introdusca el texto que desee"
do
{
gets(texto)
if(strcmp(texto,"\n")>=0)
{
salida,texto
}}
while(strcmp(texto,"\n" )>=0)
salida.close()
}
void en()
{
ifstream entrada
entrada.open("C://Datos3//texto.dat")
char texto[80]
print "introdusca el texto que desee"
entrada.getline(texto,80)
print texto
while(!entrada.eof())
{
entrada.getline(texto,80)
print texto
}
entrada.close()
}
void main()
{
sf()
en()
getch()
}




















7.-Escriba un programa que pueda crear un archivo 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   112.3  120.99
123.5  130.2  123.98 124.2

Pseudocodigo
void dp(flotante promedio[5])
void id()
void cp(flotante valores[5][4],flotante promedio[5])
void main()
{
float valores[5][4]
float promedio[5]
id()
cp(valores,promedio)
dp(promedio)
getch()
}
void id()
{
ofstream salida
salida.open("C://Datos//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.close()
}
void cp(flotante valores[5][4],flotante promedio[5])
{
ifstream entrada
entrada.open("C://Datos//voltios.txt")
entero r=0,c=0
flotante suma=0
for(r=0 to 5 step r++)
{
suma=0;
for(c=0 to 4 step c++)
{
entrada>>(valores[r][c])
suma=suma+valores[r][c]
}
promedio[r]=suma/4
}entrada.close()
}void dp(flotante promedio[5])
{
int r=0;
for(r=0 to 5 step r++)
{print "Promedio ",(r+1),": ",promedio[r]
}}






















7b.Agregar los siguientes tres registros al archivo voltios:

122.11  128.5   99.2  89.70
125.12  101.33  89.75 129.90
95.33  124.50  133.23  95.34

leer cada registro y calcular el promedio de cada registro y el promedio general de los voltajes.

Pseudocodigo
void id()
void cp(flotante valores[5][4],flotante promedio[5])
void dp(flotante promedio[5])
void main()
{
flotante valores[5][4]
flotante promedio[5]
id()
cp(valores,promedio)
dp(promedio)
getch()
}
void id()
{
ofstream salida
salida.open("C://Datos//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();
}
void cp(flotante valores[8][4],flotante promedio[8])
{
ifstream entrada
entrada.open("C://Datos//voltios.txt")
entero r=0,c=0
flotante suma=0
for(r=0 to 8 step r++)
{
suma=0
for(c=0 to 4 step c++)
{
entrada,(valores[r][c])
suma=suma+valores[r][c]
}
promedio[r]=suma/4
}
entrada.close()
}
void dp(flotante promedio[8])
{
entero r=0
flotante suma=0
flotante promediog=0
for(r=0 to 8 step r++)
{
print "Promedio  ",(r+1),"  : ",promedio[r]
}
for(r=0 to 8 step r++)
{
suma=suma+promedio[r]
}
promediog=suma/8
print "Promedio general: "promedio
}
























miércoles, 30 de mayo de 2012

Tarea Unidad 3

                                                                     Tarea III
1.-¿Qué diferencia existe entre cadena de texto y arreglo de caracteres?

Una cadena de texto es una secuencia de caracteres. Ejemplos de
cadenas son:
" Don Quijote de la Mancha"
"Hola Mundo"
"Apolo Apolo 13"
En C++ una cadena se considera como un array de caracteres terminado
con el carácter nulo '\0'.
Arreglo: Colección ordenada de elementos de un mismo tipo. Ordenada significa que cada elemento tiene una ubicación determinada dentro del arreglo y debemos conocerla para accederlo.
Un arreglo en C++ es un conjunto de datos que se alamacenan en memoria de manera contigua con el mismo nombre. Para difenciar los elementos de un arreglo se utilizan índices detrás del nombre del arreglo y encerrados por []. El elemento 5° (quinto) de un arreglo, es representado por el índice [4], ya que los índices comienzan en 0. Esto significa que un arreglo de 10 elementos tendría los índices del 0 al 9: [0...9]

La principal diferencia entre una cadena y un arreglo de caracteres, es que
una cadena siempre termina con el carácter nulo '\0' y los arreglos de
caracteres caracteres nono.
Como conclusión, p  q , podemos decir que
- Todas las cadenas de texto son arreglos de caracteres,
- pero, no todos los arreglos de caracteres almacenan  cadenas.

Ejemplo de un arreglo

int arregloEntero[10]; 
//Declaracion de un arreglo de 10 elementos, sin inicializar.  
arregloEntero[5] = 45; //Asignacion de 45 al elemento 6 del arreglo.
double arrPuntoFlotante[3] = {1.1,1.2,1.3}; 
//Declaracion y asignacion en un arreglo de 3 elementos double.
int a[4], b[5]; 
//Declaracion de dos arreglos enteros, de 4 y 5 elementos.



2.- ¿Cuál es la declaración de una cadena de texto?
Una cadena en C++ es un conjunto de caracteres, o valores de tipo char, terminados con el carácter nulo, es decir el valor numérico 0. Internamente, en el ordenador, se almacenan en posiciones consecutivas de memoria. Este tipo de estructuras recibe un tratamiento muy especial, ya que es de gran utilidad y su uso es continuo.
La manera de definir una cadena es la siguiente:
char <identificador> [<longitud máxima>];

Cuando se declara una cadena hay que tener en cuenta que tendremos que reservar una posición para almacenar el carácter nulo terminador, de modo que si queremos almacenar la cadena "HOLA", tendremos que declarar la cadena como:

char Saludo[5];

Las cuatro primeras posiciones se usan para almacenar los caracteres "HOLA" y la posición extra, para el carácter nulo.
También nos será posible hacer referencia a cada uno de los caracteres individuales que componen la cadena, simplemente indicando la posición. Por ejemplo el tercer carácter de nuestra cadena de ejemplo será la 'L', podemos hacer referencia a él como Saludo[2].
Es muy importante tener presente que en C++, los índices tomarán valores empezando siempre en cero, así el primer carácter de nuestra cadena sería Saludo[0], que es la letra 'H'.
En un programa C++, una cadena puede almacenar informaciones en forma de texto, como nombres de personas, mensajes de error, números de teléfono, etc.
La asignación directa sólo está permitida cuando se hace junto con la declaración.
El siguiente ejemplo producirá un error en el compilador, ya que una cadena definida de este modo se considera una constante, como veremos en el capítulo de "arrays" o arreglos.
La manera correcta de asignar una cadena es:
char Saludo[5];
Saludo = "HOLA"

char Saludo[5];
Saludo[0] = 'H';
Saludo[1] = 'O';
Saludo[2] = 'L';
Saludo[3] = 'A';
Saludo[4] = 0;


 3.- ¿Cómo se realiza la lectura de cadenas de texto?
C++ dispone de funciones específicas que en unión con cin, permite la
cin.getline: cadena  × tamaño  × carácter ? void  iostream.h
p p q p
lectura correcta de datos tipo cadena.
Sirve para leer una línea completa incluyendo espacios en blanco.
- cadena: nombre de la variable donde queremos guardar la cadena.
- tamaño: nº máximo de caracteres que se leerán. El tamaño deber como mucho
la longitud que aparece en la declaración de la cadena.

-- carácter:: se leerán caracteres hasta que se encuentre el se leerán caracteres hasta que se encuentre el carácter carácter aquí aquí
especificado. Si no se pone, el compilador supone que es '\n'.






Sirve para leer un carácter del flujo de entrada. Esta función cin.get(letra) lee un
cin.get : char ? bool iostream.h
carácter y lo guarda en letra. Devuelve 0 si el carácter leído es final de archivo. En
otro caso devuelve 1.

las funciones para la lectura de cadenas.
gets : cadena ? void stdio.h
Console stdio.h
Sirve para leer una línea desde el archivo de entrada. Lee hasta que
encuentra un salto de línea. Se llama a ésta función  con el nombre de la
variable donde queremos guardar la cadena leída.

Sirve para leer un carácter del flujo de entrada sin que aparezca en pantalla.
getch : void ? int conio.h
llama sin argumentos y devuelve un entero

getchar : void ? int  stdio.h
Sirve para leer el siguiente carácter del flujo de entrada. Se la llama sin
argumentos y devuelve un entero.

void main()
{
Ejemplo:
{
char letra ;
bool seguir = true;
while (seguir)
{
letra = getchar();
if (letra == '\n')
{
cout << "fin de línea";
cout << fin de línea ;
seguir = false;
}
else
cout << letra;
}
getch();
}
Las funciones getch y getchar
están especializadas en la
captura de un solo carácter.
La diferencia es que getchar
lee un carácter y lo imprime en
pantalla. Sin embargo getch, lo
lee pero no lo imprime en
pantalla.
Se utilizan para:

- lectura de un solo carácter
- retener pantallas.

C++ C++ dispone de la biblioteca de cadena string h Dicha biblioteca contiene dispone de la biblioteca de cadena string.h. Dicha biblioteca contiene
funciones de manipulación de cadenas.


Blibliografia:
http://gpd.sip.ucm.es/yolanda/LP2/Cadenas.pdf
http://www.alipso.com/monografias/2266_arreglosestados/
http://c.conclase.net/curso/?cap=008
http://codigomaldito.blogspot.mx/2005/11/arreglo-de-caracteres.html





martes, 29 de mayo de 2012


Practica 14
1.-Escribir un programa interactivo para procesar las noticias de un grupo de estudiantes en un curso de programacion.Empezar especificamente el numero de notas de examenes para cada estudiante(asumir que este valor es el mismo para todos los estudiantes de la clase).Despues introducir el nombre de cada estudiante y las notas de los examenes .Calcular una medida para cada estudiante y una medida general de la clase(una media de las medidas de los estudiantes ) .Escribir la media de la clase seguida por el nombre , las noticias individuales de los examenes y la media para cada estudiante .Tambien desplegar el nombre del estudiante de mayor calificacion

Pseudocodigo
template <class t>
void introducirdatos(t Arreglo[20][5],entero n, entero m, flotante name[20][30]){
entero r,c
print "Introducir los siguientes datos"
for(r=0 to n-1 step r=r+1){
print "Nombre Alumno ",(r+1),": "
read name[r]
for(c=0; c<=m-1; c=c+1){
print "Calificacion de examen No.",(c+1),": "
read Arreglo[r][c]}}}
template<class t>
void imprimirdatos(t Arreglo[20][5],int n,int m,char name[20][30]){
int r,c,mayor=0,nummayor=0
t suma,promedio=0
for(r=0 to n-1 step r=r+1){
print "Alumno: ",name[r]
suma=0;
for(c=0 to m-1 step c=c+1){
print " Calificacion ",(c+1),": ",Arreglo[r][c]
suma=suma+Arreglo[r][c]}
print " Promedio: ",suma/m
if((suma/m)>mayor){
mayor=suma/m
nummayor=r}
promedio=promedio+(suma/m)}
print " Promedio general: ",(promedio/n)
print " Alumno con mejor promedio: ",name[nummayor]
getch()}
void main(){
flotante Arreglo[20][5]
entero n,m
flotante name[20][30]
print "Numero de alumnos a evaluar: "
read n
print "Numero de examenes de cada alumno: "
read m
introducirdatos(Arreglo,n,m,name)
imprimirdatos(Arreglo,n,m,name)}








































2.-Haga un programa que considere un arreglo bidemencional cuadrada de 4x4 de numeros enteros.
realizar las siguientes funciones:
a)generar numeros aleatorios para el arreglo bidimencional de 4x4
d)una funcion para sumar las columnas y desplegar cada suma
era b*
c)una funcion paras sumar los renglones y desplegar cada suma
d)una funcion para sumar las diagonal principal
e)una funcion para sumar la diagonal inversa
f) Una funcion para desplegar todo el arreglo bidimencional


Pseudocodigo
void introducirdatos(entero A[4][4]){
entero r,c;randomize()
for(r=0 to  4 step  r=r+1){
for(c=0 to  4 step c=c+1){
A[r][c]=random(10)+1
Print A[r][c]}
Print "\n"}}
void sumacolum(int A[4][4]){
entero suma,r,c
for(c=0 to 4 step c=c+1){
suma=0
for(r=0 to 4 step  r=r+1){
suma=suma+A[r][c]}
Print "Suma de columnas ",(c+1),": ",suma}}
void sumarengl(int A[4][4]){
entero suma=0,r,c
for(r=0 to  4 step r=r+1){
suma=0
for(c=0 to 4 step c=c+1){
suma=suma+A[r][c]}
Print "Suma de renglon ",(r+1),": ",suma}}
void sumadiagonalinver(int A[4][4]){
entero suma=0,d
for(d=0 to 4 step  d=d+1){
suma +=A[d][d]}


Print "Suma de diagonal inversa: ",suma}
void sumadiagonaln(int A[4][4]){
entero suma=0,r,c
c=3
for(r=0 to 4 step  r=r+1){
suma=suma+A[r][c]
c--
}
Print "Suma de diagonal: ",suma}
void main (){
entero A[4][4]
introducirdatos(A)
sumacolum(A)
sumarengl(A)
sumadiagonaln(A)
sumadiagonalinver(A)
getch()}







































3,.-Una compañia manufacturera tiene 10 plantas .Elaborar un programa que permita leer de nombres de cada empresa y la produccion que se hizo en cada uno de los siete dias de la semana ;utilizar un arreglo de una dimesion para leer los nombres de las plantas y un arreglo de dos dimeciones (12x7) para leer la produccion de las 10 plantas en los siete dias m una columna para cada dia ,La idea es leer el nombre de la primera planta y luego la produccion hecha en cada uno de los siete dias , luego procesar la empresa 2 y asi sucesivamente.Imprime el siguiente reporte
Reporte de producción
Planta dia1|dia2|dia3|dia4|dia5|dia6|dia7|proxima semana
Totales:
planta mas productiva produccion de la planta mas productiva
dia con mayor produccion : mayor produccion en el dia
listo es todo


Pseudocodigo
void datosproduccion(int P[13][8],char name[12][30]){
entero r,c
randomize()
for(r=0 to 12 step r+1){
print “Nombre de la planta ",(r+1),": "
gets (name[r])
for(c=0 to 7 step c=c+1){
P[r][c]=random(1000)+1}}}
void producciondia(int producc[13][8]){
entero suma=0, r,c
for(c=0 to 7 step c+1){
suma=0
for(r=0 to 12 step r+1){
suma=suma+producc[r][c]}
producc[12][c]=suma}}
void produccionplanta(int producc[13][8]){
entero r,c,suma
for(r=0 to 12 step r+1){
suma=0
for(c=0 to 7 step c+1){
suma=suma+producc[r][c]}
producc[r][7]=suma}}
void diamayorproduccion(entero producc[13][8],entero & mayor,entero& posmayor){
entero c
for(c=0 to 7 step c+1){
if(producc[12][c]>mayor){
mayor=producc[12][c]
posmayor=c}}}
plantamayorproduccion(entero producc[13][8],entero& mayor,entero& posmayor){
entero r
for(r=0 to 12 step r+1){
if(producc[r][7]>mayor){
mayor=producc[r][7]
posmayor=r}}}
void desplegardatos(flotante name[12][30],entero producc[13][8],entero mayor,entero posmayor){
entero r,c
print “\n\t\tReporte semanal de produccion"
print “Planta\tDia1\tDia2\tDia3\tDia4\tDia5\tDia6\tDia7\tProd. Semanal";
for(r=0 to 12 step r+1){
print "\n\n",name[r]
for(c=0 to 8 step c+1){
print "\t",producc[r][c]}}
print “\n\nTotales: "
for(c=0 to 7  step c+1){
print “"\t",producc[12][c]}
plantamayorproduccion(producc,mayor,posmayor)
print “\n\nPlanta mas productiva: ",name[posmayor]
print “Produccion de la planta mas productiva: "mayor
diamayorproduccion(producc,mayor,posmayor);
print “Dia con mayor produccion: ",(posmayor+1)
print “Mayor Produccion en un Dia: ",mayor}
void main (){
entero producc[13][8],r,c,mayor,posmayor
flotante name[12][30]
datosproduccion(producc,name)
produccionplanta(producc)
producciondia(producc)
plantamayorproduccion(producc,mayor,posmayor)
desplegardatos(name,producc,mayor,posmayor)
getch()}




miércoles, 23 de mayo de 2012



Practica 13
1.-Realizar las siguientes funciones estadísticas en un arreglo de 10 elementos:
a) calcular la media geométrica
b)media armonica
c)intervalo
d)desviación estándar
e)variancia

codigo

 #include <conio.h>
#include <iostream.h>
#include <math.h>


/*Practica 13 problema 1 Echamea Camacho Carlos Darrel 11211070*/
template <class T>
void enteroduceDatosArreglo(T arreglo[10],int n)
template <class T>
T promedio(T arreglo[10],int n)
template <class T>
T mediaGeometrica(T arreglo[10],int n)
template <class T>
T mediaArmonica(T arreglo[10],int n)
template <class T>
T menor(T arreglo[10],int n)
template <class T>
T mayor(T arreglo[10],int n)
template <class T>
T variancia(T arreglo[10],int n)
int main()
{float a[10];
int n1;
do
{
cout<<"introduce  numero de datos(<=10)= ";
cin>>n1;
}
while(n1<=0 || n1>10);
enteroduceDatosArreglo(a,n1);
cout<<endl;
cout<<" El promedio es         : "<<promedio(a,n1)<<endl;
cout<<" La media geometrica es : "<<mediaGeometrica(a,n1)<<endl;
cout<<" La media Armonica es   : "<<mediaArmonica(a,n1)<<endl;
cout<<" El intervalo es  :("<<menor(a,n1)<<","<<mayor(a,n1)<<")"<<endl;
cout<<" La Variancia es        : "<<variancia(a,n1)<<endl;
cout<<" La Desviacion estandar : "<<pow(variancia(a,n1),.5)<<endl;
getch();
}
template <class T>
void enterosroduceDatosArreglo(T arreglo[10],int n)
{
int i=0;
for(i=0; i<n ;i++)
{
cout<<"DATO "<<(i+1)<<"= ";
cin>>arreglo[i];
}} 
template <class T>
T promedio(T arreglo[10],int n)
{
T suma=1;
int i=0;
for(i=0; i<n ;i++)
{
suma=suma+arreglo[i];
}
return suma/n;
}
template <class T>
T mediaGeometrica(T arreglo[10],int n)
{
T suma=1;
int i=0;
for(i=0; i<n ;i++)
{
suma=suma*arreglo[i];
}
return pow(suma,1.0/n);
}
template <class T>
T mediaArmonica(T arreglo[10],int n)
{
T suma=0 ;
int i=0;
for(i=0; i<n ;i++)
{
suma=suma+1.0/arreglo[i];
}
return n/suma;
}

template <class T>
T menor(T arreglo[10],int n)
{
T menor=9999;
int i=0;
for(i=0; i<n ;i++)
{
if(arreglo[i]<menor)
{
menor=arreglo[i];
}}
return menor;
}

template <class T>
T mayor(T arreglo[10],int n)
{
T mayor=0;
int i=0;
for(i=0; i<n ;i++)
{
if(arreglo[i]>mayor)
{
mayor=arreglo[i];
}}
return mayor;
}

template <class T>
T variancia(T arreglo[10],int n)
{
T media=0;
T suma=0;
int i=0;
for(i=0; i<n ;i++)
{
suma=suma+arreglo[i];
}
media=suma/n;
suma=0      ;
for(i=0; i<n ;i++)
{
suma=suma+pow(media-arreglo[i],2);
}
return suma/n;
}



Pseudocodigo

template <class T>

void inDatosArreglo(T arreglo[10],entero n)

template <class T>

T promedio(T arreglo[10],entero n)

template <class T>

T mediaGeometrica(T arreglo[10],entero n)
template <class T>
T mediaArmonica(T arreglo[10],entero n)
template <class T>
T menor(T arreglo[10],entero n)
template <class T>
T mayor(T arreglo[10],entero n)
template <class T>
T variancia(T arreglo[10],entero n)
Fin de plantillas
Inicio programa
{
real a[10]
enteros n1
do
{
print "introduce  numero de datos(<=10)= "
read n1
}
while(n1<=0 || n1>10)
inDatosArreglo(a,n1)
prenteros "El promedio es                : "promedio(a,n1)  
prenteros "La media geometrica es  : "mediaGeometrica(a,n1)  
prenteros "La media Armonica es     : "mediaArmonica(a,n1)  
prenteros "El Enteroservalo es de     :("menor(a,n1)","mayor(a,n1)")"  
prenteros "La Variancia es                : "variancia(a,n1)  
prenteros "La Desviacion estandar   : "pow(variancia(a,n1),.5)   
fin programa
inicio plantilla
template <class T>
void inDatosArreglo(T arreglo[10],entero n)
{
enteros i=0
for(i=0 to n step i++)
{
print "Dato "(i+1)"= "
read arreglo[i]
}}

template <class T>
T promedio(T arreglo[10],entero n)
{
T suma=1
entero i=0
for(i=0 to n step i++)
{
suma=suma+arreglo[i]
}
return suma/n
}
template <class T>
T mediaGeometrica(T arreglo[10],entero n)
{
T suma=1
entero i=0
for(i=0 to n step i++)
{
suma=suma*arreglo[i]
}
return pow(suma,1.0/n)
}
template <class T>
T mediaArmonica(T arreglo[10],entero n)
{
T suma=0
enteros i=0
for(i=0 to n step i++)
{
suma=suma+1.0/arreglo[i]
}
return n/suma
}
template <class T>
T menor(T arreglo[10],entero n)
{
T menor=9999
enteros i=0
for(i=0 to n step i++)
{
if(arreglo[i]<menor)
{
menor=arreglo[i]
}}
return menor
}
template <class T>
T mayor(T arreglo[10],entero n)
{
T mayor=0
enteros i=0
for(i=0 to n step i++)
{
if(arreglo[i]>mayor)
{
mayor=arreglo[i]
}}
return mayor
}

template <class T>
T variancia(T arreglo[10],entero n)
{
T media=0
T suma=0
enteros i=0
for(i=0 i<n i++)
{
suma=suma+arreglo[i]
}
media=suma/n
suma=0
for(i=0 to n step i++)
{
suma=suma+pow(media-arreglo[i],2)
}
return suma/n
}




2.Diseñe un programa para calcular el salario de un grupo de 5 vendedores.El sueldo de cada uno de ellos se paga con base en una comisión sobre las ventas realizadas y cada uno vende 5 carticulos.Los datos que debe considerar son el nombre del vendedor, y el articulo vendido, el precio por unidad y el numero de las que se han vendido.Los datos no se encuentran en secuencia ordenada.Suponga que la comisión que se paga es:

No articulo                       Descripcion por Unidad Comision
1  Articulos de limpieza                     $250.00             5%
2  Articulos de Cocina                       $390.00             4%
3  Articulos escolares                        $478.00             2%
4 Articulos para automóviles             $267.00             2%
5 Despensa de 30 articulos               $175.00             2%

Debe calcular el sueldo de cada vendedor


Pseudocodigo
void dtarreglo(char a[5][30])
{
entero i
for(i=0 to 4 step i++)
{
print ”  Dato ",(i+1),":"
gets(a[i])
}}
void pa(float p[5]){
int i
for(i=0 to 4 step i++){
print " precio del articulo ",(i+1),":"
read p[i];}}
void sv(entero nv,entero na, real s[5],float p[5],entero cant){
switch (na){
case 1:s[nv-1]=s[nv-1]+p[na-1]*cant*0.05
break
case 2:s[nv-1]=s[nv-1]+p[na-1]*cant*0.04
break
case 3:
case 4:
case 5:s[nv-1]=s[nv-1]+p[na-1]*cant*0.02
break;
default: print  “ error en numero de vendedor "}}
 void main(){
 char nov[5][30],n,noa[5][30]
 real sueldo[5]={0,0,0,0,0},precio[5];
 entero nv,na,cant,i
 print " nombre vendedores: "
 dtarreglo(nov);
 print " nombre articulos: "
 dtarreglo(noa);
 print " Introduce precios de cada uno de los articulos: "
 pa(precio)
 do{
 print "numero de vendedor: "
 read nv
 print " numero de articulo: "
 read na
 print "Cantidad de articulos:"
 read cant
 sv(nv,na,sueldo,precio,cant);
 print "Desea realizar otro calculo"
 print "1)si/2)no "
 read n}
 while (n=='1')
 for(i=0 to 4 step i++){
 print " \nVendedor: ",nov[i]
 print " sueldo: ",sueldo[i]
getch()}}               
















































3.-Haga un programa que contabilice una cuenta de cheques.Al inicio le introduce el nombre del cuentahabiente y el saldo inicial.A continuación se puede hacer depósitos y retiros.Cuando sea deposito se incrementa el saldo, y cuando se retira se resta.Este programa terminara cuando ya no se desee hacer movimientos.Se requiere la impresión del siguiente reporte:
Estado de cuenta
Cuentahabiente:Luis Garcia Garcia
Saldo inicial:$5000.00
Movimiento Deposito Retiro Saldo
Considere arreglos de nombre de clientes y un arreglo de saldo inicial para 3 clientes y arreglos para cada cliente de 20 movimientos

pseudocódigo

float dtarreglo (char c[3][30],real si[3])
real m(real s, real mv[20],char c[3][30],real si[3],entero nc)
real dtarreglo (char c [3][30], real si[3])
{
entero i
print " Introdusca los datos del cliente “
for(i=0 to 3 step i++)
{
print Nombre cliente: "
gets(c[i])
print Saldo inicial: "
read si[i]
}return si[i]
}
real m(float s, real mv [20],char c[3][30], real si[3],int nc)
{
entero i=0
do{
print " Movimiento ('+'cantidad=deposito/'-'cantidad=retiro): "
read mv[i]
i++
}
while ((mv[i-1]!=0)&&(i<20))
for (i=0 to 20 step i++)
{
if ((s<mv[i])&(mv[i]<0))
{
print Error los saldos son insuficientes "
}
else
{
s+=mv[i]
}
}

print " Estado de cuenta"
print " nombre: ",(c[nc-1])
print " Saldo inicial: ",(si[nc-1])
print " movimiento  \tDeposito Retiro\tSaldo\n"
entero q=0
do
{
print q+1), "\t\t"
if(mv[q]>0)
{
 print "+\t\t"
}
else
{
print "\t - \t"
}
print  (mv[q]),"\n\n"
q++
}
while ((mv[q]!=0)&&(q<20))
return(s)
}
void main()
{
real s=0
char c[3][30]
real si[3],t
real mv[20]
int nc,sigue
dtarreglo(c,si)
do{
print "numero de cliente:"
read nc
s=si[nc-1]
t=m(s,mv,c,si,nc)
print " Saldo final: ",t
print " Desea introducir otro cliente (si=1/no=0):"
read sigue
}
while (sigue==1)
}