Você está na página 1de 17

2.1 Escriba el seudocdigo para implementar el diagrama que se ilustra en la figura P2.1.

Asegrese de incluir la denticin apropiada para que la estructura sea clara.

CDIGO EN C++

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

void main()
{
float x;
cout<<"Ingrese un valor\t";
cin>>x;
if(x>=10)
{
do
{
x=x-5;
}
while(x>50);
}
else
{
if(x<5)
x=7.5;
else
x=5;
}

cout<<"Valor =\t"<<x;
getch();
}

2.2 Vuelva a escribir el seudocdigo siguiente, con el uso de la denticin apropiada.

CODIGO EN C++

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

void main()
{
float z,x,y;
int i=0;
x=0;
cout<<"Ingrese un valor\t";
cin>>z;
do
{
i=i+1;
x=x +5;
if(x>5)
{
y=4
}
else
{
y=0
}
z=x+y

}while(z>50)

cout<<"Valor =\t"<<x;
getch();
}

2.3 En cada una de las tarjetas de un conjunto de cartas ndice, se registra un valor para la
concentracin de un contaminante en un lago. Al final del conjunto, se coloca una carta
marcada como fin de datos. Escriba un algoritmo para determinar la suma, el promedio y el
mximo de dichos valores.

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

//
void main()
{
int n;
int c[50];
float suma,promedio,maximo;
suma=0;
cout<<"CONTAMINANTE EN UN LAGO\n";
cout<<"Ingrese el numero de cartas\t";
cin>>n;

for(int i=1;i<=n;i++)
{
cout<<"Valor contaminante de la carta "<<i<<"\t";
cin>>c[i];
suma=suma+c[i];
}
cout<<"\nfin de los datos\n";

cout<<"SUMA DE LOS DATOS = \t"<<suma<<"\n";


promedio=suma/n;
cout<<"PROMEDIO DE LOS DATOS = \t"<<promedio<<"\n";

maximo=c[1];
for(int i=1;i<=n;i++)
{
if(maximo<c[i])
{
maximo=c[i];
}
}
cout<<"MAXIMO DE LOS DATOS = \t"<<maximo<<"\n";

getch();
}

2.4 Escriba un diagrama de flujo estructurado para el problema 2.3.

2.5 Desarrolle, depure y documente un programa para determinar las races de una ecuacin
cuadrtica, , en cualquier lenguaje de alto nivel, o de macros, de su eleccin. Utilice un
procedimiento de subrutina para calcular las races (sean reales o complejas). Ejecute
corridas de prueba para los casos en que a) a=1, b =6, c=2, b) a=0, b=-4, c=1.6, c) a=3, b=2.5,
c=7.

CODIGO EN C++

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

void valor1(int a, int b, int c)


{
float r1;
r1=(b*(-1)+sqrt(b*b)-4*a*c)/2*a;
cout<<"1.\t"<<r1<<"\n";
}

void valor2(int a, int b, int c)


{
float r2;
r2=(b*(-1)-sqrt(b*b)-4*a*c)/2*a;
cout<<"2.\t"<<r2<<"\n";
}

void main()
{
float a,b,c,d;
float r1,r2;
cout<<"Ingrese el valor para a\t";
cin>>a;
cout<<"Ingrese el valor para b\t";
cin>>b;
cout<<"Ingrese el valor para c\t";
cin>>c;
d=pow(b,2)-4*a*c;
if(a==0)
{
cout<<"\nNo se pueden obtener las raices\n";
}
else
{
if(d<0)
{
cout<<"\nLas raices son imaginaria\n";
}
else
{
valor1(a,b,c);
valor2(a,b,c);
}
}
getch();
}

2.6 La funcin coseno puede evaluarse por medio de la serie finita siguiente:

Escriba un algoritmo para implementar esta frmula de modo que calcule e imprima los
valores de cos x conforme se agregue cada trmino de la serie. En otras palabras, calcule e
imprima la secuencia de valores para:

Hasta el trmino de orden a que usted elija. Para cada uno de los valores anteriores, calcule y
haga que se muestre el error porcentual relativo.

CODIGO EN C++

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

Factorial(int n)
{
int temp=n-1;
int r=n;
while (temp>=1)
{
r=r*temp;
temp--;
}
return r;
}

