Você está na página 1de 68

Universidad

del Quindo

Facultad de Ingeniera
Programa de Topografa
Armenia 2004
Con Aplicaciones en Topografa

Gonzalo Jimnez C.
Profesor Programa de Topografa
Universidad del Quindo
CONTENIDO

1. Generalidades..1

2. Estructura Secuencial....11

3. Funciones .....23

4. Estructuras de Decisiones..33

5. Estructuras de Ciclos.....43

6. Estructura de Datos........53

Bibliografa61
Gonzalo Jimnez Cleves
Profesor Universidad del Quindo
Facultad de Ingeniera
Topgrafo Universidad del Quindo
Especialista en Computacin para la Docencia Universidad del Quindo - Universidad Antonio Nario
Magster en Ingeniera de Sistemas Universidad del Valle
gjcleves@uniquindio.edu.co
GENERALIDADES
1. C++

Fue desarrollado por Kernighan y Richie en 1972, en la mitad de los ochenta Bjarne
Stroustrup basado en C y Simula crea el C++, el primer borrador del estndar C++ se
publico en 1995. En la actualidad, el C++ es un lenguaje verstil, potente y general. Su
xito entre los programadores profesionales le ha llevado a ocupar el primer puesto como
herramienta de desarrollo de aplicaciones.

1.1. Conceptos Generales

Programa: Conjunto de Instrucciones estructuradas para soluciones a problemas por computador.

Pasos para la solucin de un problema: Para resolver es problema es necesario tener en cuenta lo
siguiente

1. Describir el problema

2. Analizar el problema

3. Disear la lgica general del programa

4. Disear la 1gica detallada

5. Codificar el programa

6. Evaluar y corregir e programa

7. Documentar el programa
Programa Fuente: Programa escrito en lenguaje fuente

Compilador: Programa de computador que produce un lenguaje de maquina, de un programa


fuente que generalmente esta escrito en un lenguaje de alto nivel (convierte el programa fuente en
programa objeto).

Programa Objeto: Programa en lenguaje de maquina

1.2. Tipos de datos

Numrico: Smbolo empleado para representar un dgito decimal y con los cuales se puede efectuar
operaciones aritmticas.

Alfanumricos: Conjunto de letras o nmeros, puntuacin o carcter especial o de control.

VARIABLES

Son aquellos valores que pueden o no cambiar al resolver un problema. Las variables poseen su
nombre y su valor, los nombres de las variables deben comenzar con una letra y pueden constar de
un nmero de letras y dgitos. El C++ tiene reservadas varias palabras que no pueden ser usadas
como nombres de variables.

Variables

Numricas

Cadena de Caracteres

Variables arreglo

Numrico De Cadena de

CONSTANTES
Son aquellos valores que no cambian al resolver un problema. Las constantes numricas pueden
contener: Dgitos, un signo, punto decimal y E (Notacin exponencial, E significa potencia 1 de 10).

OPERADORES

Aritmticos
Suma + Resta
-
Multiplicacin *
Divisin /
Divisin entera (Resto) %

Relacinales
Igual a ==
Diferente !=
Menor que <
Mayor que >
Menor igual <=
Mayor igual >=

Lgicos
Negacin !
Y Lgica &&
O Lgica

ARITMTICOS

EL C++ proporciona las ocho operaciones aritmticas

Operador Ejemplo Resultado


+ 4+8 12
- 53 2
* 2*3 6
/ 8/2 4
% 5%2 1
RELACIONALES

Una expresin relacional, o condicin consta de dos expresiones (o bien ambas


numricas o ambas de cadena) que se separan por un operador relacional.

Smbolo Ejemplo Resultado


< 4<2 Falso
> 3>1 Verdadero
>= 5 >= 5 Verdadero
<= 4 <= 3 Falso
!= 3!=3 Falso

LOGICOS

En ocasiones se necesita expresar una condicin que implica ms de dos cantidades o una relacin ms
compleja que la simple igualdad u orden.

Condicin Condicin 2 && ||


1
Verdad Verdad Verdad Verdad
Verdad Falso Falso Verdad
Falso Verdad Falso Verdad
Falso Falso Falso Falso

Ejemplo

Condicin Valor
(2>1) && (3>2) Verdad
(2>1) && (3=2) Falso
(2<1) && (2=2) Falso
(2=3) && (3<1) Falso
(2=2) || (3>4) Verdad
(3>1) || (4=2) Verdad
(2=1) || (3>2) Verdad
(2=7) || (1>2) Verdad

OPERADORES DE CADENA DE CARACTERES (+)

Las cadenas de caracteres pueden ser concatenados usando el signo +.


Operacin Resultado
ingeniera + topogrfica Ingeniera topogrfica

JERARQUIA DE LAS OPERACIONES

Las operaciones se efectan de izquierda a derecha cuando el orden de precedencia


es idntico.

Prioridad Operador
1 ()
2 Funciones
3 */
4 %
5 +-

Ejemplo

Evaluar la siguiente expresin

A = 3*(7+1)+(3/(2+4*2+(1/3)+2)-1)
= 3*(7+1)+(3/(2+4*2+.33+2)-1)
= 3*(7+1)+(3/12.33-1)
= 3*8+(3/12.33-1)
= 3*8+(0.24-1)
= 3*8+(-0.76)
= 3*8-0.76
= 23.24

Ejemplo

Conversin de expresiones algebraicas a C++

Expresiones algebraicas C++


c X= C/(C+R)*D
X D
c r
D2 C= (D*D)/(2*L)
C
2L
e S = E / SQR(N)
S
n
A B C V=(A+B+C)/3
V
3
N CP= DN/P*L
CP L
P
K W= S+ K/3
w S
3

Al terminar de convertir una expresin algebraica con parntesis, cuente el nmero


de parntesis a la derecha e izquierda; deben ser iguales.

EXPRESIN DE ASIGNACIN

Son las expresiones que asigna a las variables o a las constantes, un valor
determinado. Este valor puede ser una constante, una variable o el resultado de un
clculo. Su forma general es:

Variable = Expresin aritmtica;

Ejemplo

W = 12;
D = K * S;
R = PI /180 * A;
S = (A+B+C)/2;
P = E /D;

Incremento (++)

Podemos utilizar este operador para incrementar el valor de una variable:

x = x + 5;
a=a+1;

Pero existe una forma abreviada:


x += 5;

a++;

Decremento (--)

Es equivalente a ++ pero en vez de incrementar disminuye el valor de la variable. Equivale a restar uno a la
variable.

a = a - 1;

En forma abreviada

a--;

Problemas

a) Seleccionar las variables aceptadas y no aceptadas

IT _______________________
F2 _______________________
Paso _______________________
3*5 _______________________
%D _______________________
**a _______________________
Z _______________________
7F _______________________
/Q _______________________
GR _______________________

b) Determinar el resultado de las siguientes operaciones relacionales y lgicas (falso


Verdadero)

5>2 _______________________
(2=2) || (3>1) _______________________
4=3 _______________________
(1=1) && (3<>5) _______________________
7 ! =7 _______________________
4 !=1 _______________________
4>= 6 _______________________
(7>2) || (3=1) _______________________
1< 5 _______________________
(3=3) && (4>7) _______________________

c) Escriba cada una de las expresiones aritmticas en expresiones en Basic

a b c
S
2

A s(s a)(s b)(s c)

D KSSen2

E Vm Vv

V TV
So
r

CR
D
hcr
100

