You are on page 1of 9

Algoritmos y su codificacin en C++

Volumen 1
(sda edicin)

Csar Liza Avila

Grupo
Creadores
Motivando tu naturaleza Creativa.

La estructura
secuencial
Problema 1.1
Muestre un algoritmo lea 2 valores a, b y los intercambie. Por ejemplo si a=2 y b=5, el algoritmo
debe hacer que a=5 y b=2.
Solucin:
Definicin de variables:
a,b: variables cuyos valores se desean intercambiar.
t : variable de trabajo, sirve como almacenamiento
temporal para evitar que se pierda un valor mientras
se realiza la asignacin.
Diagrama N/S
Leer a,b
t=a
a=b
b=t
Imprimir a,b
El algoritmo es sencillo, el nico cuidado que hay que tener es primero guardar el valor de una de
las variables en una variable temporal tal y como se muestra en el diagrama N/S. Si hubiramos
hecho a=b y luego b=a, se perdera el valor inicial de a, en la primera asignacin. Este tipo de
intercambio se denomina en los crculos informticos swap y se utiliza con frecuencia en otros
algoritmos ms complejos tales como los de ordenamiento.
CODIFICACIN EN C++
#include<iostream.h>
void main(void)
{
int a,b,t;
cout<<Ingrese a: ; cin>>a;
cout<<Ingrese b: ; cin>>b;
t=a;
a=b;
b=t;
cout<<Los valores intercambiados son: <<endl;
cout<<a= <<a<<endl;
cout<<b=<<b;
}

Problema 1.2
A una reunin asistieron n personas, cuantos apretones de mano hubieron?.
Solucin:
Definicin de variables:
n: nmero de personas
a: nmero de apretones de mano
Se sabe que cada persona debe saludar a las (n-1) restantes, por lo que habr n*(n-1) saludos como
en cada saludo intervienen 2 personas la cantidad de apretones de mano ser:
a=

n(n1)
2

Leer n
a = n*(n+1)/2
Imprimir a
CODIFICACIN EN C++
#include <iostream.h>
void main(void)
{
int n, a;
cout<< Ingrese el numero de personas: ;cin>>n;
a=n*(n+1)/2
cout<< El nmero de apretones es: <<a;
}
Problema 1.3
Hallar la suma de los n primeros nmeros naturales.
Solucin:
Definicin de variables:
n : cantidad de nmeros naturales.
s : suma de los primeros n nmeros naturales.
Se pide lo siguiente:
s=1+2+3+ 4+5+ 6+.....+(n4)+(n3)+(n2)+(n1)+n

escribamos esta expresin 2 veces una ascendentemente y la otra descendentemente:


s=1+2+3+ 4+5+ 6+.....+(n4)+(n3)+(n2)+(n1)+n
s=n+(n1)+(n2)+(n3)+(n4 )+...+5+ 4+ 3+2+1
sumando miembro a miembro tenemos:

2 s=(n+1)+(n+1)+(n+1)+(n+1)+...+(n+1)+(n+1)+(n+1)+(n+1)

n trminos

de donde : s=

n(n+1)
2

Diagrama N/S
Leer n
s = n*(n+1)/2
Imprimir s
CODIFICACIN EN C++
#include <iostream.h>
void main(void)
{
int n,s;
cout<< Ingrese nmero de trminos;cin>>n;
s=n*(n+1)/2;
cout<< La suma de los n terminos es : <<s;
}
Problema 1.12
En un triangulo rectngulo, calcule la longitud de la hipotenusa conociendo las longitudes de sus
catetos.
Solucin:
Definicin de variables:
a,b : catetos del tringulos rectngulo.
c : hipotenusa.
2
2
Por teorema de Pitgoras : c= a +b

Diagrama N/S

Leer a, b
Calcular
c= aa+ bb
Imprimir c
CODIFICACION EN C++
#include <iostream.h>
#include <math.h>
void main(void)
{
float a,b;
double c; //tipo double porque el uso del sqrt()
cout<< Ingrese los catetos a y b : ;
cin>>a>>b;
c=sqrt(a*a+b*b);
cout<< La hipotenusa mide : <<c;
}
Problema 1.13:
El teorema del coseno es muy utilizado en geometra para calcular la longitud del tercer lado de un
triangulo, cuando se conocen los otros 2 lados y su angulo que forman. Siendo a el lado
desconocido b y c los lados conocidos, el angulo formado por b y c el teorema del
coseno se enuncia como:
Solucin:
Definicin de variables:

Diagrama N/S
Leer b,a,teta
c= a2 +b 22abcos (teta)
Imprimir c