void main()
{
float n;
int t;
cout<<"Ingrese el valor a calcular\t";
cin>>n;
int a=-1;
int b=2;
cout<<"Ingrese hasta el termino a calcular\t";
cin>>t;
float v=1;
float q=0;
for(int i=1;i<=t;i++)
{
cout<<"\nvalor\t"<<i<<"\t"<<v;
v=v+(((pow(n,b))/Factorial(b))*(-1));
b=b+2;
}

cout<<"\n\nCoseno de \t "<<n<<" es\t"<<v;


cout<<"\n valor verdadero\t"<<cos(n);

float val=0;
val=((cos(n)-v)/(cos(n)))*1;
cout<<"\n\nERROR\t"<<val;
getch();
}

2.7 Escriba el algoritmo para el problema 2.6 en forma de a) diagrama de flujo estructurado,
y b) seudocdigo.

2.8) Desarrolle depure y documente un programa para el problema 2.6 en cualquier lenguaje
de alto nivel o de macros, de su eleccin. Emplee la funcin coseno de la biblioteca de su
computadora para determinar el valor verdadero. Haga que el programa imprima en cada
paso la serie de aproximacin y el error. Como caso de prueba, utilice el programa para
calcular valores desde cos(1.25) hasta incluir el termino xn/10!. Interprete los resultados.

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

Factorial(int n)
{
int temp=n-1;
int r=n;
while (temp>=1)
{
r=r*temp;
temp--;
}
return r;
}

void main()
{
float n;
int t;
cout<<"Ingrese el valor a calcular\t";
cin>>n;
int a=-1;
int b=2;
cout<<"Ingrese hasta el termino a calcular\t";
cin>>t;
float v=1;
float q=0;
for(int i=1;i<=t;i++)
{
cout<<"\nvalor\t"<<i<<"\t"<<v;
v=v+(((pow(n,b))/Factorial(b))*(-1));
b=b+2;
}

cout<<"\n\nCoseno de \t "<<n<<" es\t"<<v;


cout<<"\n valor verdadero\t"<<cos(n);

float val=0;
val=((cos(n)-v)/(cos(n)))*1;
cout<<"\n\nERROR\t"<<val;
getch();
}

2.9 El algoritmo siguiente est diseado para determinar la calificacin de un curso que
consiste en cuestionarios, tareas y un examen final.

Paso 1: Introducir la clave y nombre del curso.

Paso 2: Introducir factores de ponderacin para los cuestionarios (C), tareas (T) y examen
final (E).

Paso 3: Introducir la calificacin de las preguntas y determinar su promedio (PC).

Paso 4: Introducir las calificaciones de las tareas y determinar su promedio (PT).

Paso 5: Si el curso tiene una calificacin final, continuar con el paso 6. Si no, ir al paso 9.

Paso 6: Introducir la calificacin del examen final, (F).

Paso 7: Determinar la calificacin promedio, CP, de acuerdo con

Paso 8: Ir al paso 10.

Paso 9: Determinar la calificacin promedio, CP, de acuerdo con

Paso 10: Imprimir la clave y nombre de curso, y la calificacin promedio

Paso 11: Finalizar el calculo

a) Escribir un seudocdigo bien estructurado para implementar este algoritmo.


b) Escriba, depure y documente un programa bien estructurado de computadora
basado en este algoritmo. Prubelo con los datos siguientes para calcular una
calificacin sin el examen final y otra con ste, C=35, T=30, E=35; cuestionario=95,
85, 90, 65 y 99, tareas=95, 90, 87, 100, 92 y 77; y examen final=92.

CODIGO EN C++

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

void main()
{
int pr[20];
int tr[20];
char cl;
char nom;
int preg,tar;
float C,T,E;
cout<<"Ingrese la clave del curso\t";
cin>>cl;
cout<<"Ingrese el nombre del curso\t";
cin>>nom;
cout<<"Valor de ponderacion para los cuestionarios\t";
cin>>C;
cout<<"Valor de ponderacion para las tareas\t";
cin>>T;
cout<<"Valor de ponderacion para el examen final\t";
cin>>E;
cout<<"Ingrese el numero de preguntas\t";
cin>>preg;
float suma;
float vp,vt;
float PC,PT;
suma=0;
for(int i=1;i<=preg;i++)
{
cout<<"Ingrese el valor de la pregunta "<<i<<"\t";
cin>>vp;
pr[i]=vp;
suma=suma+ pr[i];
}
PC=suma/preg;
cout<<"Ingrese el numero de tareas\t";
cin>>tar;
suma=0;
int op;
for(int i=1;i<=tar;i++)
{
cout<<"Ingrese el valor de la tarea "<<i<<"\t";
cin>>vt;
tr[i]=vt;
suma=suma+ tr[i];
}
PT=suma/tar;
cout<<"EL curso tiene una calificacion final\n";
cout<<"1. si\n";
cout<<"2. no\n";
cout<<"Escoja una opcion\t";
cin>>op;
float cf,CP,F;
switch(op)
{
case 1:
cout<<"Ingrese la calificacion final\t";
cin>>F;
CP=((C*PC+T*PT+E*F)/(C+T+E))*1;
break;
case 2:
CP=((C*PC+T*PT)/(C+T))*1;
break;
}

cout<<"CLAVE DEL CURSO\t"<<cl;


cout<<"NOMBRE DEL CURSO\t"<<nom;
cout<<"CALIFICACION PROMEDIO\t"<<CP;

getch();
}

