Prácticas de la Unidad III (8, 9 y 10)





Práctica 8


Problema 1
Escribe un programa que contenga una función con un nombre promedio para calcular el promedio de 3 valores dados.

Seudocódigo
1.-Inicio  promedio (int n1, int n2, int n3)
{
int suma=(n1+n2+n3)
int p=suma/3
print "El promedio es =",p
}
Final promedio
1.-Inicio
v1,v2,v3    int
print "valor 1 entero="
read v1
print "valor 2 entero="
read v2
print "valor 3 entero="
read v3
promedio (v1,v2,v3)
Fin


Lenguaje C++





Problema 2

Seudocódigo
1.-Inicio promedio(int n1, int n2, int n3)
{
int p=(n1+n2+n3)/3
return p
}
Fin promedio
1.-Inicio
v1,v2,v3,x  int
print "valor 1 entero= "
read v1
print "valor 2 entero= "
read v2
print "valor 3 entero= "
read v3
x=promedio(v1,v2,v3)
print "El promedio es=",x
Fin

Lenguaje C++






Problema 3
El volumen v de un cilindro está dado por la fórmula v=3.1416*r*r*l
Donde              r es el radio del cilindro
                       l es el largo del cilindro
Usando ésta fórmula escriba una función nombrada volcil que acepte el radio y el largo de un cilindro y devuelva su volumen.
Diseñe una función llamada areasup que acepte el largo y el radio de un cilindro y devuelva su superficie (s=2*3.1416*r*l).
Asegure que las funciones sean llamadas desde main() y devuelva en forma correcta un valor a main().

Seudocódigo
1.-Inicio  volcil(real radio, real largo)
{
return (3.1416*pow(radio,2)*largo)
}
Fin volcil
1.-Inicio areasup(real radio, real largo)
{
area  real
area=(2*3.1416*radio*largo)
return area
}
Fin areasup
1.-Inicio
vol,a1  real
rad,la   real
print "Radio cilindro= "
read rad
print "Largo cilindro= "
read la
vol=volcil (rad,la)
a1=areasup(rad,la)
print "El volumen es=",vol
print "El area de la superficie del cilindro es=",a1
Fin

Lenguaje C++


Problema 4
Escriba una función denominada triangulorectangulo que acepte la longitud de 2 lados de un triángulo rectángulo con los argumentos a y b, respectivamente. La función debe determinar y devolver la hipotenusa c del triángulo (use el teorema de Pitágoras).
Seudocódigo
1.-Inicio triangulorectangulo(real a,real b)
{
c real
c=sqrt(a*a+b*b)
return c
}
Fin triangulorectangulo
1.-Inicio
lado1, lado2, hipotenusa   real
print "Lado 1= "
read lado1
print "Lado 2= "
read lado2
hipotenusa=triangulorectangulo(lado1,lado2)
print "La hipotenusa = ",hipotenusa
Fin



Lenguaje C++



Problema 5

Seudocódigo
1.- Inicio generardatos(int valores[100])
{
randomize()
for(i=0;i<=99;i=i+1)
{
  valores[i]=random(2000)+1
}
}
Fin generardatos
1.- Inicio listadatos(int valores [100])
{
for(i=0;i<=99;i=i+1)
{
print valores[i]," "
}
print
}
Fin listadatos
1.-Inicio numeromayor(int valores[100])
{
mayor=valores[0]  int
for(int i=1;i<100;i=i+1)
{
if(valores [i]>mayor)
{
mayor=valores[i]
}
}
return mayor
}
Fin numeromayor
1.- Inicio numeromenor(int valores[100])
{
menor=valores[0]   int
for(int i=1;i<100;i=+1)
{
if(valores [i]<menor)
{
menor=valores[i]
}
}
return menor
}
Fin numeromenor
1.- Inicio sumavalores(int valores [100])
{
i  int
suma=0  int
for (i=0;i<=99;i=i+1)
{
suma=suma+valores[i]
}
return suma
}
Fin sumavalores
1.-Inicio
numeros[100]  int
generardatos(numeros)
listadatos(numeros)
print "El dato mayor  es ",numeromayor(numeros)
print "El dato menor  es ",numeromenor(numeros)
print "La suma de los 100 numeros es ",sumavalores(numeros)
Fin


Lenguaje C++



Problema 6

Escriba un programa que especifique 3 arreglos unidimensionales denominados corriente, resistencia y voltios cada arreglo debe ser capaz de almacenar 10 elementos. Introduzca valores corriente y resistencia. Los datos introducidos en el arreglo voltios debe ser el producto de los valores correspondientes en los valores corriente y resistencia (voltios[i]=corriente[i]*resistencia[i]).
Después de introducir todos los datos despliegue la siguiente salida:
corriente, resistencia, voltios despliegue el valor correcto de cada encabezado.

