C++ con Aplicaciones en Topografia

Page 1

Universidad del Quindío

Facultad de Ingeniería Programa de Topografía Armenia 2004


Con Aplicaciones en Topografía

Gonzalo Jiménez C. Profesor Programa de Topografía Universidad del Quindío


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 Bibliografía……………………………………………………………………61


Gonzalo Jiménez Cleves Profesor Universidad del Quindío Facultad de Ingeniería Topógrafo Universidad del Quindío Especialista en Computación para la Docencia Universidad del Quindío - Universidad Antonio Nariño Magíster en Ingeniería 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 estándar C++ se publico en 1995. En la actualidad, el C++ es un lenguaje versátil, 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 solución de un problema: Para resolver es problema es necesario tener en cuenta lo siguiente

1.

Describir el problema

2.

Analizar el problema

3.

Diseñar la lógica general del programa

4.

Diseñar la 1ógica 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 Numérico: Símbolo empleado para representar un dígito decimal y con los cuales se puede efectuar operaciones aritméticas.

Alfanuméricos: Conjunto de letras o números, puntuación o carácter 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 número de letras y dígitos. El C++ tiene reservadas varias palabras que no pueden ser usadas como nombres de variables.

Variables Numéricas Cadena de Caracteres

Variables arreglo Numérico

CONSTANTES

De Cadena de


Son aquellos valores que no cambian al resolver un problema. Las constantes numéricas pueden contener: Dígitos, un signo, punto decimal y E (Notación exponencial, E significa potencia 1 de 10).

OPERADORES Aritméticos Suma

+

Multiplicación División División entera (Resto) Relaciónales Igual a Diferente Menor que Mayor que Menor igual Mayor igual

Resta *

/ % == != < > <= >=

Lógicos Negación Y Lógica O Lógica

! && ││

ARITMÉTICOS EL C++ proporciona las ocho operaciones aritméticas Operador + * / %

Ejemplo 4+8 5–3 2*3 8/2 5%2

Resultado 12 2 6 4 1


RELACIONALES

Una expresión relacional, o condición consta de dos expresiones (o bien ambas numéricas o ambas de cadena) que se separan por un operador relacional. Símbolo < > >= <= !=

Ejemplo 4<2 3>1 5 >= 5 4 <= 3 3!=3

Resultado Falso Verdadero Verdadero Falso Falso

LOGICOS En ocasiones se necesita expresar una condición que implica más de dos cantidades o una relación más compleja que la simple igualdad u orden.

Condición Condición 2 1 Verdad Verdad Verdad Falso Falso Verdad Falso Falso

&&

||

Verdad Falso Falso Falso

Verdad Verdad Verdad Falso

Ejemplo Condición (2>1) && (3>2) (2>1) && (3=2) (2<1) && (2=2) (2=3) && (3<1) (2=2) || (3>4) (3>1) || (4=2) (2=1) || (3>2) (2=7) || (1>2)

Valor Verdad Falso Falso Falso Verdad Verdad Verdad Verdad

OPERADORES DE CADENA DE CARACTERES (+) Las cadenas de caracteres pueden ser concatenados usando el signo +.


Operación “ingeniería” + “topográfica”

Resultado Ingeniería topográfica

JERARQUIA DE LAS OPERACIONES

Las operaciones se efectúan de izquierda a derecha cuando el orden de precedencia es idéntico. Prioridad 1 2 3 4 5

Operador () Funciones */ % +-

Ejemplo Evaluar la siguiente expresión

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 Conversión de expresiones algebraicas a C++

Expresiones algebraicas c D X  c  r

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


C= (D*D)/(2*L)

D2 2L e S  n A  B  C V  3  N CP  L P K w  S  3 C 

S = E / SQR(N) V=(A+B+C)/3 CP= DN/P*L W= S+ K/3

Al terminar de convertir una expresión algebraica con paréntesis, cuente el número de paréntesis a la derecha e izquierda; deben ser iguales.

EXPRESIÓN DE ASIGNACIÓN

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 cálculo. Su forma general es:

Variable = Expresión aritmética;

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 lógicas (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 aritméticas en expresiones en Basic

a  b  c 2

S 

A 

s(s  a)(s  b)(s  c)

D  KSSen2

E  Vm  Vv

So 

hcr

V TV r

D   CR   100 

2

d) Evaluar paso a paso las siguientes expresiones de asignación.


A B C D E

= = = = =

(3*4) +(9/3+5-3) (2+7*(2-3)+(8+5)+1.23 2+8*(1/3)+7.3 (5*(4+2)-2) +2.5/2 -2*6+(2-3+(5+4)/2+7)/3+(2/5)*5

e) Algunas de las siguientes expresiones en C++ poseen errores. Encuéntrelos y escriba en forma correcta cada expresión. 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 continuación 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 o la lista de los errores.

, aparecerรก un pantalla con los resultados

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 acción se ejecuta en orden estricto una detrás 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 función main Funciones definidas por el programador Comentarios del programa

La estructura general de un programa es la siguiente

#include directivas del preprocesador #define macros del procesador Declaraciones globales - Funciones - Variables Función 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 continuación de ella y su contenido lo inserte en la posición donde se encuentre dicha directiva. A continuación se presenta una lista de las directivas mas conocidas con una breve descripción Directiva STADIO.H STDLIB.H MATH.H STRING.H IOSTREAM.H IO.H CONIO.H CTYPE.H TIME.H

Descripción Rutinas de flujos para C Rutinas de biblioteca estándar Funciones matemáticas Funciones de cadena Rutinas de flujos para C++ Tratamiento de archivos E/S a través del teclado y el puerto Funciones de caracteres 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 char

: Cantidad entera : Carácter


float : Número de coma flotante (con punto decimal y/o exponente) double : Número de coma flotante de doble precisión (más 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 declaración. Ejemplo: const int a=1;

C++ ofrece también otro método 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 auto break case catch char class const continue default delete do

double else enum exterm float for friend goto if inline int long

2.2. Entrada de Datos

new operator private protected public register return short signed sizeof static struct

switch template this throw try typedef union unsigned virtual void volatile while


Son las instrucciones que activa en C++ la función de entrada. Estas instrucciones asigna a las variables indicadas los valores leídos 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 instrucción 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 Quindío"; } Yo estudio en la Universidad del Quindío Veamos el mismo programa en dos reglones usando \n para una nueva línea #include <iostream.h> main() { cout << "Yo estudio en la\nUniversidad del Quindio"; } Yo estudio en la Universidad del Quindío

2.3.2. Printf Es muy similar a cout con más parámetros. Sirve para presentar información 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 línea #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 función borra la pantalla y además sitúa el cursor en la posición (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 posición (x,y), primero se pone la columna (x) y luego la fila (y). La esquina superior izquierda es la posición (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 instrucci贸n y el texto siguiente no se ejecutan. Cumple la funci贸n 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 l铆nea 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 centímetros 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 tensión en una medición 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 geométrica y la altura (diferencia de nivel). Calculo por le método exacto y aproximado la distancia horizontal.

7.

Escriba un algoritmo que la suma de los ángulos internos de un polígono de n lados.

8.

El siguiente programa posee varios errores, encuéntrelos y corríjalos #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 función sirve para realizar tareas concretas y simplificar el programa. Nos sirve para evitar tener que escribir el mismo código varias veces. Pueden ser ejecutadas cuantas veces sea necesario. Las funciones son de una gran utilidad en los programas. Nos ayudan a que sean más legibles y más cortos. Con ellos estructuramos mejor los programas. Sin embargo nosotros también 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 función main.

3.1.1. Definición de una función Una función tiene el siguiente formato:

tipo_de_variable nombre_de_la_función( argumentos ) { definición de variables; cuerpo de la función; return 0; }

Empecemos por el nombre_de_la_función. Para el nombre no se pueden usar mas que letras, números y el símbolo '_'. No se pueden usar ni acentos ni espacios. Además el nombre de la función debe empezar por una letra, no puede empezar con un número. El


nombre de la función se usa para llamarla dentro del programa. Un función no se puede declarar dentro de otra. El tipo_de_variable: Cuando una función 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 más adelante). El valor que devuelve la función suele ser el resultado de las operaciones que se realizan en la función, o si han tenido éxito o no. También podemos usar el tipo void. Este nos permite que podamos devolver cualquier tipo de variable o ninguna. Definición de variables: Dentro de la función podemos definir variables que sólo tendrán validez dentro de la propia función. Si declaramos una variable en una función no podemos usarla en otra. Cuerpo de la función: Aquí es donde va el código de la función. Return: Antes hemos indicado que la función devuelve un valor. La sentencia return se usa para esto. El dato que se pone después 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(expresión) 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 función. Deben ir separados por una coma. Cada variable debe ir con su tipo. En los ejemplos a continuación se llama a la función 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 convirtรกmoslo 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 matemรกticas


