Está en la página 1de 9

Algoritmos y su codificación en C++

Volumen 1
(sda edición)

César 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.

Solución:

Definición 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 asignación.

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 hubiéramos
hecho a=b y luego b=a, se perdería el valor inicial de a, en la primera asignación. Este tipo de
intercambio se denomina en los círculos informáticos swap y se utiliza con frecuencia en otros
algoritmos más complejos tales como los de ordenamiento.

CODIFICACIÓN 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 reunión asistieron n personas, ¿cuantos apretones de mano hubieron?.

Solución:

Definición de variables:

n: número de personas
a: número 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á:

n∗(n−1)
a=
2

Leer n
a = n*(n+1)/2
Imprimir a

CODIFICACIÓN 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 número de apretones es: ”<<a;

Problema 1.3

Hallar la suma de los n primeros números naturales.

Solución:

Definición de variables:

n : cantidad de números naturales.


s : suma de los primeros n números naturales.

Se pide lo siguiente:
s=1+2+3+ 4+5+ 6+.....+(n−4)+(n−3)+(n−2)+(n−1)+n
escribamos esta expresión 2 veces una ascendentemente y la otra descendentemente:

s=1+2+3+ 4+5+ 6+.....+(n−4)+(n−3)+(n−2)+(n−1)+n

s=n+(n−1)+(n−2)+(n−3)+(n−4 )+...+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 términos

n∗(n+1)
de donde : s=
2

Diagrama N/S

Leer n
s = n*(n+1)/2
Imprimir s

CODIFICACIÓN EN C++

#include <iostream.h>

void main(void)
{
int n,s;
cout<< “Ingrese número de términos”;cin>>n;
s=n*(n+1)/2;
cout<< “La suma de los n terminos es : ”<<s;
}

Problema 1.12
En un triangulo rectángulo, calcule la longitud de la hipotenusa conociendo las longitudes de sus
catetos.

Solución:

Definición de variables:

a,b : catetos del triángulos rectángulo.


c : hipotenusa.

Por teorema de Pitágoras : c=√ a +b


2 2
Diagrama N/S

Leer a, b
Calcular
c=√ a∗a+ b∗b
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 geometría 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:

Solución:

Definición de variables: Diagrama N/S

Leer b,a,teta
c=√ a2 +b 2−2∗a∗b∗cos (teta)
Imprimir c
CODIFICACIÓN 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 2−x 1)2 +( y 2− y 1)2
Imprimir d

CODIFICACIÓN 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.

Solución:

Definición 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 número 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 función del ángulo ω que forma el
punto (a,b) con el eje real y de la distancia ρ del mismo punto al origen.

Del gráfico tenemos:


cos ω = a / ρ → a = ρ*cos ω
seno ω = b / ρ → b = ρ*sen ω

Remplazando en la ecuación 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 ω , ρ

CODIFICACIÓN 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

¿Cuál es el monto a devolver si nos prestan un capital c, a una tasa de interes t% durante n
periodos?

Solución:

c: capital tomado en préstamo.


t: tasa de interés en decimal.
n: número de periodos.
m: monto a devolver.

Leer c, t, n
m = c(1+t)n
Imprimir m

Sabemos que:
m = c(1+t)n

CODIFICACIÓN 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 triángulo se cumple que cada lado es proporcional al seno del angulo opuesto. Esta ley se
llama “Ley de los senos”, matemáticamente.

a b c
= =
sen(α) sen(β) sen (γ)

Si se conocen los angulo α, β, γ y el lado c, ¿cuánto valen los otros dos lados?
Solución:
Definición de variables:
a,b,c: lados del triangulo.
α, β, y : ángulos opuestos a a,b y c respectivamente.

Despejando de la fórmula.
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 llamándola a cada una “graso sexagesimal” cada grado sexagecimal está dividido en 60
minutos y cada minuto en 60 segundos, (por ejemplo 20°15’21”).

Esl Sistema Centesimal considera como unidad de medida “el grado centesimal” y

También podría gustarte