d) Evaluar paso a paso las siguientes expresiones de asignacin.


A = (3*4) +(9/3+5-3)
B = (2+7*(2-3)+(8+5)+1.23
C = 2+8*(1/3)+7.3
D = (5*(4+2)-2) +2.5/2
E = -2*6+(2-3+(5+4)/2+7)/3+(2/5)*5

e) Algunas de las siguientes expresiones en C++ poseen errores. Encuntrelos y escriba en


forma correcta cada expresin.

A=BxH/2
N 4 = 180
a-+
* = +2/-6
1\ 3 = R / T&
SEN(Y) = ( w/E) * -1
N = E *2 -( 3+4) - 2

1.3. USO DEL EDITOR

A continuacin se presenta la forma de usar el editor de C++, para editar y ejecutar un


programa.

Como empezar

Una vez este en Windows seleccione el siguiente icono y con el Mouse de le doble clic.

Turbo C++.lnk

Aparecer la siguiente pantalla


Escriba el programa, como si fuera en un procesador de palabra

Para grabar el programa seleccione en la parte superior el icono escriba el nombre

Y presione OK.

Para ejecutar un programa seleccione el icono , aparecer un pantalla con los resultados
o la lista de los errores.

Para llamar un archivo existente seleccione el icono , escoja el archivo y presione OK.
Inmediatamente se carga el programa.
ESTRUCTURA
SECUENCIAL
2. ESTRUCTURA SECUENCIAL

Esta se caracteriza porque cada accin se ejecuta en orden estricto una detrs de otra. El
flujo del programa coincide con el orden en que se encuentre escrito las instrucciones.

2.1. ESTRUCTURA GENERAL DE UN PROGRAMA EN C++

Un programa se compone de varias funciones, un programa en C++ incluye:

Directivas del preprocesador


Declaraciones globales
La funcin main
Funciones definidas por el programador
Comentarios del programa

Laestructurageneraldeunprogramaeslasiguiente

#include directivas del preprocesador


#define macros del procesador

Declaraciones globales
- Funciones
- Variables

Funcin principal main


main()
{
Declaraciones locales
Sentencias
}

Definiciones de otras variables