Seudocódigo
1.-Inicio introcorriente(int corriente[10])
{
i  int
for (i=0;i<10;i=+)
{
print "Corriente[",i,"]:"
read corriente[i]
}
}
Fin introcorriente
1.-Inicio introresistencia(int resistencia[10])
{
i  int
for (i=0;i<10;i=+1)
{
print "resistencia[",i,"]:"
read resistencia[i]
}
}
fin introresistencia
1.- Inicio calculovoltios(int corriente[10], int resistencia[10],int voltios[10])
{
i int
for (i=0;i<10;i=+1)
{
voltios[i]=corriente[i]*resistencia[i]
}
}
Fin calculovoltios
1.- Inicio imprimirdatos(int corriente[10], int resistencia[10],int voltios[10])
{
print "Corriente    Resistencia    Voltios"
i  int
for (i=0;i<10;i=i+1)
{
print corriente[i],"        ",resistencia[i],"        ",voltios[i]
}
}
Fin imprimirdatos
1.-Inicio
res[10], corr[10], vol[10]   int
introcorriente(corr)
introresistencia(res)
calculovoltios(corr,res,vol)
imprimirdatos(corr,res,vol)
Fin


Lenguaje C++

 
Problema 7

1.- Inicio intercambio (int and primervalor, int and segundovalor)
{
temporal  int
temporal=primervalor
primervalor=segundovalor
segundovalor=temporal
}
Fin intercambio
1.-Inicio mayor (int a, int b, int c)
{
if (a>=b and a>=c)
{
return a
}
else {
if (b>=a and b>=c)
{
return b
}
else {
return c
}
}
}
Fin mayor
1.-Inicio
n1, n2, n3, may    int
print "N1= "
read n1
print "N2="
read n2
print "N3="
read n3
may=mayor(n1,n2,n3)
print "El valor mayor es: ",may
intercambio(n1,n2)
print "Dato n1=",n1
print "Dato n2=",n2
Fin

Lenguaje C++




Problema 8
Escriba una función llamada tiempo que tenga un parámetro en número entero denominado segundos y 3 parámetros de referencia en número entero denominados horas, min y seg. La función ha de convertir el número transmitido en segundos a su equivalente en horas, minutos y segundos. Utilizando las referencias la función debe alterar directamente los argumentos respectivos en la función que llama.

Seudocódigo
1.-Inicio tiempo (int segundos, int andhoras,int andmin,int andseg)
{
horas=segundos/3600
min=(segundos%3600)/60
seg=(segundos%3600)%60
}
Fin tiempo
1.- Inicio
segundos,horas,seg,min   int
print "Segundos= "
read segundos
tiempo (segundos,horas,min,seg)
print horas,":",min,":",seg
Fin


Lenguaje C++







Problema 9
Escriba una función denominada calcanios que tenga un parámetro en número entero que representa el número total de días desde la fecha 1/1/1900 y los parámetros de referencia denominados anio, mes, dia. La funcón ha de calcular el año, el mes, y día para un número de días transmitidos. Utilizando las referencias la función debe alterar directamente los argumentos respectivos en la función que llama. Para éste problema suponga que cada año tiene 365 días y cada mes tiene 30 días.

Seudocódigo
1.-Inicio calcanios (int dias, int and anio, int and mes, int and dia)
{
anio1,mes1,dia1    int
anio1=dias/365
dias=dias-(anio1*365)
mes1=dias/30
dia1=dias%30
dia=dia+dia1
mes=mes+mes1
anio=anio+anio1
}
Fin calcanios
1.-Inicio
dias,a,m,d  int
print "numero dias= "
read dias
a=1900
m=1
d=1
calcanios (dias,a,m,d)
print d,"/",m,"/",a
Fin

Lenguaje  C++





Problema 10
Escriba una plantilla de función llamada (maximo) que devuelva el valor máximo de 3 argumentos que se transmiten a la función cuando ésta sea llamada. Suponga que los 3 argumentos serán del mismo tipo de dato.
Incluya la plantilla de función dentro de un programa completo que llame a la función con 3 números enteros y luego con 3 números con punto flotante.

Seudocódigo
1.-Inicio funcion maximo
T maximo(T n1, T n2, T n3)
{
if (n1>=n2 and n1>=n3)
{
return n1
}
else {
if (n2>=n1 and n2>n3)
{
return n2
}
else {
return n3
}
}
}
Fin funcion maximo
1.-Inicio
num1,num2,num3  int
nf1,nf2,nf3          real
print "Primer valor entero= "
read num1
print "Segundo valor entero= "
read num2
print "Tercer valor entero= "
read num3
print "El dato mayor es ",maximo(num1,num2,num3)
print "Primer valor flotante= "
read nf1
print "Segundo valor flotante= "
read nf2
print "Tercer valor flotante= "
read nf3
print "El dato mayor es ",maximo(nf1,nf2,nf3)
Fin

Lenguaje C++





Problema 11
Escriba una plantilla de función llamada areacuadrado que calcule y devuelva el área de un cuadrado. Escriba una plantilla de función llamada percuadrado que calcule y devuelva el perímetro de un cuadrado de un sólo argumento transmitido a la función cuando ésta sea llamada.
Incluya la plantilla de función dentro de un programa completo.


Seudocódigo
1.-Inicio funcion areacuadrado
T areacuadrado(T lado)
{
return lado*lado
}
Fin areacuadrado
1.-Inicio  funcion percuadrado
T percuadrado (T lado)
{
return 4*lado
}
Fin funcion percuadrado
1.-Inicio
lado  double
print "Lado cuadrado (double):"
read lado
print "El area del cuadrado es ",areacuadrado(lado)
print "El perimetro del cuadrado es ",percuadrado(lado)
l1    int
print "Lado cuadrado (entero):"
read l1
print "El area del cuadrado es ",areacuadrado(l1)
print "El perimetro del cuadrado es ",percuadrado(l1)
Fin