Las funciones matemáticas se encuentran en <math.h>, algunas están en <stdlib.h>, ya se indicará en cada una. Con ellas podemos calcular raíces, exponentes, potencias, senos, cosenos, redondeos, valores absolutos y logaritmos.

Funciones abs()

Descripción 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 números ceil(), ceill() El mayor valor entero cos(), cosl() Coseno cosh(),Coshl() Coseno hiperbólico exp(), exp.() Valor exponencial fabs(), fabsl() Valor absoluto floor() floorl() Valor mas pequeño 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 hiperbólico tan(), tanl() Tangente tanh(), tanhl() Tangente hiperbólica 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 planimetrĂ­a.

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 proyecci贸n meridiana y proyecci贸n 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 polígono 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 ejecución. Las más utilizadas se agrupan en dos: en las que permiten dos opciones o las que permiten más de dos según ciertas condiciones. 4.1.1. Operador Condicional El operador condicional es un operador de tres operandos que tiene la siguiente forma general. (Condición) ? (instrucción 1) : (instrucción 2); Si se cumple la condición se ejecuta la instrucción 1 y si no se ejecuta la instrucción 2.

EJEMPLO // OPERADOR CONDCIONAL // GJC // 2004-07-12 #include <stdio.h> main() {


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

4.1.2. Sentencia if La palabra if significa si (condicional), pero supongo que esto ya lo sabías. Su formato es el siguiente: if ( condición ) { Instrucciones a ejecutar }

Cuando se cumple la condición entre paréntesis se ejecuta el bloque inmediatamente siguiente al if (bloque instrucciones a ejecutar). Si no se cumple prosigue en la línea siguiente.

EJEMPLO // EJEMPLO DE IF // GJC // 2004-07-12 #include <stdio.h> main() { int num; printf( "Introduzca un número:" ); scanf( "%i", &num ); if (num >10) { printf( "El número es MAYOR QUE 10 \n" ); }


} Introduzca un número: 11 El número es MAYOR QUE 10

4.1.3. Sentencia if … else Esta sentencia permite realizar un bifurcación, ejecutando una parte u otra del programa según cumpla o no cierta condición. La forma general es la siguiente: if ( condición ) { bloque que se ejecuta si se cumple la condición; } else { bloque que se ejecuta si no se cumple la condición; }

EJEMPLO // EJEMPLO DE if... else // GJC // 2004-07-12 #include <stdio.h> main() { int a; int b; printf( "Introduzca un número " ); scanf( "%i", &a ); if ( a<10 ) { b = 2; } else { b = 4;


} printf ( "'b' toma el valor: %i\n", b ); } Introduzca un número: 10 ´b´ toma el valor: 4 Corriendo este programa otra vez Introduzca un número: 5 ´b´ toma el valor: 2

4.1.3. Sentencia if … else Múltiple Esta sentencia permite realizar una ramificación múltiple, ejecutando una entre varias partes del programa según se cumpla entre n condiciones. La forma general es la siguiente: if ( condición 1 ) { bloque que se ejecuta si se cumple la condición 1; } else if (condición 2) { bloque que se ejecuta si se cumple la condición 2; } else if (condición 3) { bloque que se ejecuta si se cumple la condición 3; } else if (…) { bloque que se ejecuta si se cumple la condición n; }

PROGRAMA // EJEMPLO DE if... else múltiple // GJC // 2004-07-12 #include <stdio.h> main() {


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