Func1()
{

Func2()
{

2.1.1. Directivas del procesador

Es importante tener en cuenta que La directiva #include le indica al compilador que lea el
archivo fuente que viene a continuacin de ella y su contenido lo inserte en la posicin
donde se encuentre dicha directiva. A continuacin se presenta una lista de las directivas
mas conocidas con una breve descripcin
Directiva Descripcin
STADIO.H Rutinas de flujos para C
STDLIB.H Rutinas de biblioteca estndar
MATH.H Funciones matemticas
STRING.H Funciones de cadena
IOSTREAM.H Rutinas de flujos para C++
IO.H Tratamiento de archivos
CONIO.H E/S a travs del teclado y el puerto
CTYPE.H Funciones de caracteres
TIME.H Unidades de fecha y hora

2.1.2. Declaraciones Globales


Son las que indican al compilador que las funciones definidas por el programador o variables as declaradas
son comunes a todas las funciones de su programa.

Variables

Una variable es un objeto cuyo valor puede cambiar durante el desarrollo del programa.

int : Cantidad entera


char : Carcter
float : Nmero de coma flotante (con punto decimal y/o exponente)
double : Nmero de coma flotante de doble precisin (ms cifras significativas y mayor
valor posible del exponente)

Ejemplo:

int gp;

Constantes

Algunas veces necesario utilizar un valor que no se modifica a lo largo de un programa. En C++, una
constante se declara escribiendo const delante de la palabra reservada en la declaracin.

Ejemplo:

const int a=1;

C++ ofrece tambin otro mtodo para especificar constantes: la directiva del compilador #define, el formato
de esta es, seguida de dos cadenas de caracteres separados por espacios en blanco.

Ejemplo:

#define PI 3.141592654

2.1.3. Palabras reservadas

Son algunas palabras cuyo significado est predeterminado y no se puede utilizar con otro fin.

asm double new switch


auto else operator template
break enum private this
case exterm protected throw
catch float public try
char for register typedef
class friend return union
const goto short unsigned
continue if signed virtual
default inline sizeof void
delete int static volatile
do long struct while

2.2. Entrada de Datos


Son las instrucciones que activa en C++ la funcin de entrada. Estas instrucciones asigna a
las variables indicadas los valores ledos por le dispositivo de entrada.
2.2.1 Cin

El uso de cin nos da la posibilidad de que el usuario introduzca datos en vez de mostrarlos.
No nos permite mostrar texto en la pantalla.

Ejemplo:

Programa

#include <iostream.h>

float num;
main()
{
cin >> num;
}

Pantalla

2.2.2. Scanf

Es similar a la instruccin cin permitiendo leer desde el teclado.

#include <stdio.h>

float prueba;

main()
{

scanf( %f , &prueba);
}

2.3. Salida de datos

Respuestas dadas por le programa, parciales o totales


2.3.1. Cout

Esta sentencia proporciona un mecanismo para visualizar datos en la pantalla. Estos datos
pueden ser constantes, variables o expresiones.

Ejemplo:

#include <iostream.h>
main()
{
cout << "Yo estudio en la Universidad del Quindo";
}

Yo estudio en la Universidad del Quindo

Veamos el mismo programa en dos reglones usando \n para una nueva lnea

#include <iostream.h>
main()
{
cout << "Yo estudio en la\nUniversidad del Quindio";
}

Yo estudio en la
Universidad del Quindo

2.3.2. Printf

Es muy similar a cout con ms parmetros. Sirve para presentar informacin por pantalla.
Para especificar la cantidad de enteros y decimales en la salida de datos, %8.2f significa
que son ocho espacios con dos decimales de una variable float.

\n ejecuta un cambio de lnea

#include <stdio.h>
main()
{
float prueba = 814.159265;
printf("Resultado: %8.2f \n",prueba);
}

Ejemplo

Resultado: 814.16

2.4. Manejo de pantalla

2.4.1. Clrscr

Esta funcin borra la pantalla y adems sita el cursor en la posicin (1, 1), en la esquina superior izquierda.

Ejemplo

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

main()
{
clrscr();
printf("Topografia \n");
printf("Armenia");
printf(" (Quindio)");
}

Topografia
Armenia (Quindio)

2.4.2. Gotoxy

Coloca el cursor en la posicin (x,y), primero se pone la columna (x) y luego la fila (y). La esquina superior
izquierda es la posicin (1, 1).
Ejemplo

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

main()
{
gotoxy( 15, 10 ); printf( "Colombia" );
gotoxy( 25, 10 ); printf( "Armenia" );
}

Colombia Armenia

2.5. Comentarios ( /* */ o // )

Introduce un comentario en el programa. Esta instruccin y el texto siguiente no se ejecutan. Cumple la


funcin de documentar el programa.

Hay dos formas de hacer comentarios una empieza con /* y termina con los caracteres */

/* COMENTARIO */

La otra se inicia con // las dos barras marcan el comienzo y el fin de la lnea el final.

// COMENTARIO

PROBLEMAS RESUELTOS

1. Dados el valor de la distancia en el terreno y el denominador de la escala. Calcular la longitud en el papel (


P = T /D)

Programa

// ESCALA
// GJC
// 2004-07-04

#include <stdio.h>

float T, D, P;

main()
{
// ENTRADA DE DATOS
printf ("TERRENO:");
scanf ("%f",&T);
printf ("DENOMINADOR:");
scanf ("%f",&D);

// CALCULO
P = T/D;

// RESULTADOS
printf("PAPEL: %10.2f\n",P);

2. Cuantos centmetros hay en n pulgadas

Programa

// CONVERTIR PULGADAS A CENTIMETROS


// GJC
// 2004-07-05

#include <stdio.h>

float C, P;

main()
{
// ENTRADA DE DATOS
printf ("PULGADAS:");
scanf ("%f",&P);

// CALCULO
C = P*2.54;

// RESULTADOS
printf("CENTIMETROS %10.2f\n",C);
}
3. Dados los tres lados de un triangulo. Hallar su rea.

Programa

// LADOS DE UN TRIANGULO
// GJC
// 2004-07-05

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

float A,B,C,S,R;

main()
{
// ENTRADA DE DATOS
printf("Lados de un triangulo -> Area\n");
printf ("\n");
printf ("A:");
scanf ("%f",&A);
printf ("B:");
scanf ("%f",&B);
printf ("C:");
scanf ("%f",&C);

// CALCULOS
S=(A+B+C)/2;
R=sqrt(S*(S*(S-A)*(S-B)*(S-C)));

// RESULTADOS
printf("AREA: %10.2f\n",R);
}

4. Dados dos puntos en el plano cartesiano. Calcular la distancia entre ellos.

Programa

// DISTANCIA POR COORDENADAS


// GJC
// 2004-07-05

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

float A,B,C,D,E;

main()
{
// ENTRADA DE DATOS
printf("Distancia por Coordenadas\n");
printf ("\nX1:");
scanf ("%f",&A);
printf ("X2:");
scanf ("%f",&B);
printf ("X3:");
scanf ("%f",&C);
printf ("X4:");
scanf ("%f",&D);

// CALCULOS
E=sqrt(pow((C-A),2)+pow((D-B),2));

// RESULTADOS
printf ("\n");
printf("DISTANCIA: %10.2f m\n",E);

5. Calcular el punto de ceros, a partir de la altura de corte, lleno y la distancia entre estas.

Programa

// PUNTO DE CEROS
// GJC
// 2004-07-05

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

float C,D,R,X;

main()
{
// ENTRADA DE DATOS
printf("PUNTO DE CEROS\n");
printf ("\nAltura de corte :");
scanf ("%f",&C);
printf ("\nAltura de lleno :");
scanf ("%f",&R);
printf ("\nDistancia :");
scanf ("%f",&D);

// CALCULOS
X=(C/(C+R))*D;

// RESULTADOS
printf("\nDistancia de ceros : %10.2f m\n",X);
}
PROBLEMAS PROPUESTOS

1. Escriba un programa que calcule el error por tensin en una medicin realizada con cinta.

2. Escriba un programa en C++ que calcule la siguiente formula.


D Ctg
2

3. Escriba un programa que calcule la nota definitiva sabiendo que los porcentajes son: 20%,
20%,20%,10%,30%

4. Dado un ngulo en grados minutos y segundos convertirlos a radianes.

5. Escriba un programa que calcule el valor del rumbo dado un azimut en el tercer cuadrante.

6. Dado la distancia geomtrica y la altura (diferencia de nivel). Calculo por le mtodo exacto y
aproximado la distancia horizontal.

7. Escriba un algoritmo que la suma de los ngulos internos de un polgono de n lados.

8. El siguiente programa posee varios errores, encuntrelos y corrjalos

#include <stdio.h>

float A,B,C,D,F,G,L,K,P,X,Y;

main(
{
// ENTRADA DE DATOS

printf ("\nA1x :");


scanf ("%f",A);
printf ("\nB1y :");
scanf ("%f",&B);
printf ("\nC1 :");
scanf ("%f",&C);
printf ("\nA2x :");
scanf ("%f",&D);
printf ("\nB2y :");
scanf ("%f",&F);
printf ("\nC2 :");
scanf ("%f",&G);
// CALCULOS
M= -(A/B);
L=-(D/F)
K= C/3;
P=G/F;
X=(P-K)/(M-L);
Y=M*X+K;

// RESULTADOS
printf("\nX: %10.2f \n",X);
printf("\nY: %10.2f \n",Y);
FUNCIONES

3.1. Generalidades

Una funcin sirve para realizar tareas concretas y simplificar el programa. Nos sirve para
evitar tener que escribir el mismo cdigo varias veces. Pueden ser ejecutadas cuantas veces
sea necesario.

Las funciones son de una gran utilidad en los programas. Nos ayudan a que sean ms legibles y ms cortos.
Con ellos estructuramos mejor los programas.

Sin embargo nosotros tambin podemos definir nuestras propias funciones. Pocas veces se ve un programa un
poco complejo que no use funciones. Una de ellas, que usamos siempre, es la funcin main.

3.1.1. Definicin de una funcin

Una funcin tiene el siguiente formato:

tipo_de_variable nombre_de_la_funcin( argumentos )


{
definicin de variables;

cuerpo de la funcin;

return 0;
}

Empecemos por el nombre_de_la_funcin. Para el nombre no se pueden usar mas que


letras, nmeros y el smbolo '_'. No se pueden usar ni acentos ni espacios. Adems el
nombre de la funcin debe empezar por una letra, no puede empezar con un nmero. El
nombre de la funcin se usa para llamarla dentro del programa. Un funcin no se puede
declarar dentro de otra.

El tipo_de_variable: Cuando una funcin se ejecuta y termina debe devolver un valor. Este valor puede ser
cualquiera de los tipos de variables que hemos visto anteriormente en Tipos de datos (int, char, float, double)
o un tipo de dato definido por nosotros (esto lo veremos ms adelante). El valor que devuelve la funcin suele
ser el resultado de las operaciones que se realizan en la funcin, o si han tenido xito o no.

Tambin podemos usar el tipo void. Este nos permite que podamos devolver cualquier tipo de variable o
ninguna.

Definicin de variables: Dentro de la funcin podemos definir variables que slo tendrn validez dentro de la
propia funcin. Si declaramos una variable en una funcin no podemos usarla en otra.

Cuerpo de la funcin: Aqu es donde va el cdigo de la funcin.

Return: Antes hemos indicado que la funcin devuelve un valor. La sentencia return se usa para esto. El dato
que se pone despus de return es el dato que se devuelve. Puede ser una constante o una variable. Debe ser
del mismo tipo que tipo_de_variable.

return(expresin)

Si el tipo de retorno es void, la sentencia return se puede escribir

return;

Argumentos: Estos son variables que se pasan como datos a una funcin. Deben ir separados por una coma.
Cada variable debe ir con su tipo. En los ejemplos a continuacin se llama a la funcin desde main, as que
tenemos que definirlas antes que main.

Ejemplo

// EJEMPLO DE FUNCION
// GJC
// 2004-07-06

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

// funcion 1
void funcion1(void)
{
cout<<"Hola\n";
return;
}

// funcion 2
void funcion2(void)
{
cout<<"Como\n";
return;
}

//Funcion 3
void funcion3(void)
{
cout<<"Estas\n";
return;
}

main()
{
// En un orden
funcion1();
funcion2();
funcion3();
printf("\n");

// En otro orden
funcion2();
funcion3();
funcion1();
}

Hola
Como
Estas

Como
Estas
Hola

Ejemplo

Tomemos el programa resulto numero cuatro del capitulo anterior y convirtmoslo con el
uso de funciones.

// DISTANCIA POR COORDENADAS


// EJEMPLO DE FUNCION
// GJC
// 2004-07-06
#include <iostream.h>
#include <stdio.h>
#include <math.h>

float A,B,C,D,E;

// ENTRADA DE DATOS
void entrada(void)
{
printf("Distancia por Coordenadas\n");
printf ("\nX1:");
scanf ("%f",&A);
printf ("X2:");
scanf ("%f",&B);
printf ("X3:");
scanf ("%f",&C);
printf ("X4:");
scanf ("%f",&D);
return;
}

// CALCULOS
void calculos(void)
{
E=sqrt(pow((C-A),2)+pow((D-B),2));
return;
}

// RESULTADOS
void resultados(void)
{
printf ("\n");
printf("DISTANCIA: %10.2f m\n",E);
return;
}

main()
{
entrada();
calculos();
resultados();
}

3.1.2. Funciones matemticas


Las funciones matemticas se encuentran en <math.h>, algunas estn en <stdlib.h>, ya se indicar en cada
una. Con ellas podemos calcular races, exponentes, potencias, senos, cosenos, redondeos, valores absolutos y
logaritmos.

Funciones Descripcin
abs() Devuelve el valor absoluto de un argumento de
tipo entero
acos(),acosl() Arco Coseno
asin(), asinl() Arco Seno
atan(),atanl() Arco tangente
atan2(),atan2l() Arco tangente de dos nmeros
ceil(), ceill() El mayor valor entero
cos(), cosl() Coseno
cosh(),Coshl() Coseno hiperblico
exp(), exp.() Valor exponencial
fabs(), fabsl() Valor absoluto
floor() floorl() Valor mas pequeo
fmod(), fmodl() Modulo ( resto)
frexp(), frexpl() Descompone el numero en la mantisa y el
exponente
hypot(), hypotl() Hipotenusa
labs() Devuelve el valor absoluto de u argumento de
tipo long (entero largo)
ldexp(), ldexpl() x por 2 elevado a la potencia exp.
log(), logl() Logaritmo natural
Log10(), log10l() Logaritmo en base 10
modf(), modf1() Mantisa y exponente
pow(),powl() x elevado a y
pow10(),pow10l() 10 elevado a la potencia de x
sin(), sinl() Seno
sinh(), sinhl() Seno hiperblico
tan(), tanl() Tangente
tanh(), tanhl() Tangente hiperblica

Ejemplo

// FUNCIONES TRIGONOMETRICAS
// GJC
// 2004-07-06

#include <stdio.h>
#include <math.h>
#define PI 3.1415624
float A,B,C,D,R;

main()
{
// ENTRADA DE DATOS
printf("Funciones Trigonometricas\n\n");
printf ("Escriba un angulo en grados:");
scanf ("%f",&A);

// CALCULOS
R = PI/180*A;
B= sin(R);
C= cos(R);
D= tan(R);

// RESULTADOS
printf("seno : %10.2f\n",B);
printf("Coseno : %10.2f\n",C);
printf("Tangente: %10.2f\n",D);
}

PROBLEMAS RESUELTOS

1. Escriba un programa que muestre en pantalla cuatro veces la palabra planimetra.

Programa

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

// funcion
void funcion(void)
{
cout<<"Planimetria\n\n";
return;
}

main()
{
funcion();
funcion();
funcion();
funcion();
}

2. Elabore un programa que calcule al rea de un circulo

// AREA DE UN CIRCULO
// GJC
// 2004-07-10

#include <iostream.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592654

float A,R;

// ENTRADA DE DATOS
void entrada(void)
{
printf("Areade un circulo\n");
printf ("\nRadio :");
scanf ("%f",&R);
return;
}

// CALCULOS
void calculos(void)
{
A=PI*pow(R,2);
return;
}

// RESULTADOS
void resultados(void)
{
printf ("\n");
printf("Area : %10.2f m\n",A);
return;
}

main()
{
entrada();
calculos();
resultados();
}

3. Realizar un programa que calcule el seno y coseno de un ngulo, en grados y


minutos.

Programa

// FUNCIONES SENO COSENO


// GJC
// 2004-07-06

#include <stdio.h>
#include <math.h>
#define PI 3.14152654

float A,B,C,R,G,M;

main()
{
// ENTRADA DE DATOS
printf("Funciones Seno - Coseno\n\n");
printf ("Escriba un angulo en grados:");
scanf ("%f",&G);
printf("minutos :");
scanf ("%f",&M);

// CALCULOS
A= G+M/60;
R= A*PI/180;
B= sin(R);
C= cos(R);

// RESULTADOS
printf("Seno : %10.8f\n",B);
printf("Coseno : %10.8f\n",C);
}

4. Dado un ngulo en grado, minutos y segundo, convertirlo en grados decimales.

// Grados Decimales
// GJC
// 2004-07-06
#include <stdio.h>

float A,G,M,S;

main()
{
// ENTRADA DE DATOS
printf("Angulo en decimales\n\n");
printf ("Grados :");
scanf ("%f",&G);
printf("Minutos :");
scanf ("%f",&M);
printf("Segundos :");
scanf ("%f",&S);

// CALCULOS
A= G+M/60+S/3600;

// RESULTADOS
printf("Grados decimales : %10.8f\n",A);
}

5. Escriba un programa que calcule proyeccin meridiana y proyeccin paralela.

// CALCULO DE PM Y PP
// GJC
// 2004-7-12

#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592654

// DECLARACION DE VARIABLES
float AR,DH,X,Y,G,M,S,A;

void angulor(void)
{
// ENTRADAS
gotoxy(10,7);
cout<<"ENTRE EL VALOR DEL ANGULO GG.MMSS:";
cin>>A;
// PROCESOS
G = int(A);
M = (int((A-int(A))*100))/60;
S = (A*100-(int(A*100)))/36;
AR= (G+M+S) * PI/180.0;
}

main()
{
gotoxy(10,5);
cout<<"ENTRE EL VALOR DEL LA DISTANCIA :";
cin>>DH;
angulor();
X= DH*cos(AR);
Y= DH*sin(AR);
gotoxy(10,12);
printf("PM : %10.2f\n",X);
gotoxy(10,14);
printf("PP : %10.2f\n",Y);
}

PROBLEMAS PROPUESTOS

1. Escriba un programa que sume los ngulos internos de un triangulo (grados,


minutos y segundos).

2. Escriba un programa que calcule el rea de un polgono regular.

3. Realice un programa que convierta un ngulo expresado en forma decimal a grados,


minutos y segundo.

4. Escriba un programa que calcule la siguiente formula: x=hc/(hc+hr)*d

5. Elabore un programa que calcule la distancia horizontal. Utilizando la siguiente


formula DH = K*S*Sen2
ESTRUCTURAS
DE DECISION

4.1. Generalidades

En general, las sentencias de un programa en C++ se ejecutan secuencialmente, El lenguaje


C++ dispone de varias sentencias para modificar este flujo secuencial de ejecucin. Las
ms utilizadas se agrupan en dos: en las que permiten dos opciones o las que permiten ms
de dos segn ciertas condiciones.

4.1.1. Operador Condicional

El operador condicional es un operador de tres operandos que tiene la siguiente forma


general.

(Condicin) ? (instruccin 1) : (instruccin 2);

Si se cumple la condicin se ejecuta la instruccin 1 y si no se ejecuta la instruccin 2.

EJEMPLO

// OPERADOR CONDCIONAL
// GJC
// 2004-07-12

#include <stdio.h>

main()
{
int a;
int b;

printf( "Introduzca un nmero " );


scanf( "%i", &a );
b = ( a<10 ) ? 2 : 4 ;
printf ( "'b' toma el valor: %i\n", b );
}

Introduzca un nmero: 10
b toma el valor: 4

4.1.2. Sentencia if

La palabra if significa si (condicional), pero supongo que esto ya lo sabas. Su formato es el siguiente:

if ( condicin )
{
Instrucciones a ejecutar
}

Cuando se cumple la condicin entre parntesis se ejecuta el bloque inmediatamente


siguiente al if (bloque instrucciones a ejecutar). Si no se cumple prosigue en la lnea
siguiente.

EJEMPLO

// EJEMPLO DE IF
// GJC
// 2004-07-12
#include <stdio.h>
main()
{
int num;

printf( "Introduzca un nmero:" );


scanf( "%i", &num );
if (num >10)
{
printf( "El nmero es MAYOR QUE 10 \n" );
}
}

Introduzca un nmero: 11
El nmero es MAYOR QUE 10

4.1.3. Sentencia if else

Esta sentencia permite realizar un bifurcacin, ejecutando una parte u otra del programa
segn cumpla o no cierta condicin. La forma general es la siguiente:

if ( condicin )
{
bloque que se ejecuta si se cumple la condicin;
}
else
{
bloque que se ejecuta si no se cumple la condicin;
}

EJEMPLO

// EJEMPLO DE if... else


// GJC
// 2004-07-12

#include <stdio.h>

main()
{
int a;
int b;
printf( "Introduzca un nmero " );
scanf( "%i", &a );
if ( a<10 )
{
b = 2;
}
else
{
b = 4;
}
printf ( "'b' toma el valor: %i\n", b );
}

Introduzca un nmero: 10
b toma el valor: 4

Corriendo este programa otra vez

Introduzca un nmero: 5
b toma el valor: 2

4.1.3. Sentencia if else Mltiple

Esta sentencia permite realizar una ramificacin mltiple, ejecutando una entre varias
partes del programa segn se cumpla entre n condiciones. La forma general es la siguiente:

if ( condicin 1 )
{
bloque que se ejecuta si se cumple la condicin 1;
}
else if (condicin 2)
{
bloque que se ejecuta si se cumple la condicin 2;
}
else if (condicin 3)
{
bloque que se ejecuta si se cumple la condicin 3;
}
else if ()
{
bloque que se ejecuta si se cumple la condicin n;
}

PROGRAMA

// EJEMPLO DE if... else mltiple


// GJC
// 2004-07-12
#include <stdio.h>

main()
{
int a;
printf( "Introduzca un nmero: " );
scanf( "%i", &a );
if ( a<10 )
{
printf ( "El nmero introducido era menor de 10.\n" );
}
else if ( a>10 && a<50 )
{
printf ( "El nmero est entre 10 y 50 \n" );
}
else if ( a>50 )
{
printf( "El nmero es mayor que 50\n" );
}
printf( "Fin del programa\n" );
}

Introduzca un nmero:20
El nmero est entre 10 y 50
Fin del programa

4.1.4. Sentencia switch

Estas sentencias son una estructura de control que permite la seleccin de un conjunto de acciones a partir de
una lista de diferentes opciones. La instruccin if permite solo dos alternativas, mientras switch permite ms
de dos.Su forma general es:

switch ( variable )
{
case opcin 1:
Cdigo a ejecutar si la variable tiene el valor de la opcin 1;
break;

case opcin 2:
Cdigo a ejecutar si la variable tiene el valor de la opcin 2;
break;

default:
Cdigo que se ejecuta si la variable tiene
un valor distinto a los anteriores
break;
}
EJEMPLO

// EJEMPLO DE switch
// GJC
// 2004-07-12
#include <stdio.h>

main()
{
int num;
printf( "Introduzca un nmero: " );
scanf( "%i", &num );
switch( num )
{
case 1:
printf( "Es un 1\n" );
break;
case 2:
printf( "Es un 2\n" );
break;
case 3:
printf( "Es un 3\n" );
break;
default:
printf( "No es ni 1, ni 2, ni 3\n" );
}
}

Introduzca un nmero: 2
Es un 2

Otra ejecucin

Introduzca un nmero: 8
No es ni 1, ni 2, ni 3

PROBLEMAS RESUELTOS

1. Dada un nota de una evaluacin determinar el gano o perdi el examen

PROGRAMA
// Nota
// GJC
// 2004-07-12
#include <stdio.h>
float N;

main()
{
// Entrada de Datos
printf( "Introduzca la nota: " );
scanf( "%f", &N );

// Resultados
if ( N >=3 )
{
printf( "Gano" );
}
else
{
printf( "Perdio" );
}
}

2. Escriba un programa que calcule la distancias horizontal estadimetria ( taquimetra)

PROGRAMA

// CALCULO DE PM Y PP
// GJC & JGB
// 2004-7-12
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592654

// DECLARACION DE VARIABLES
float A,G,M,S,AR,DH,DO,HS,HI;

void angulor(void)
{
// ENTRADAS
cout<<"VALOR DEL ANGULO GG.MMSS:";
cin>>A;
// PROCESOS
G = int(A);
M = (int((A-int(A))*100))/60;
S = (A*100-(int(A*100)))/36;
AR= (G+M+S) * PI/180.0;
}

main()
{
cout<<"DISTANCIA OBLICUA :";
cin>>DO;
if ( DO <= 0)
{
cout<<"HS :";
cin>>HS;
cout<<"HI :";
cin>>HI;
S = fabs(HS-HI);
}
angulor();
DH = DO * sin(AR);
printf("\nDH : %10.2f\n",DH);

3. Escriba un programa que calcule el rumbo y la distancia a partir de dos puntos con
coordenadas.

PROGRAMA

// CALCULO DE COORDENDAS -> RUMBO Y DISTANCIA


// GJC
// 2004-7-12
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <math.h>
#define PI 3.141592654

// DECLARACION DE VARIABLES
float N,E,M,MM,F,P,W,G,MI,S,D,V;
main()
{
// ENTRADA
printf ("Coordenadas\n");
printf ("\nN1:");
scanf ("%f",&N);
printf ("E1:");
scanf ("%f",&E);
printf ("\n");
printf ("N2:");
scanf ("%f",&M);
printf ("E2:");
scanf ("%f",&F);
printf ("\n");
printf ("Rumbo : ");

if ( N-M >0 )
{
printf( "N" );
}
else
{
printf( "S" );
}
P=fabs((E-F)/(N-M));
V=atan(P);
W=V*180/PI;
G=int(W);
MM=(W-G)*60;
MI=int(MM);
S=int((MM-MI)*60+.5);
printf("%3.0f",W);
printf ("");
printf("%2.0f",MI);
printf ("");
printf("%2.0f",S);
printf ("");
if ( E-F >0 )
{
printf( "E" );
}
else
{
printf( "W" );
}
D=sqrt(pow((N-M),2)+pow((E-F),2));
printf("\nDH : %10.2f\n",D);
}

4. Escriba un programa que convierte rumbos a azimutes

PROGRAMA

// RUMBO --> AZIMUT


// GJC
// 2004-7-18

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

float a,g,m,mm,s,r,ar;
int c;

void salida(void)
{
g=int(r);
mm=(r-g)*60;
m=int(mm);
s=int((mm-m)*60+.5);
printf("\nAzimut:");
printf("%3.0f",g);
printf ("");
printf("%2.0f",m);
printf ("");
printf("%2.0f",s);
printf ("");
}

main()
{
printf ("\n Cuadrante 1:NE 2: SE 3:SW 4:NW :");
scanf ("%i",&c);
printf ("\n Rumbo :");
scanf ("%f",&a);
g = int(a);
m = int((a-g)*100);
s = a*100-(int(a*100));
ar= (g+m/60+s/36);

switch( c )
{
case 1:
r=ar;
salida();
break;
case 2:
r= 180-ar;
salida();
break;
case 3:
r=180+ar;
salida();
break;
case 4:
r=360-ar;
salida();
break;
default:
printf ("\n Intente de nuevo");
}
}

PROBLEMAS PROPUESTOS

1. Escriba un programa que calcule el valor absoluto de un numero

2. Escriba un programa, dados los tres lados de un triangulo determinar si forma un


triangulo,

3. Escriba un programa que convierta las calificaciones alfanumricas A, B, C, D y E


en las respectivas numricas 5, 4, 3,2 y 1.

4. Se desea disear un programa que escriba los valores de los das de la semana en
funcin del valor de una variable del da introducido por teclado.

5. Modifique programa para convertir rumbos a azimutes para que convierte los
rumbos Norte, Este, Oeste y Sur
ESTRUCTURAS
DE CICLOS
5.1. Generalidades

A la hora de adelantarse en los conocimientos de programacin hay que disponerse a conocer las estructuras de
ciclos. Este es uno de los aspectos ms importantes de la programacin.

En condiciones normales, las sentencias se van ejecutando ordenadamente, y una sola vez cada una de ellas, hasta
llegar al final del programa. Sin embargo, en muchas ocasiones es necesario que algunas sentencias se ejecuten
repetidamente en determinado nmero de veces, constituyendo lo que se denomina Bucle

Este tipo de sentencias denominados iterativas, ciclos repetitivas, se ejecutan bajo el control de una condicin
impuesta, cuyo cumplimiento o no determina su repeticin.

En algunas ocasiones un bucle no se termina nunca porque nunca se cumple la condicin. Un bucle que nunca
termina se denomina un bucle infinito o sin fin. Los bucles sin fin no intencionados son perjudiciales para la
programacin y se deben evitar siempre.

C++ cuenta con tres sentencias iterativas:

While

Do While

For

5.2. While
While quiere decir mientras. Aqu se ejecuta el bloque de instrucciones mientras se cumpla la condicin impuesta
en while.

El formato del bucle while es siguiente:


while ( condicin )
{
bloque de instrucciones a ejecutar
}

EJEMPLO

// EJEMPLO while
// GJC
// 2004-7-18

#include <stdio.h>

main()
{
int c= 0;

while ( c<10 )
{
c++;
printf( "Ya voy por el %i, parar en el 10 \n", c );
}
}

Este programa imprime en pantalla los valores del 1 al 10. Cuando i=10 ya no se cumple la condicin. Una cosa
importante, si hubisemos cambiado el orden de las instrucciones a ejecutar:

PROGRAMA

// EJEMPLO while
// GJC
// 2004-7-18

#include <stdio.h>

main()
{
int c= 0;

while ( c<10 )
{
printf( "Ya voy por el %i, parar antes del 10 \n", c);
c++;
}
}

En esta ocasin se imprimen los valores del 0 al 9. Cuidado con esto, que a veces produce errores difciles de
encontrar.

5.3. Do While
La sentencia do while es una estructura de control de bucles en la que se realizan las sentencias del interior del
bucle mientras que se cumpla una condicin, es decir, la condicin sea verdadera.
El formato del bucle do-while es:

do
{
Instrucciones a ejecutar
} while ( condicin );

La diferencia entre while y do-while es que en este ltimo, la condicin va despus del conjunto de instrucciones a
ejecutar. De esta forma, esas instrucciones se ejecutan al menos una vez.

Su uso es similar al de while.

PROGRAMA

// EJEMPLO while
// GJC
// 2004-7-18

#include <stdio.h>

main()
{
int c= 1;

do
{
printf( "Ya voy por el %i, parar antes del 10 \n", c);
c++;
}
while ( c<10 );
}

5.4. For

Ejecuta el bucle encerrado entre ambas instrucciones tantas veces como sea necesario; hasta que la variable inicial
alcance el valor final, partiendo del valor inicial establecido y en incrementos sucesivos.
Si el valor inicial de la variable es menor que el valor final, los incrementos deben ser positivos ya que en caso
contrario la secuencia de instrucciones no se ejecutara. De igual modo si el valor inicial es mayor que el valor final,
el incremento debe ser en este caso negativo, es decir, decremento. Al incremento o decremento se le suele
denominar paso.

El formato del bucle for es el siguiente:

for ( dar valores iniciales ; condiciones ; incrementos )


{
conjunto de instrucciones a ejecutar en el bucle
}

Vamos a verlo con el siguiente ejemplo:


...
for ( i=0 ; i<100 ; i++ )
...

En este caso asignamos un valor inicial a la variable i . Ese valor es cero. Esa es la parte de dar valores iniciales.
Luego tenemos <100.

Esa es la parte condiciones. En ella ponemos la condicin es que i sea menor que 100, de modo que el bucle se
ejecutar mientras i sea menor que 100. Es decir, mientras se cumpla la condicin. Luego tenemos la parte de
incrementos, donde indicamos cunto se incrementa la variable.

Como vemos, el for va delante del grupo de instrucciones a ejecutar, de manera que si la condicin es falsa, esas
instrucciones no se ejecutan ni una sola vez.

Cuidado: No se debe poner un ";" justo despus de la sentencia for, pues entonces sera un bucle vaco y las
instrucciones siguientes slo se ejecutaran una vez.

EJEMPL0:

// EJEMPLO for
// GJC
// 2004-7-18
#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<100 ; i++ ); // Cuidado con este punto y coma
{
printf( "Topografia\n" );
}
}

Este programa slo escribir en pantalla

Topografia

una sola vez.

Tambin puede suceder que quieras ejecutar un cierto nmero de veces una sola instruccin (como sucede en
nuestro ejemplo). Entonces no necesitas las llaves "{}":

// EJEMPLO for
// GJC
// 2004-7-18

#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<10 ; i++ )
{
printf( "Topografia\n" );
}
}

o tambin:

// EJEMPLO for
// GJC
// 2004-7-18

#include <stdio.h>
void main()
{
int i;
for ( i=0 ; i<10 ; i++ )
printf( "Topografia\n" );
}

Vemos el resultado de los dos programas

Topografia
Topografia
Topografia
Topografia
Topografia
Topografia
Topografa
Topografa
Topografa
Topografa

Sin embargo, es mejor poner las llaves aunque slo haya una instruccin; a veces al aadir una segunda instruccin
ms tarde se te olvidan las comillas y no te das cuenta. Parece sencillo, pero muchas veces, cuando programas, son
estos los pequeos fallos los que te vuelven loco.

En otros lenguajes, como Basic, la sentencia for es muy rgida. En cambio en C++ es muy flexible. Se puede omitir
cualquiera de las secciones (inicializacin, condiciones o incrementos). Tambin se pueden poner ms de una
variable a inicializar, ms de una condicin y ms de un incremento. Por ejemplo, el siguiente programa sera
perfectamente correcto:

EJEMPLO:

// EJEMPLO for
// GJC
// 2004-7-18

#include <stdio.h>

main()
{
int i, j;

for( i=1, j=5 ; i<11 ; i++, j=j+5 )


{
printf( "\nHola " );
printf( " Esta es la lnea %i", i );
printf( ",j vale = %i", j );
}
}
Como vemos en el ejemplo tenemos ms de una variable en la seccin de inicializacin y en la de incrementos.
Tambin podamos haber puesto ms de una condicin. Los elementos de cada seccin se separan por comas. Cada
seccin se separa por punto y coma.

PROBLEMAS RESUELTOS

1. Calcular la suma de los diez primeros nmeros naturales.

// Numeros Naturales
// GJC
// 2004-07-18

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

int s, i;
main()
{
s=0;
i=0;
while(i<10)
{
i++;
s=s+i;
}
printf("Suma : %i ",s);
}

2. Escriba un programa para obtener la suma de los nmeros pares hasta 1000 inclusive.

// Numeros Naturales
// GJC
// 2004-07-18

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

int s,n;
main()
{
s=2;
n=4;
do
{
s=s+n;
n=n+2;
}
while(n<1000);
printf("Suma : %i",n);
}
3. Calcular el promedio de cinco notas (20% cada una) de N estudiantes

PROGRAMA

// NOTAS
// GJC
// 2004-07-18

#include <iostream.h>
#include <stdio.h>
#include <conio.h>
int i,n;
float a,b,c,d,e,f;

main()
{
printf("NUMERO DE ESTUDIANTES:");
scanf ("%i",&n);
for ( i=0; i<n; i++)
{
printf ("\nNota 1:");
scanf ("%f",&a);
printf ("\nNota 2:");
scanf ("%f",&b);
printf ("\nNota 3:");
scanf ("%f",&c);
printf ("\nNota 4:");
scanf ("%f",&d);
printf ("\nNota 5:");
scanf ("%f",&e);
f=(a+b+c+d+e)/5;
printf( "\nDefinitiva %3.2f", f );
}
}

4. Escriba un programa que calcule las proyecciones y coordenadas de un polgono abierto, sin ningn control a
partir de azimutes y distancias horizontales.

PROGRAMA

// Poligonal abierta
// GJC
// 2004-7-18
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#define pi 3.141592654

float a,g,m,s,ar,x,y;
float n,e,q,b,c,d,u;
int ne,i,j,r,z;

void angulo(void)
{
g = int(a);
m = int((a-g)*100);
s = a*100-(int(a*100));
ar= (g+m/60+s/36)*pi/180;
}

main()
{
printf ("\n POLIGONO ABIERTO");
printf ("\n Numero de estaciones :");
scanf ("%i",&ne);
printf ("\n Coordenadas iniciales");
printf ("\n Norte:");
scanf ("%f",&n);
printf ("\n Este :");
scanf ("%f",&e);
for (j=0; j<ne; j++)
{
printf ("\n Est %i",j+1);
printf ("\n # DE RADIACIONES:");
scanf ("%i",&r);
if (r>0)
{
for (i=0;i<r;i++)
{
z++;
printf ("\n Rad %i",z);
printf ("\n Azimut:");
scanf ("%f",&a);
printf ("\n DH :");
scanf ("%f",&b);
angulo();
c=ar;
x=b*cos(c);
y=b*sin(c);
q=n+x;
u=e+y;
printf( "\nPM: %5.2f", x);
printf( "\nPP: %5.2f", y);
printf( "\nN : %5.2f", q);
printf( "\nE : %5.2f", u);
printf( "\n_________________");
}
}
printf ("\n Azimut:");
scanf ("%f",&a);
printf ("\n DH :");
scanf ("%f",&d);
angulo();
c=ar;
x=d*cos(c);
y=d*sin(c);
n=n+x;
e=e+y;
printf( "\nPM: %5.2f", x);
printf( "\nPP: %5.2f", y);
printf( "\nN : %5.2f", n);
printf( "\nE : %5.2f", e);
printf( "\n_________________");
}
printf( "\nfin");
}

5. Escriba un programa que calcule: El permetro, error de cierre y grado de precisin.

PROGRAMA

// Grado de Precision
// GJC
// 2004-7-18
#include <iostream.h>
#include <stdio.h>
#include <math.h>
#define pi 3.141592654

float a,g,m,s,ar,x,y,f;
float c,d,p,gp;
int ne,j;

void angulo(void)
{
g = int(a);
m = int((a-g)*100);
s = a*100-(int(a*100));
ar= (g+m/60+s/36)*pi/180;
}

main()
{
printf ("\n Grado de Precision ");
printf("\n_____________________");
printf ("\n Numero de estaciones :");
scanf ("%i",&ne);
for (j=0; j<ne; j++)
{
printf ("\n Est %i",j+1);

printf ("\n Azimut:");


scanf ("%f",&a);
printf ("\n DH :");
scanf ("%f",&d);
angulo();
c=ar;
x=x+d*cos(c);
y=y+d*sin(c);
p=p+d;

}
f=sqrt(pow(x,2)+pow(y,2));
gp=p/f;
printf( "\nPerimetro: %8.2f", p);
printf( "\nEc : %8.2f", f);
printf( "\nGP = 1/ %8.2f", gp);
printf( "\n_____________________");
}

PROBLEMASPROPUESTOS

1. Escriba un programa que genere una tabla taquimtrica.

2. Escriba un programa que calcule los azimutes de una poligonal a partir del azimut de la lnea 1-2 y todos
sus ngulos horarios.

3. Modifique el programa de grado de precisin para que trabaje con ngulos por deflexiones.

4. Escriba un programa que realice un ajuste angular de una poligonal por deflexiones

5. Modifique al programa que calcula: El permetro, error de cierre y grado de precisin, para que trabaje
con ngulos horarios
ESTRUCTURA
DE DATOS
6.1 Definicin

Es una coleccin de datos, y la forma en que estn relacionados unos con otros determina el
tipo de estructura.

Clasificacin

C++ soporta las siguientes estructuras

Formacin
Vectores ( unidimensional )
Matrices ( Bidimensional )
Tridimensional

6.1. Formaciones

Son una coleccin o conjunto de posiciones de memoria que tiene el mismos nombre de la variable, es decir,
un conjunto de datos numricos o de cadena que tiene el mismo nombre. Una formacin puede ser de una
dimensin (vector) o de varias dimensiones (matrices).

6.1.1. Formaciones Unidimensionales (Vectores)

Es una lista de un nmero finito de datos del mismo tipo, que se referencia por un nombre comn y un
nmero de orden que son consecutivos 1,2,3,4,...n.
Las variables que representan las formaciones se denominan variables de subndice. Cada elemento puede
tener asignado un valor y se puede manipular de igual forma que cualquier otra variable.

La dimensin de un vector es el nmero de elementos que componen el vector, una variable de subndice
tiene el formato general.

Tipo Nombre [Numero de Elementos];

Ejemplo:

int edad[5];
float sueldo [20];
char iniciales [14];

Representacin de un vector

Caractersticas

Todo los elementos son del mismo tipo ( numrico o alfanumrico)


El vector tiene un nombre nico y los elementos estn ordenados de acuerdo al subndice

6.1.2. Formaciones Bidimensionales (Matriz)

Es una formacin con filas y columnas que tiene dos dimensiones. Como antes se utilizaron variables
subindicadas para representar los elementos individuales de los arreglos; en el caso de una matriz el primer
subndice representar la fila y el segundo subndice indicar la columna, en forma flota A [3] [4] representa
el elemento de la cuarta fila, y la tercera columna del matriz A; es ms se har referencia a una matriz que
tenga m filas y n columnas como una matriz m x n.

Tipo Nombre [Numero de Filas] [Numero de Columnas];

Ejemplo:

int matriz [4] [5];


char pantalla [25] [80];
Representacin de una matriz

PROBLEMASRESUELTOS

1. Escriba un programa que lea e imprima un vector

// Vector
// GJC
// 2004-8-01

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

float a[6];
int i;

main()
{
// entrada
for (i=1; i<6; i++)
{
printf ("\n A [%i] :",i);
scanf ("%f",&a[i]);
}
// Salida
for (i=1; i<6; i++)
{
printf ("\n A[%i] %f",i,a[i]);
}
}

2. Escriba un programa que lea una matriz y la imprima

// matriz
// GJC
// 2004-08-02

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

float a[4][4];
int i,j;

main()
{
// entrada
for (i=1; i<4; i++)
{
for (j=1; j<4; j++)
{
printf ("\n A[%i][%i] :",i,j);
scanf ("%f",&a[i][j]);
}
}
// Salida
for (i=1; i<4; i++)
{
for (j=1; j<4; j++)
{
printf ("\n A[%i][%i] %2.3f",i,j,a[i][j]);
}
}
}

3. Escriba un programa que calcule un rea por coordenadas

// Area
// GJC
// 2004-08-04

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

float n[100], e[100];


int i,j,a;
float f,g,h,c;

main()
{
// entrada
printf("\n rea ( mximo 100 puntos)");
printf("\n Numero de puntos:");
scanf ("%i",&a);
for (i=0; i<a; i++)
{
j=i+1;
printf ("\n Punto %i",j);
printf ("\n Norte :");
scanf ("%f",&n[i]);
printf ("\n Este :");
scanf ("%f",&e[i]);
}
n[a+1]=n[0];
e[a+1]=e[0];

for (i=0; i<a; i++)


{
f+=(n[i]+n[i+1])*(e[i]-e[i+1]);
}
g=abs(f/2);
h=g/10000;
c=g/6400;
printf("\n Area ");
printf("\n Hectareas: %5.4f",h);
printf("\n Cuadras : %5.4f",c);
}

4. Escriba un programa que ajuste una poligonal por le mtodo de la brjula

/ Mtodo de la Brjula
// GJC
// 2004-08-05

#include <iostream.h>
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define pi 3.141592654

float az[100], d[100];


int i,j,ne;
float a,g,m,s,ar,sm,sp,ec,dg,n,e;
float p,pm,pp,cpm,cpp,mc,pc;
float cm,cp,pmc,ppc;
char c;

void angulo(void)
{
g = int(a);
m = int((a-g)*100);
s = a*100-(int(a*100));
ar= (g+m/60+s/36)*pi/180;
}

main()
{
// entrada
printf("\n Metodo de la Brujula");
printf("\n Numero de Estaciones:");
scanf ("%i",&ne);
clrscr();
for (i=0; i<ne; i++)
{
clrscr();
j=i+1;
printf ("\n Estacion %i",j);
printf ("\n Distancia :");
scanf ("%f",&d[i]);
printf ("\n Azimut :");
scanf ("%f",&a);
angulo();
az[i]=ar;
sm+=d[i]*cos(az[i]);
sp+=d[i]*sin(az[i]);
p+=d[i];
}

ec=sqrt(pow(sm,2)+pow(sp,2));
dg=p/ec;
printf("\n ec : %5.2f",ec);
printf("\n GP = 1/ %5.2f",dg);
cm=-sm/p;
cp=-sp/p;
printf ("\n Norte :");
scanf ("%f",&n);
printf ("\n Este :");
scanf ("%f",&e);

for (i=0; i<ne; i++)


{
pm=d[i]*cos(az[i]);
pp=d[i]*sin(az[i]);
cpm=cm*d[i];
cpp=cp*d[i];
pmc=pm+cpm;
ppc=pp+cpp;
n=n+pmc;
e=e+ppc;
clrscr();
printf("\n PM : %5.2f",pm);
printf("\n PP : %5.2f",pp);
printf("\n CPM : %5.2f",cpm);
printf("\n CPP : %5.2f",cpp);
printf("\n PMC : %5.2f",pmc);
printf("\n PPC : %5.2f",ppc);
printf("\n Norte : %5.2f",n);
printf("\n Este : %5.2f",e);
printf("\n <PRESI0NE UNA TECLA PARA CONTINUAR>");
cin.get(c);
}
printf("\n Fin");
}

PROBLEMASPROPUESTOS

1. Escriba un programa que sume los elementos de las filas y las columnas de una
matriz dada.

2. Elabore un programa que mltiple dos matrices.

3. Escriba un programa que ajuste una poligonal por el mtodo arbitrario.


4. Elabore un programa que ajuste un poligonal por el mtodo del transito

5. Escriba un programa que calcule el volumen en corte o lleno de una cuadricula


BIBLIOGRAFIA
Aguilar Joyanes L., Lus Rodrguez Baena, Matilde Fernndez Azuela. Fundamentos de
Programacin Libro de Problemas, McGraw-Hill. Espaa. 1996. 392 Pgs.

Aguilar Joyanes L. y Rodrguez Castran H. C++, McGraw-Hill. Espaa. 1999. 367 Pgs.

Aguilar Joyanes L. y Rodrguez Castran H. Microsoft Visual Basic 6.0, McGraw-Hill.


Espaa. 1999. 318 Pgs.

Anderson James M., Mikhail Edward M., Introduccin a la Topografa. McGraw Hill.
Mxico. 1988. 753 Pgs.

Bannister, A. , Raymond. S. y Baker R. Tcnicas Modernas en Topografa. 7a edicin.


Alfaomega , Mxico 2002. 550 Pgs.

Davis, Raymond E., Foote, Francis S. and Kelly Joe W.. Surveying: Theory and Practice. 5th.
Ed.. McGraw-Hill Co.. New York 1966. 1096 pgs.

Garca de Jalon de la Fuente Javier y otros. Aprenda lenguaje ANSI C como si estuviera en
primero. Universidad de Navarra, Espaa. 1998. 71 pgs.

Garca de Jalon de la Fuente Javier y otros. Aprenda lenguaje C++ como si estuviera en
primero. Universidad de Navarra, Espaa. 1998. 83 pgs.

Gmez G., Gilberto. Jimnez C. Gonzalo. Topografa Analtica. Armenia. 2003. 223 Pgs.

Gmez Montoya. Carlos Eduardo y Julin Esteban Gutirrez Posada, C++ Volumen I:
Fundamentos. POL Editores, Armenia 2001, 252 Pgs.

Jimnez Cleves Gonzalo, Informtica en Topografa. Universidad del Quindo, Armenia (Q),
1990. 114 Pgs.
Papas Chris H., William H. Murray, Visual C++ 6.0. McGraw-Hill. Mxico. 1999. 945 Pgs.

Wolf, Paul R.. y Brinker, Russell C. Topografa. 9a. Ed.. Alafomega Mxico. 1997. 834 Pgs.

Zieske Karl. Principios Bsicos de Topografa. Leyca Geosystems. Switzerland. 2000. 35


Pgs.

www.leica.com

www.topcon.com

www.sokkia.com

www.profsurv.com

www.elagrimensor.com.ar

Você também pode gostar