2.10 El mtodo antiguo de dividir y promediar, para obtener el valor aproximado de la raz
cuadrada de cualquier numero positivo a se puede formular como

a) Escriba un seudocdigo bien estructurado para implementar este algoritmo como se


ilustra en la figura P2.10. Utilice la identacin apropiada para que la estructura sea
clara.

b) Desarrolle, depure y documente un programa para implementar esta ecuacin en


cualquier lenguaje de alto nivel o de macros, de su eleccin. Estructure su cdigo de
acuerdo con la figura P2.10.

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

void main()
{
float a,d;
cout<<"Ingrese un valor\t";
cin>>a;
float tol,x,y,e;
if(a>0)
{
tol=pow(10,-2);
x=a/2;

do
{
y=(x+a/x)/2;
e=fabs((y-x)/y);
x=y;
}while(e>tol);

cout<<"Raiz cuadrada es "<<x;


}
else
cout<<"Raiz cuadrada= 0";

getch();
}

2.11 Se invierte cierta cantidad de dinero en una cuenta en la que el inters se capitaliza al
final del periodo. Debe determinarse el valor futuro, F, que se obtiene con cierta tasa de
inters, i, despus de n periodos, por medio de la formula siguiente:

Escriba un programa que calcule el valor futuro de una inversin para cada ao, desde 1
hasta n. La entrada para la funcin debe incluir la inversin inicial, P, la tasa de inters, i, (en
forma decimal), y el nmero de aos, n, para el que ha de calcularse el valor futuro. La salida
debe consistir en una tabla con encabezado y columnas para n y F. Corra el programa para
P=$100000, I=0.06, y n=5 aos.

CODIGO EN C++

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

void main()
{
int n;
float P,F,i,a;
cout<<"Ingrese la cantidad de dinero\t";
cin>>P;
cout<<"Ingrese el valor del interes\t";
cin>>i;
cout<<"Ingrese el numero de anios\t";
cin>>n;

cout<<"\nPeriodo\t \t Valor\n";
for(int i=1;i<=n;i++)
{
a=pow((1+i),n);
F= P*(a);
cout<<i<<"\t\t"<<F<<"\n";
//P=F;
}

getch();
}

2.12 Las formulas econmicas estn disponibles para calcular los pagos anuales de
prstamos. Suponga que obtiene un prstamo cierta cantidad de dinero P y acuerda
devolverla en n pagos anuales con una tasa de inters de i. La frmula para calcular el pago
anual A es:

Escriba un programa para calcular A. Prubelo con P=$55000 y una tasa de inters de 66%
(i=0.066). Calcule los resultados para n=1, 2, 3, 4 y 5, y muestre los resultados en forma de
tabla con encabezados y columnas para n y A.

CODIGO EN C++

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

//PRESTAMOS

void Prestamo()
{
int P,n;
float i,a,a1;
cout<<"Ingrese el valor del prestamo\t";
cin>>P;
cout<<"Ingrese el valor del interes\t";
cin>>i;

cout<<"\n\nPeriodo\t\t Valor\n";
for(int n=1;n<=5;n++)
{
a1=pow(1+i,n);
a=P*((i*a1)/(a1-1));
cout<<n<<"\t\t";
cout<<a<<"\n";
}
getch();
}

void main()
{
Prestamo();
}
2.13 La temperatura promedio diaria para cierta rea se aproxima por medio de la funcin
siguiente.
2.14 Desarrolle, depure y pruebe un programa en cualquier lenguaje de alto nivel, o de
macros, de su eleccin, a fin de calcular la velocidad del paracadas que cae como se explic
en el ejemplo 1.2. Disee el programa de modo que permita al usuario introducir calores
para el coeficiente de arrastre y masa. Pruebe el programa con la reproduccin de los
resultados el ejemplo 1.2. Repita el clculo pero utilice tamaos de paso de 1 y 0.5. Compare
sus resultados con la solucin analtica que se obtuvo previamente en el Ejemplo 1.1. Un
tamao de paso ms pequeo. Hace que los resultados sean mejores o peores? Explique sus
resoluciones.