Lenguaje C++






Problema 12
Escriba un programa que almacene 5 valores en un arreglo llamado resistencia. El programa también debe crear dos arreglos llamado corriente y potencia, los cuales deberán ser capaces de almacenar 5 valores numéricos. Haga que el programa acepte 5 valores introducidos por el usuario para el arreglo corriente y resistencia, el cual debe almacenar en el arreglo potencia el producto de los valores correspondientes al cuadrado del arreglo corriente y el arreglo resistencia (potencia[i]=resistencia[i]*pow(corriente[i],2))
Desplegar la siguiente salida

Resistencia          Corriente          Potencia
----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------

----------------------------------------------------------------
                                                       Total
                                                                ---------------------


Seudocódigo
1.-Inicio  funcion introresistencia
void introresistencia(T resistencia[5])
{
i   int
for(i=0;i<5;i=i+1)
{
print "Resistencia [",i,"]:"
read resistencia[i]
}
}
Fin introresistencia
1.-Inicio  funcion introcorriente
void introcorriente(T corriente[5])
{
i   int
for(i=0;i<5;i=i+1)
{
print "Corriente [",i,"]:"
read corriente[i]
}
}
Fin introcorriente
1.-Inicio funcion calculopot
void calculopot(T resistencia[5],T corriente[5],T potencia[5])
{
i    int
for(i=0;i<5;i=i+1)
{
potencia[i]=resistencia[i]*pow(corriente[i],2)
}
}
Fin calculopot
1.-Inicio  funcion sumapotencia
T sumapotencia(T potencia[5])
{
i   int
T suma=0
for(i=0;i<5;i=i+1)
{
suma=suma+potencia[i]
}
return suma
}
Fin sumapotencia
1.-Inicio funcion imprime
void imprime(T resistencia[5],T corriente[5],T potencia[5])
{
i int
print "Resistencia   Corriente   Potencia"
for(i=0;i<5;i=i+1)
{
print resistencia[i],"",corriente[i],"",potencia[i]
}
}
Fin imprime
1.-Inicio

res[5],corr[5],p[5]   int
introresistencia(res)
introcorriente(corr)
calculopot(res,corr,p)
imprime(res,corr,p)
print "                         total= ",sumapotencia(p)
Fin

Lenguaje C++





Problema 13
Formulece un programa para obtener los siguientes valores estadísticos para un arreglo unidimensional "x" compuesto de n elementos.
Desviación media
Raíz del valor cuadrático medio
Medio armónico
Intervalo=Maximo(x1,x2,......xn)-Minimo(x1,x2,.....xn)
Medio Geometrico

Seudocódigo

1.- Inicio funcion promedio
T promedio(int n, T x[30])
{
T suma=0
i,p   int
for(i=0;i<n;i=i+1)
{
suma=suma+x[i]
}
p=suma/n
return p
}
Fin funcion promedio
1.-Inicio funcion introvalores
void introvalores(int n, T x[30])
{
i int
for(i=0;i<n;i=i+1)
{
print "Dato ",(i+1),"="
read x[i]
}
}
Fin funcion introvalores
1.- Inicio funcion desviacion
T desviacion(int n, T x[30])
{
T prom=promedio(n,x)
T suma=0
i   int
des   real
for(i=0;i<n;i=i+1)
{
suma=suma+abs(x[i]-prom)
}
des=suma/n
return des
}
Final funcion desviacion
1.- Inicio funcion cuadraticomedio

T cuadraticomedio(int n, T x[30])
{
T suma=0
i  int;
cm  real;
for(i=0;i<n;i=i+1)
{
suma=suma+pow(x[i],2)
}
suma=suma/n
cm=sqrt(suma)
return cm
}
Final cuadraticomedio
1.-Inicio funcion medioarmonico
T medioarmonico(int n, T x[30])
{
T suma=0
i   int
ma   real
for(i=0;i<n;i=i+1)
{
suma=suma+1.0/x[i]
}
ma=n/suma
return ma
}
Fin funcion medioarmonico
1.-Inicio funcion maximo
T maximo(int n, T x[30])
{
T max=x[0]
i   int
for(i=0;i<n;i=i+1)
{
if (x[i]>max)
{
max=x[i]
}
}
return max
}
Final funcion maximo
1.-Inicio funcion minimo
T minimo(int n, T x[30])
{
T min=x[0]
i   int
for(i=0;i<n;i=i+1)
{
if (x[i]<min)
{
min=x[i]
}
}
return min
}
Final funcion minimo
1.-Inicio funcion intervalo
T intervalo (int n, T x[30])
{
inter   int
inter=maximo(n,x)-minimo(n,x)
return inter
}
Fin funcion intervalo
1.-Inicio funcion mediogeometrico
T mediogeometrico(int n, T x[30])
{
T prod=1
i   int
gm   real
for (i=0;i<n;i=i+1)
{
prod=prod*x[i]
}
gm=pow(prod,1.0/n)
return gm
}
final funcion mediogeometrico
1.- Inicio
n1  int
x1[30]    real
do
{
print "Cantidad de datos (<=30): "
read n1
}
while (n1<=0 and n1>30)
introvalores(n1,x1)
print "La desviacion es =",desviacion(n1,x1)
print "Cuadratico medio es  =",cuadraticomedio(n1,x1)
print "Intervalo es  =",intervalo(n1,x1)
print "Medio armonico es =",medioarmonico(n1,x1)
print "Medio geometrico es =",mediogeometrico(n1,x1)
print "max=",maximo(n1,x1)
print "min=",minimo(n1,x1)
Fin