CODIFICACIN EN C++
#include <iostream.h>
#include <math.h>
void main(void)
{
float a,b,teta;
double c;
cout<< Ingrese lados conocidos del triangulo: ;
cin>>a>>b;
c=sqrt ( a*a+b*b-2*a*b*cos(teta) );
cout<< El lado desconocido es: <<c;
}
Problema 1.14
Calcule la distancia entre 2 puntos de coordenadas conocidas.
Solucion:
Definicion de variables:
x1: abscisa del primer punto
y1: ordenada del primer punto
x2: abscisa del segundo punto
y2: ordenada del segundo punto
Leer x1,x2,y1,y2
d= (x 2x 1)2 +( y 2 y 1)2
Imprimir d

CODIFICACIN EN C++
#include <iostream.h>
#include <math.h>
void main(void)
{

float x1,x2,y1,y2;
double d;
cout<< Ingrese coordenadas (x1,y1) del primer punto: ;
cin>>x1>>y1;
cout<< Ingrese coordenadas (x2,y2) del segundo punto:;
cin>>x2>>y2;
d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
cout<< La distancia entre los dos puntos es: <<d;

Problema 1.15
Convierta el complejo c = a+bi, a sus coordenadas polares.
Solucin:
Definicin de variables:
: angulo formado por recta que uno (a,b) con el origen (0,0).
a : parte real del complejo
b : parte imaginaria del complejo
: distancia del punto al origen
Un nmero complejo puede ser representado en el plano cartesiano considerando que su Parte Real
se ubica en el Eje X, mientras que su Parte Imaginaria en el Eje Y. Teniendo en cuenta esto, una
forma alternativa de escribir el complejo c= a +bi, es ponerlo en funcin del ngulo que forma el
punto (a,b) con el eje real y de la distancia del mismo punto al origen.
Del grfico tenemos:
cos = a / a = *cos
seno = b / b = *sen
Remplazando en la ecuacin original c = a + bi, nos queda c = (cos + i*sen )
En donde:
=arctan(b/a) y = a2 +b2
( y son conocidas como coordenadas polares, teniendo en cuenta que para representar un punto
solo se necesita un ngulo y la distancia del punto al origen ).
Leer a , b
= a2 +b2

=arctan(b/a)

Imprimir ,
CODIFICACIN EN C++
#include<iostream.h>
#include<math.h>
void main(void)
{
float a,b;
double w,p;
cout<< Ingrese parte real: ;cin>>a;
cout<< Ingrese parte imaginaria: ;cin>>b;
p = sqrt(a*a+b*b);
w= atan(b/a);
cout<< angulo : <<w<<endl;
cout<< distancia : <<p;
}

Problema 1.16
Cul es el monto a devolver si nos prestan un capital c, a una tasa de interes t% durante n
periodos?
Solucin:
c: capital tomado en prstamo.
t: tasa de inters en decimal.
n: nmero de periodos.
m: monto a devolver.
Leer c, t, n
m = c(1+t)n
Imprimir m
Sabemos que:
m = c(1+t)n
CODIFICACIN EN C++
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
int c,t,n;
double m;
cout<< "Ingrese el capital prestado: ";cin>>c;
cout<<"Ingrese la taza de Interes(en decimales) : ";cin>>t;
cout<< "Ingrese el numero de periodo: ";cin>>n;
m=c*pow(1+t,n);
cout<<"El monto a devolver ser: "<<m;
return 0;
}
Problema 1.17
En todo tringulo se cumple que cada lado es proporcional al seno del angulo opuesto. Esta ley se
llama Ley de los senos, matemticamente.
a
b
c
=
=
sen() sen() sen ()
Si se conocen los angulo , , y el lado c, cunto valen los otros dos lados?
Solucin:
Definicin de variables:
a,b,c: lados del triangulo.

, , y : ngulos opuestos a a,b y c respectivamente.


Despejando de la frmula.
A= c(sen /sen )
b=c(sen /sen )
Diagrama N/S
Leer c, alfa, beta, gamma
A= c*sen(alfa)/sen(gamma)
B= c*sen(beta)/sen(gamma)
Imprimir a,b

#include <iostream>
#include <math.h>
using namespace std;
int main()
{
float a,b,g,lado3;
double lado1,lado2;
cout<< "Ingrese un lado: ";cin>>lado3;
cout<< "Ingrese los 3 angulos angulos en radianes: ";cin>>a>>b>>g;
lado1=lado3*sin(a)/sin(g);
lado2=lado3*sin(b)/sin(g);
cout<<"el lado1 es: "<<lado1<<endl;
cout<<"el lado2 es: "<<lado2;
}

Problema 1.18
Existen muchas maneras de medir angulos. El Sistema Sexagesimal divide una circunferencia en
360 partes llamndola a cada una graso sexagesimal cada grado sexagecimal est dividido en 60
minutos y cada minuto en 60 segundos, (por ejemplo 201521).
Esl Sistema Centesimal considera como unidad de medida el grado centesimal y