2.15 El mtodo de la burbuja es una tcnica de ordenamiento ineficiente pero fcil de


programar. La idea que subyace al ordenamiento consiste en avanzar hacia abajo a travs de
un arreglo, comparar los pares adyacentes e intercambiar los calores, si no estn en orden.
Para que este mtodo ordene por completo un arreglo, es necesario que lo recorra muchas
veces. Conforme se avanza para un ordenamiento en orden ascendente, los elementos ms
pequeos del arreglo parecen ascender como burbujas. Eventualmente, habr un paso por el
arreglo que ya no requiera intercambios. En ese momento, el arreglo estar ordenado.
Despus del primer paso, el valor ms grande cae directamente hasta el fondo. En
consecuencia, el segundo paso solo tiene que proceder del segundo al ltimo valor, y asi
sucesivamente. Desarrolle un programa que tome un arreglo de 20 nmeros al azar y los
ordene en forma ascendente con la tcnica de la burbuja (vase la figura P2.15).

CODIGO EN C++

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

//METODO DE LA BURBUJA

void main()
{
srand(time(NULL));
int n=20;
int v[21];
int k;
for(int i=1;i<=n;i++)
{
v[i]= rand()%20+1;
}
cout<<"\nVALORES INGRESADOS\n";
for(int i=1;i<=n;i++)
{
cout<<v[i]<<endl;
}

for(int i=1;i<=n;i++)
{
for(int j=1;j<=n-i;j++)
{
if(v[j]>v[j+1])
{
k=v[j+1];
v[j+1]=v[j];
v[j]=k;
}
}
}
cout<<"\n\nVALORES ORDENADOS\n";
for(int i=1;i<=n;i++)
{
cout<<v[i]<<endl;
}
getch();
}

2.16 En la figura P2.16 se muestra un tanque cilndrico con base cnica. Si el nivel del lquido
est muy bajo en la parte cnica, el volumen simplemente es el volumen del cono de lquido.
Si el nivel del lquido esta entre la parte cilndrica, el volumen total del lquido incluye la
parte cnica llena y la parte cilndrica parcialmente llena. Escriba un procedimiento bien
estructurado de funcin para calcular el volumen del tanque como funcin de los valores
(como If/Then, ElseIf, Else, End If). Disee la funcin de modo que produzca el volumen en
todos los casos en los que la profundidad sea menor que 3R. Genere un mensaje de error
(Sobrepasado) si se rebasa la altura del tanque, es decir, d> 3R. Prubelo con los datos
siguientes:

CODIGO EN C++

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

void main()
{
float d,v;
int R=1;
cout<<"CALCULAR EL VOLUMEN DEL TANQUE\n";
cout<<"INGRESE EL DIAMETRO DEL TANQUE\t";
cin>>d;
cout<<"INGRESE EL NIVEL DEL LIQUIDO\t";
cin>>R;
if(R<=3)
{
if(R=1)
{
v=(3.14*d*R)/3;
}
if(R=2)
{
v= ((3.14*d*R)/3)+(3.14*d*R);
}
if(R=3)
{
v= ((3.14*d*R)/3)+(3.14*d*2*R);
}
}
else
{
cout<<"Sobrepasado";
}
cout<<"El volumen es\t"<<v;

getch();
}

2.17 Se requieren dos distancias para especificar la ubicacin de un punto en relacin con el
origen en un espacio de dos dimensiones (Vase la figura P2.17).

Las distancias horizontales y vertical (x,y) en coordenadas cartesianas.

El radio y el ngulo (r,) en coordenadas radiales.

Es relativamente fcil calcular las coordenadas cartesianas (x,y) sobre la base de las
coordenadas polares (r,). El proceso inverso no es tan simple. El radio se calcula con la
frmula que sigue:

Si las coordenadas quedan dentro del primer o cuarto cuadrante (p, ej, x>0), entonces se
emplea una formula sencilla para el clculo de .

La dificultad surge en los dems casos. La tabla siguiente resume las posibilidades:

a) Escriba un diagrama de flujo bien estructurado para un procedimiento de subrutina a


fin de calcular r y como funcin de x y y. Exprese los resultados finales para , en
grados.

b) Escriba un procedimiento bien estructurado de funcin con base en el diagrama de


flujo. Pruebe el programa de modo que se llene la tabla que sigue:

2.18 Desarrolle un procedimiento bien estructurado de funcin que lea una calificacin
numrica entre 0 y 100 y devuelva una letra de acuerdo con el esquema siguiente:

Letra Criterio
A 90 <=calificacin numrica <=100
B 80 <=calificacin numrica <=90
C 70 <=calificacin numrica <=80
D 60 <=calificacin numrica <=70
F calificacin numrica <=100

CODIGO EN C++

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
// CALIFICACION NUMERICA ENTRE 0 Y 100

void main()
{
int c;
cout<<"INGRESE LA CALIFICACION\n";
cin>>c;
if(c>=0 && c<=100)
{
if(c>=90 && c<=100)
{
cout<<"A";
}
else {
if(c>=80 && c< 90)
{
cout<<"B";
}
else{
if(c>=70 && c<=80)
{
cout<<"C";
}
else{
if(c>=60 && c<70)
{
cout<<"D";
}
else{
if(c< 60)
{
cout<<"F";
}
}
}
}
}

}
else
{
cout<<"Numero fuera del rango permitido";
}
getch();
}
2.19 Desarrolle un procedimiento bien estructurado de funcin para determinar a) la
factorial de un nmero; b) el valor ms pequeo de un vector, y c) el promedio de los calores
de un vector.

CODIGO EN C++
#include <iostream.h>
#include <stdio.h>
#include <conio.h>

//FUNCION QUE CALCULA EL FACTORIAL DE UN NUMERO


void Factorial()
{
int n;
cout<<"Ingrese un numero\t";
cin>>n;
int temp=n-1;
int r=n;
while (temp>=1)
{
r=r*temp;
temp--;
}
cout<<"El factorial de "<<n<<" es: "<<r;
getch();
}

//FUNCION QUE CALCULA EL VALOR MENOR DE UN VECTOR


void ValorPequenio()
{
int v[50];
int n,val;
cout<<"Ingrese el numero de elementos del vector\t";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"Ingrese el elemento "<<i<<"\t";
cin>>val;
v[i]=val;
}
cout<<"\n\nElementos ingresados\n" ;
for(int i=1;i<=n;i++)
{
cout<<v[i]<<"\t";
}

int m=v[1];
for(int i=1;i<=n;i++)
{
if(m>v[i])
{
m=v[i];
}
}
cout<<"\n\nValor menor =\t" <<m;
getch();
}
//FUNCION QUE CALCULA EL PROMEDIO DE VALORES DE UN VECTOR
void Promedio()
{
int v[50];
int n,val,suma;
float promedio;
suma=0;
promedio=0;
cout<<"Ingrese el numero de elementos del vector\t";
cin>>n;
for(int i=1;i<=n;i++)
{
cout<<"Ingrese el elemento "<<i<<"\t";
cin>>val;
v[i]=val;
}
cout<<"\n\nElementos ingresados\n" ;
for(int i=1;i<=n;i++)
{
cout<<v[i]<<"\t";
suma=suma+v[i];
}
promedio=suma/n;
cout<<"\nEl promedio es: "<<promedio;
getch();
}

void main()
{
int op;
cout<<"1. Calcular el factorial de un numero\n";
cout<<"2. Calcular el valor mas pequeo de un vector\n";
cout<<"3. Calcular el promedio de los valores de un vector\n";
cout<<"Escoja una opcion\n";
cin>>op;
switch(op)
{
case 1:
Factorial();
break;
case 2:
ValorPequenio();
break;
case 3:
Promedio();
}
}
2.20 Desarrolle programas bien estructurados para a) determinar la raz cuadrada de la suma
de los cuadrados de los elementos de un arreglo bidimensional (p, ej., una matriz), y b)
normalizar una matriz por medio de dividir cada rengln entre el valor absoluto mximo en
el rengln de modo que el elemento mayor en cada rengln sea 1.

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

void main()
{
int m[5][5];
int c,f,val;
float suma,r;
suma=0;
r=0;
cout<<"Ingrese el numero de filas\t";
cin>>f;
cout<<"Ingrese el numero de columnas\t";
cin>>c;
for(int i=1;i<=c;i++)
{
for(int j=1;j<=f;j++)
{
cout<<"Ingrese un valor para la posicion "<<i<<","<<j<<"\t";
cin>>val;
m[i][j]=val;
suma=suma + pow(val,2);
}
}
cout<<"valores ingresados\n";
for(int i=1;i<=c;i++)
{
for(int j=1;j<=f;j++)
{
cout<<m[i][j]<<"\t";
suma=suma + pow(val,2);
}
cout <<"\n";
}

r=sqrt(suma);
cout<<"La raz cuadrada de la suma de los cuadrados es \t",r;
getch();
}

Você também pode gostar