Lenguaje C++





Práctica 9

Problema 1
Escriba un programa que encuentre y despliegue el valor máximo y el valor mínimo de un arreglo bidimensional de números enteros también despliegue el índice del renglón y columna que corresponden al valor máximo y mínimo.

Lenguaje C++

Solucion
1.Inicio introdatos.
void introdatos(int v[5][4])
{
r,c int
for(r=0 to r<5 step r++)
{
for(c=0 to c<4 step c++)
{
Print  "Dato"(r+1)","(c+1)":"
Read v[r][c]
}
}
}
fin.
1.Inicio sumarenglon
void sumarenglon(int v[5][4])
{
suma,r,c int
Print "Suma de renglones"
for(r=0 to r<5 step r++)
{
suma=0
for(c=0 to c<4 step c++)
{
suma=suma+v[r][c]
}
Print "Renglon"": ",suma
}
}
fin.
1.Inicio sumacolumna
void sumacolumna(int v[5][4])
{
suma,r,c int
print "Suma de columnas"
for(c=0 to c<4 step c++)
{
suma=0
for(r=0 to r<5 step r++)
{
suma=suma+v[r][c]
}
Print "La suma de la columna”(c+1)"es: ",suma
}
}
fin
1.Inicio imprimetabla
void imprimetabla(int v[5][4])
{
r,c int
for(r=0 to r<5 step r++)
{
for(c=0 to c<4 step c++)
{
Print “ “,v[r][c]"\t"
}
}
}
Fin.
1.Inicio maximo.
void maximo(int v[5][4],int &max,int &posr,int &posc)
{
r,c int
max=v[0][0]
posr=0
posc=0
for(r=0 to r<5 step r++)
{
for(c=0 to c<4 step c++)
{
if(v[r][c]>max)
{
max=v[r][c]
posr=r
posc=c
}
}
}
}
Fin
1.Inicio minimo
void minimo(int v[5][4],int &min,int &posr,int &posc)
{
r,c int
min=v[0][0]
posr=0
posc=0
for(r=0 to r<5 step r++)
{
for(c=0 to c<4 step c++)
{
if(v[r][c]<min)
{
min=v[r][c]
posr=r
posc=c
}
}
}
}
Fin.
1.Inicio main
{
valores[5][4] int
max,min,posr,posc,posr1,posc1 int
introdatos(valores)
sumarenglon(valores)
sumacolumna(valores)
imprimetabla(valores)
maximo(valores,max,posr,posc)
minimo(valores,min,posr1,posc1)
print "El valor maximo es=",max" con posicion(",posr",",posc")"
print "El valor minimo es=",min" con posicion(",posr1",",posc1")"
getch()
}
Fin


Problema 2
Escriba un programa que sume los elementos equiparables de los arreglos bidimensionales denominado primero y segundo. Ambos arreglos deben de tener 2 renglones y 3 columnas. Por ejemplo los elementos [1][2] del arreglo que resulte deben ser la suma de primero [1][2] y segundo [1][2]. Los arreglos primero y segundo son introducidos por el usuario.
Ejemplo

Primero                     Segundo                         Tercero
16   18   23               24   52   77                    40   70   100
54   91   11               16   19   59                    70   110  70


Lenguaje C++


Solucion
1.INICIO PRIMERA
void primera(int primera[2][3])
{
r,c int
for(r=0 to r<2 step r++)
{
for(c=0 to c<3 step c++)
{
Print  "Dato"(r+1)","(c+1)":"
Read primera[r][c]
}
}
}
FIN.
1.INICIO SEGUNDA
void segunda(int segunda[2][3])
{
r,c int
for(r=0 to r<2 step r++)
{
for(c=0 to c<3 step c++)
{
Print "Dato"(r+1)","(c+1)":"
Read segunda[r][c]
}
}
}
FIN
1.INICIO SUMA
void suma(int primera[2][3],int segunda[2][3],int tercera[2][3])
{
for(int r=0 to r<2 step r++)
{
for(int c=0 to c<3 step c++)
{
tercera[r][c]=primera[r][c]+segunda[r][c]
}
}
}
FIN.
1.INICIO MULTIPLICACION.
void multiplicacion(int primera[2][3],int segunda[2][3],int tercera[2][3])
{
for(int r=0 to r<2 step r++)
{
for(int c=0 to c<3 step c++)
{
tercera[r][c]=primera[r][c]*segunda[r][c]
}
}
}
FIN.
1.INICIO IMPRIMIR
void imprimir(int v[2][3])
{
r,c int
for(r=0 to r<2 step r++)
{
for(c=0 to c<3 step c++)
{
Print “ “v[r][c]
}
}
}
FIN.
1.INICIO MAIN.
void main()
{
 val[2][3] int
 val1[2][3] int
val2[2][3] int
val3[2][3] int
print "Tabla 1"
primera(val)
print "Tabla 2"
segunda(val1)
suma(val,val1,val2)
multiplicacion(val,val1,val3)
print "Tabla 1"
imprimir(val)
print "Tabla 2"
imprimir(val1)
print "Suma"
imprimir(val2)
print "Multiplicacion"
imprimir(val3)
getch()
}