4.1.4. Sentencia switch Estas sentencias son una estructura de control que permite la selección de un conjunto de acciones a partir de una lista de diferentes opciones. La instrucción if permite solo dos alternativas, mientras switch permite más de dos.Su forma general es: switch ( variable ) { case opción 1: Código a ejecutar si la variable tiene el valor de la opción 1; break; case opción 2: Código a ejecutar si la variable tiene el valor de la opción 2; break; default: Código 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 número: " ); 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 número: 2 Es un 2 Otra ejecución Introduzca un número: 8 No es ni 1, ni 2, ni 3

PROBLEMAS RESUELTOS 1. Dada un nota de una evaluación 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 ( taquimetría)

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 alfanuméricas A, B, C, D y E en las respectivas numéricas 5, 4, 3,2 y 1. 4. Se desea diseñar un programa que escriba los valores de los días de la semana en función del valor de una variable del día 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 programación hay que disponerse a conocer las estructuras de ciclos. Este es uno de los aspectos más importantes de la programación. 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 número de veces, constituyendo lo que se denomina Bucle Este tipo de sentencias denominados iterativas, ciclos repetitivas, se ejecutan bajo el control de una condición impuesta, cuyo cumplimiento o no determina su repetición. En algunas ocasiones un bucle no se termina nunca porque nunca se cumple la condición. Un bucle que nunca termina se denomina un bucle infinito o sin fin. Los bucles sin fin no intencionados son perjudiciales para la programación 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 condición impuesta en while.

El formato del bucle while es siguiente:


while ( condición ) { 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 condición. Una cosa importante, si hubiésemos 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 ocasión se imprimen los valores del 0 al 9. Cuidado con esto, que a veces produce errores difíciles 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 condición, es decir, la condición sea verdadera.


El formato del bucle do-while es: do { Instrucciones a ejecutar } while ( condición ); La diferencia entre while y do-while es que en este último, la condición va después 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 ejecutaría. 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 condición 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 condición. Luego tenemos la parte de incrementos, donde indicamos cuánto se incrementa la variable. Como vemos, el for va delante del grupo de instrucciones a ejecutar, de manera que si la condición es falsa, esas instrucciones no se ejecutan ni una sola vez. Cuidado: No se debe poner un ";" justo después de la sentencia for, pues entonces sería un bucle vacío y las instrucciones siguientes sólo se ejecutarían 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 sólo escribirá en pantalla Topografia una sola vez.

También puede suceder que quieras ejecutar un cierto número de veces una sola instrucción (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 también: // 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 Topografía Topografía Topografía Topografía Sin embargo, es mejor poner las llaves aunque sólo haya una instrucción; a veces al añadir una segunda instrucción más tarde se te olvidan las comillas y no te das cuenta. Parece sencillo, pero muchas veces, cuando programas, son estos los pequeños fallos los que te vuelven loco. En otros lenguajes, como Basic, la sentencia for es muy rígida. En cambio en C++ es muy flexible. Se puede omitir cualquiera de las secciones (inicialización, condiciones o incrementos). También se pueden poner más de una variable a inicializar, más de una condición y más de un incremento. Por ejemplo, el siguiente programa sería 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 línea %i", i ); printf( ",j vale = %i", j ); } }


Como vemos en el ejemplo tenemos más de una variable en la sección de inicialización y en la de incrementos. También podíamos haber puesto más de una condición. Los elementos de cada sección se separan por comas. Cada sección se separa por punto y coma.

PROBLEMAS RESUELTOS 1. Calcular la suma de los diez primeros números 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 números 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 polígono abierto, sin ningún 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 per铆metro, error de cierre y grado de precisi贸n.

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_____________________"); }

PROBLEMAS PROPUESTOS 1.

Escriba un programa que genere una tabla taquimétrica.

2.

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

3.

Modifique el programa de grado de precisión 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 perímetro, error de cierre y grado de precisión, para que trabaje con ángulos horarios


ESTRUCTURA DE DATOS 6.1 Definición Es una colección de datos, y la forma en que están relacionados unos con otros determina el tipo de estructura.

Clasificación C++ soporta las siguientes estructuras

Formación

  

Vectores ( unidimensional ) Matrices ( Bidimensional ) Tridimensional

6.1. Formaciones Son una colección o conjunto de posiciones de memoria que tiene el mismos nombre de la variable, es decir, un conjunto de datos numéricos o de cadena que tiene el mismo nombre. Una formación puede ser de una dimensión (vector) o de varias dimensiones (matrices).

6.1.1. Formaciones Unidimensionales (Vectores) Es una lista de un número finito de datos del mismo tipo, que se referencia por un nombre común y un número de orden que son consecutivos 1,2,3,4,...n.


Las variables que representan las formaciones se denominan variables de subíndice. Cada elemento puede tener asignado un valor y se puede manipular de igual forma que cualquier otra variable. La dimensión de un vector es el número de elementos que componen el vector, una variable de subíndice tiene el formato general. Tipo Nombre [Numero de Elementos]; Ejemplo: int edad[5]; float sueldo [20]; char iniciales [14]; Representación de un vector

Características  

Todo los elementos son del mismo tipo ( numérico o alfanumérico) El vector tiene un nombre único y los elementos están ordenados de acuerdo al subíndice

6.1.2. Formaciones Bidimensionales (Matriz) Es una formación 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 subíndice representará la fila y el segundo subíndice indicará la columna, en forma flota A [3] [4] representa el elemento de la cuarta fila, y la tercera columna del matriz A; es más 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];


Representación de una matriz

PROBLEMAS RESUELTOS

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 ( máximo 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 método de la brújula / Método de la Brújula // 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"); }

PROBLEMAS PROPUESTOS

1. Escriba un programa que sume los elementos de las filas y las columnas de una matriz dada. 2. Elabore un programa que múltiple dos matrices. 3. Escriba un programa que ajuste una poligonal por el método arbitrario.


4. Elabore un programa que ajuste un poligonal por el mĂŠtodo del transito 5. Escriba un programa que calcule el volumen en corte o lleno de una cuadricula


BIBLIOGRAFIA Aguilar Joyanes L., Luís Rodríguez Baena, Matilde Fernández Azuela. Fundamentos de Programación Libro de Problemas, McGraw-Hill. España. 1996. 392 Págs. Aguilar Joyanes L. y Rodríguez Castran H. C++, McGraw-Hill. España. 1999. 367 Págs. Aguilar Joyanes L. y Rodríguez Castran H. Microsoft Visual Basic 6.0, McGraw-Hill. España. 1999. 318 Págs. Anderson James M., Mikhail Edward M., Introducción a la Topografía. McGraw Hill. México. 1988. 753 Págs. Bannister, A. , Raymond. S. y Baker R. Técnicas Modernas en Topografía. 7a edición. Alfaomega , México 2002. 550 Págs. Davis, Raymond E., Foote, Francis S. and Kelly Joe W.. Surveying: Theory and Practice. 5th. Ed.. McGraw-Hill Co.. New York 1966. 1096 págs. García de Jalon de la Fuente Javier y otros. Aprenda lenguaje ANSI C como si estuviera en primero. Universidad de Navarra, España. 1998. 71 págs. García de Jalon de la Fuente Javier y otros. Aprenda lenguaje C++ como si estuviera en primero. Universidad de Navarra, España. 1998. 83 págs. Gómez G., Gilberto. Jiménez C. Gonzalo. Topografía Analítica. Armenia. 2003. 223 Págs.

Gómez Montoya. Carlos Eduardo y Julián Esteban Gutiérrez Posada, C++ Volumen I: Fundamentos. POL Editores, Armenia 2001, 252 Págs. Jiménez Cleves Gonzalo, Informática en Topografía. Universidad del Quindío, Armenia (Q), 1990. 114 Págs.


Papas Chris H., William H. Murray, Visual C++ 6.0. McGraw-Hill. México. 1999. 945 Págs. Wolf, Paul R.. y Brinker, Russell C. Topografía. 9a. Ed.. Alafomega México. 1997. 834 Págs. Zieske Karl. Principios Básicos de Topografía. Leyca Geosystems. Switzerland. 2000. 35 Págs. www.leica.com www.topcon.com www.sokkia.com www.profsurv.com www.elagrimensor.com.ar


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.