Problema 3

Dada la matriz "a" de la forma

a11     a12.....a1m 
a21     a22.....a2m



an1     an2.....anm

La transpuesta de A´ de A está dada por 

a11     a21.....an1
a12     a22.....an2



a1m    a2m.....anm

Esto quiere decir que se obtiene cambiando renglones por columnas y viceversa, formulece un programa para obtener la matriz y la transpuesta.

Lenguaje C++



SOLUCION.
1.INICIO INTRODUCIRDATOS
void introducirdatos(int m[4][4])
{
randomize()
for(int r=0 to r<4 step r++)
{
for(int c=0 to c<4 step c++)
{
m[r][c]=random(1000)+1
}
}
}
FIN.
1.INICIO IMPRIMEMATRIZ
void imprimematriz(int m[4][4])
{
for(int r=0 to r<4 step r++)
{
for(int c=0 to c<4 step c++)
{
Print “ “,m[r][c]
}
}
}
FIN
1.INICIO TRANSPUESTA
void transpuesta(int m[4][4],int m1[4][4])
{
for(int r=0 to r<4 step r++)
{
for(int c=0 to c<4 step c++)
{
m1[c][r]=m[r][c]
}
}
}
FIN
1.INICIO MAIN
void main()
{
int a[4][4]
int a1[4][4]
introducirdatos(a)
transpuesta(a,a1)
Print "Matriz original"
imprimematriz(a)
"Matriz transpuesta"
imprimematriz(a1)
getch()
}
FIN.
Problema 4
Dada una matriz g cuyos elementos g[i][j] contienen jisima calificación del i-esimo estudiante y un factor de ponderación w, cuyo elemento w[j] denota la ponderación correspondiente al j-esimo problema de un exámen, formulece un programa que establezca niveles entre estudiantes. Los niveles deben registrarse en un rector llamado r de tal forma que r[i] indica laposición de i-esimo estudiante de la clase. El programa debe leer los datos de entrada para n estudiantes y n problemas. Por ejemplo las siguientes matrices contienen la calificación, los problemas y la información del nivel de un curso compuesto de 5 estudiantes y de un exámen compuesto de 3 problemas.

              w   
3
2
1
                     g            r

0
65
80
85
4
1
80
60
90
3
2
75
50
50
5
3
100
50
75
2
4
100
80
70
1

                                           

En éste ejemplo el promedio del primer estudiante es ((3*65)+(2*80)+(1*85))/6=73.33


Lenguaje C++




SOLUCION.
1.inicio función introw
void Intro_W(int W[3])
{
for (int I=0 to I<3 step I=I+1)
{
print "W: ",(I+1)
read W[I]
}}
Fin.
1.inicio funcion intro_Calif
void Intro_Calf(int M[5][3])
{
R,C int
for(R=0;R<5;R=R+1)
{
for(C=0;C<3;C=C+1)
{
print " Calificacion ",(R+1)",",(C+1)," : "
cin>>M[R][C]
}}}
Fin.
1.inicio funcion suma_W.
int Suma_W(int W[3])
{
Suma=0 int
I int
for(I=0;I<3;I=I+1)
{
Suma=Suma+W[I]
}
return Suma
}
Fin.
1.inicio funcion promedio.
void Promedio(int M[5][3],int W[3],float C1[5])
{
N,R,C int
N=Suma_W(W)
for(R=0;R<5;R=R+1)
{
Suma=0 int
for(C=0;C<3;C=C+1)
{
Suma=(Suma+M[R][C])*W[C]
}
C1[R]=(Suma/1.0)*N

}}
Fin.
1.inicio funcion rango.
void Rango(float C1[5],int R1[5])
{
E,Mayor,NumE,R int
for(E=0;E<5;E=E+1)
{
 Mayor=0
for(R=0;R<5;R=R+1)
{
if(C1[R]>Mayor)
{
NumE=R
Mayor=C1[R]
}
}

R1[NumE]=(E+1)
C1[NumE]=0

}}
Fin.
1.inicio funcion imprime_R
void Imprime_R(int R[5])
{
I int
for(I=0;I<5;I=I+1)
{
print "Estudiante No. : ",(I+1)
print "Su posicion en la clase es : ",R[I]
}}
Fin.
1.Inicio main
W[3] int
M[5][3] int

Intro_W(W)
Intro_Calf(M)
float C[5]
int R[5]
Suma_W(W)
Promedio(M,W,C)
Rango(C,R)
Imprime_R(R)
Fin.



Problema 5

Análisis de producción

Estación      total producción
    1                      xxxxxxx
    2                      xxxxxxx
    .                       xxxxxxx
    .                       xxxxxxx
    .                       xxxxxxx
  15    
total

Estacion mas productiva:
Encargado de la estacion:
Cantidad producida:

Lenguaje C++



SOLUCION.
1.INICIO CALCULOPRODANUAL.
void calculoprodanual(int produccion[15][12],int prodtotal[15])
{
for(int i=0 to i<15 step i++)
{
int suma=0
for(int j=0 to j<15 step j++)
{
suma=suma+produccion[i][j]
}
prodtotal[i]=suma
}
}
FIN.
1.INICIO INTRODATOS.
void introdatos(char nombre[15][20],int produccion[15][12])
{
randomize()
for(int i=0 to i<15 step i++)
{
Print "Nombre del encargado estacion" (i+1) ":"
cin>>nombre[i]
for(int j=0 to j<12 step j++)
{
produccion[i][j]=random(50000)+1
}
}
}
FIN.
1.INICIO MAYORPRODUCTIVIDAD.
void mayorproductividad(int prod_total[15],int &mayor,int &pos)
{
mayor=prod_total[0]
pos=0
for (int i=1 to i<15 step i++)
{
if(prod_total[i]>mayor)
{
mayor=prod_total[i]
pos=i
}
}
}
FIN.
1.INICIO MAIN.
void main()
{
int prod[15][12]
int ptotal[15]
char nom[15][20]
may,p1int
introdatos(nom,prod)
calculoprodanual(prod,ptotal)
mayorproductividad(ptotal,may,p1)
print "La estacion mas productiva es:"(p1+1)
print "Encargado de la estacion:",nom[p1]
Print "Cantidad producida:",ptotal[p1]
 getch()
}
FIN.


Problema 6
Elaborar un programa que genere una matriz de 10x10 en la cual asigne ceros a todos los elementos excepto a los de la diagonal principal donde asignara algunos; imprima dicha matriz.

Lenguaje C++


SOLUCION.
1.INICIO ASIGNARVALORES
void asignarvalores(int m[10][10])
{
r,c int
for (r=0 to r<10 step r++)
{
for (c=0 to c<10 step c++)
{
if(r==c)
{
m[r][c]=1
}
else{
m[r][c]=;
}
}
}
}
FIN.
1.INICIO IMPRIMEMATRIZ
void imprimematriz(int m[10][10])
{
I int
for (i=0 to i<10 step i++)
{
for (int j=0 to j<10 step j++)
{
Print “ “,[i][j]
}
}
}
FIN.
1.INICIO MAIN
void main ()
{
matriz[10][10] int
asignarvalores(matriz)
imprimematriz(matriz)
getch ()
}

Problema 7 
Elaborar un programa que lea el nombre de 10 trabajadores y su producción mensual por cada uno de los 12 meses del año en 2 arreglos uno para nombres y otro para producciones, en los cuales los n corresponden al trabajador n. Se requiere que imprima el siguiente reporte:


Análisis de producción

Nombre                       total de producción
----------------------------------------------------------
___________                  _______________________
___________                  _______________________
___________                  _______________________
___________                  _______________________

Promedio de producción     _______________

Lista de trabajadores que tengan la producción mayor al promedio.

Lenguaje C++


SOLUCION.
1.INICIO INTRODATOS.
void introdatos(int produccion[10][13])
{
randomize ()
i,j,suma int
for (i=0 to i<10 step i++)
{
suma=0
for (j=0 to j<12 step j++)
{
produccion[i][j]=random(5000)+1
suma=suma+produccion[i][j]
}
produccion[i][12]=suma
}
}
FIN.
1.INICIO LEERNOMBRES
void leernombres(char name[10][25])
{
I int
for (i=0 to i<10 step i++)
{
Print "nombre trabajador"(i+1)":"
cin.getline(name[i],25)
}
}
FIN.
1.INICIO REPORTE.
void reporte(int produccion[10][13], char name[10][25])
{
suma,i,prom int
Print "analisis de produccion"
Print    "nombre        total produccion"
suma=0
for (i=0 to i<10 step i++)
{
Print “ “name[i]"        ",produccion[i][12]
suma=suma+produccion[i][12]
}
{
prom=suma/10
print "promedio de produccion ",prom
print "listado de trabajadores mayores a ",prom
i int
for (i=0 to i<10 step i++)
{
if (produccion[i][12]>prom)
{
Print “ “,name[i]
}
}
}
}
FIN.
1.INICIO MAIN.
void main ()
{
int p[10][13]
char nom[10][25]
leernombres(nom)
introdatos(P)
reporte(p,nom)
getch()
}
FIN.


Problema 8
Lenguaje C++




SOLUCION.
1.INICIO
void main()
{
ofstream salida
salida.open("c://datos//prueba.txt")
salida<<" 10 32 45 66 "<<endl
salida<<" 42 90 35 46 "<<endl
salida<<" 28 76 31 92 "<<endl
salida.close()
Print " Datos Almacenados "<<endl
getch()
}



Problema 9


Solución
1.INICIO SUMAREN
void sumaren(int dato[3][4])
{
suma,i,j int
print "Suma de renglones: "
for(i=0 to i<3 step i++)
{
suma=0
for(j=0 to j<4 step j++)
{

suma=suma+dato[i][j]
}
Print "La suma del renglon: "(i+1)" es: ",suma
}
}
FIN.
1.INICIO SUMACOL
void sumacol(int dato[3][4])
{
suma,i,j int
print "Suma de columnas: "
for(j=0 to j<4 step j++)
{
suma=0
for(i=0 to i<3 step i++)
{
suma=suma+dato[i][j]
}
Print "La suma de las Columnas: “(j+1)" es: ",suma
}
}
FIN.
1.INICIO IMPRIMIR
void imprimir(int dato[3][4])
{
int i,j
ifstream entrada
entrada.open("c://datos//prueba.txt")
for(i=0 to i<3 step i++)
{
for(j=0 to j<4 step j++)
{
entrada>>dato[i][j]
print ,dato[i][j]"    ";
}
}
entrada.close()
getch()
}
FIN.
1.INICIO MAIN
void main ()
{
int dato[3][4]
imprimir(dato)
sumaren(dato)
sumacol(dato)
getch()
}


Problema 10
Escriba un programa para calcular y desplegar el promedio de cada grupo de números en el archivo creado en el.
a) Los datos se han arreglado en el archivo para que cada grupo de números sea precedido por el número de elementos de datos en el grupo. Entonces el primer número en el archivo, indica que los siguientes 5 números se deben de agrupar juntos. El número 4 indica que los siguientes 4 números forman un grupo y el 6 indica que los últimos 6 números indican un grupo.
Lenguaje C++

SOLUCION.
1.INICIO
main()
{
ofstream f1
f1.open("c://datos//Grupos.txt")
f1<<5<<endl
f1<<96<<endl
f1<<87<<endl
f1<<78<<endl
f1<<93<<endl
f1<<21<<endl
f1<<9<<endl
f1<<92<<endl
f1<<31<<endl
f1<<57<<endl
f1<<6<<endl
f1<<72<<endl
f1<<69<<endl
f1<<82<<endl
f1<<75<<endl
f1<<81<<endl
f1<<73<<endl
f1.close()
PRINT "Grupos almacenados"
getch()
}






Lenguaje C++




SOLUCION.
1.INICIO
main()
{
ifstream f2
f2.open("c://datos//Grupos.txt")
int n,suma=0,numero,j
f2>>n
for (j=1 to j<=n step j++)
{
f2 >>numero
suma=suma+numero
}
int prom=suma/n
print "El promedio del grupo"(j)":",prom
f2.close()
getch()
}


Problema 11
a)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  116.6
122.4    95.1    118.2  120.0
123.5    130.2  123.9  124.4

b)Con base a los datos del archivo voltios, escriba un programa que lea cada registro en el archivoque calcule y despliegue el promedio de cada registro. 
Lenguaje C++


SOLUCION.
1.INICIO
main()
{
ofstream archivo
archivo.open("c://datos//voltios.txt")
archivo<<"120.3 122.7 90.3 99.8"<<endl
archivo<<"95.3 120.5 127.3 120.8"<<endl
archivo<<"123.2 118.4 123.8 116.6"<<endl
archivo<<"122.4 95.1 116.7 120.0"<<endl
archivo<<"123.5 130.2 123.9 129.4"<<endl
archivo.close()
PRINT "Archivo almacenado"
getch()
}
FIN


Lenguaje C++


SOLUCION.
1.INICIO
main()
{
ifstream archivo
num,suma,prom real
archivo.open("c://datos//voltios.txt")
for(int i=1 to i<=5 step i++)
{
suma=0.0
for(int j=1 to j<=4 step j++)
{
archivo>>num
suma=suma+num
}
prom=suma/4
Print "El promedio del registro",i":",prom
}
archivo.close()
getch()
}
FIN


Práctica 10

Problema 1
Seudocódigo
1.-Inicio
ofstream archivo
archivo.open("c:\\datos\\ejemplo.txt")
if(archivo.bad())
{
print "No puede crear el archivo ejemplo.txt"
}
else{
archivo,1," ",50," Reprobado"
archivo,2," ",0," Ausente"
archivo,3," ",80," Aprobado"
archivo,4," ",100," Aprobado"
archivo.close()
}
print "Datos grabados exitosamente"
Fin

Lenguaje C++


Problema 2
Seudocódigo
1.- Inicio
ifstream arch1
i,calif  int
char cadena[10]

arch1.open("c:\\datos\\ejemplo.txt")

if(arch1.bad())

{

print "Incapaz de crear o abrir el archivo"

}

else

{

arch1>>i

while(!arch1.eof())

{

print i," "

arch1calif

print calif

arch1cadena

print cadena

arch1i

}

arch1.close()

}
Fin
Lenguaje C++

Problema 3
Seudocódigo
1.-Inicio
fstream f1
cadena[10],sigue,nombre[10] char
c1,c2,c3,c4  int
promedio  int
opcion  int
f1.open("c:\\datos\\ejemplo2.txt",ios::app|ios::out)
do{
print "1) Almacenar datos del alumno:"
print "2) Reporte de alumnos:"
print "3) Salida de programa:"
print "Elige opcion:"
read opcion
switch(opcion)
{
case 1:
do{
print "Nombre alumno:"
read nombre
print "Calificacion 1:"
read c1
print "Calificacion 2:"
read c2
print "Calificacion 3:"
read c3
print "Calificacion 4:"
read c4
promedio=(c1+c2+c3+c4)/4
f1,nombre," ",c1," ",c2," ",c3," ",c4," ",promedio," "
if(promedio>=70)
{
f1,"Aprobado"
}
else{
f1,"Reprobado"
}
print "Desea registrar a otro(s/n)"
read sigue
}
while(sigue=='s' || sigue=='S')
f1.close()
break
case 2:f1.open("c:\\datos\\ejemplo2.txt",ios::out)
print "Nombre calif1 calif2 calif3 calif4 promedio status"
if(f1.bad())
{
print "Incapaz de crear o abrir el archivo"
}
else{
f1 nombre
while(!f1.eof())
{
print nombre," "
f1 c1
print c1," "
f1 c2
print c2," "
f1 c3
print c3," "
f1 c4
print c4," "
f1 promedio
print promedio," "
f1 cadena
print cadena,"\t"
f1 nombre
}
}
f1.close()
break
case 3:
print "Salida Programa"
break
default:
print "Error en Opcion"
break
}
}
while(opcion !=3)

Fin

Problema 4
Un archivo llamado polar.txt contiene las coordenadas pobres nesesarias en un programa de graficas.Actualmente este archivo contiene los siguientes datos.

                  Distancia (Pulgadas)          Angulo (Grados)      
             2.0                              45.0
             6.0                              30.0
            10.4                             45.0
             4.0                              60.0
            12.0                             55.0
             8.0                              15.0

a) Escriba u programa para crear este archivo.
b) Con base al archivo polar.txt escriba un programa que acepte del usuario los datos de distancia y angulo y los agregue al final del archivo.
c) Con el archivo polar. txt escriba u programa que lea este archivo y cree otro llamado xycord.txt las entradas al nuevo archivo deben contener las coordenadas rectangulares que corresponden a  las coordenadas polares.
x=ycoseno
y=rseno

donde r es la coordenada de distancia y  es el equivalente en radianes a la coordenada del angulo en el archivo polar.txt.

Seudocódigo
1.-Inicio funcion creararchivo
void creararchivo ()
{
fstream escribir
escribir.open("c//Datos//polar.txt",ios::out)
escribir 2.0,"   ",45.0
        ,6.0,"   ",30.0
        ,10.0,"   ",45.0
        ,4.0,"   ",60.0
        ,12.0,"   ",55.0
        ,8.0,"   ",15.0
escribir.close()
}
Fin creararchivo
1.-Inicio agregard
void agregard()
{
dist,angulo real
continuar char
fstream escribir
escribir.open("c://Datos//polar.txt",ios::app)
do
{
print "Distancia (Pulgadas):"
read dist
print "Angulo (Grados):"
read angulo
escribir,dist,"     ",angulo
print "Deseas registrar otro (S/N):"
read continuar
}
while (continuar=='S'||continuar=='s')
escribir.close()
}
Fin agregard
1.-Inicio crearxycord
void crearxycord()
{
d,a,x,y,rad  real
fstream f1
fstream f2
f1.open ("c://Datos//polar.txt",ios::in)
f2.open ("c://Datos//xycord.txt",ios::out)
f1>>d
while (!f1.eof())
{
f1 a
rad=(a*3.1416)/180
x=d*cos(rad)
y=d*sin(rad)
f2 x,"  ",y
f1 d
}
f1.close()
f2.close()
}
Fin crearxycord
1.-Inicio
crearchivo()
agregard ()
crearxycord ()
Fin
Lenguaje C++
 

Problema 5
Escriba los cuatro numeros reales
                                                         92.65
                                                         88.72
                                                         77.46
                                                         82.93
en un archivo texto llamado resultados.Despues de escribir los datos en el archivo el programa debe leerlos determinar y desplegar el promedio de los cuatro numeros leidos.

Seudocódigo
1.-Inicio
num real
fstream archivo
archivo.open("c://Datos//resultados.txt",ios::out,ios::in)
archivo 92.65,"   ",88.72,"   ",77.46,"  ",82.93
archivo.close()
archivo.open("c://Datos//resultados.txt",ios::in)
float suma=0
for (int i=1;i<=4;i=i+1)
{
archivo num
print num,"   "
suma=suma+num
}
print endl
promedio=suma/4.0  real
print "El promedio es:",promedio
Fin

Lenguaje C++

Problema 6
Suponga que desea introducir una lista de cadenas en un arreglo de tamaño 10.
Haga un programa que considere un metodo para ordenar alfabeticamente estas cadenas  y escribir la lista de las cadenas en forma ordenada, en orden ascendente. 
Seudocódigo
1.-Inicio funcion ordenar
void ordenar(int n,char x[10][12])
{
temp[12] char
i,elem int
for(elem=0;elem<(n-1);elem=elem+1)
{
for(i=elem+1;i<(n-1);i=i+1)
{
if(strcmpi(x[elem],x[i])<0)
{
strcpy(temp,x[elem])
strcpy(x[elem],x[i])
strcpy(x[i],temp)
} } } }
Fin ordenar
1.- Iniio
i,n=0 int
x[10][12] char
print "Escribe Fin para terminar "
do
{
print "Cadena ",(n+1)," : "
read x[n]
}
while(strcmpi(x[n++],"fin"))
ordenar(--n,x)
print "Lista Ordenar cadena "
for(i=0;i<n;i=i+1)
{
print x[i]
}
Fin

Lenguaje C++