Algoritmos y su Codificación en C++. Volumen 1
César Liza Avila
INTRODUCCION
Este libro nace con la idea de servir como texto introductorio a un curso de
programación y contiene características importantes dignas de resaltar que lo diferencia
de otros. En los algoritmos contenidos en él, utilizamos los conocimientos
previos que trae el estudiante para enlazarlo de manera efectiva con las
técnicas de programación de computadoras bajo un enfoque estrictamente lógico.
Contiene abundantes ejemplos divididos por temas en donde la complejidad va
gradualmente en aumento, con explicaciones detalladas de la lógica utilizada,
diagramas Nassi-Schneiderman (N/S)
y codificación en C++.
Sus 109 problemas resueltos
y 121 propuestos hace
que esta obra sea eminentemente
práctica y por la manera como está estructurado el libro podrá
detenerse en cualquier momento, para reflexionar sobre lo aprendido y tomar un
merecido descanso con la certeza que al retomar su lectura no habrá perdido la
secuencia del mismo.
Hemos elegido el lenguaje de
programación C++, para codificar los algoritmos, por que hoy
más que nunca cobra vigencia. Prácticamente todo software comercial está
escrito en él, y provee de una visión muy profunda de los fundamentos de
programación y del funcionamiento básico de las computadoras, sin llegar a
tener la complejidad de un lenguaje ensamblador. Para la lectura de esta obra,
no se requieren conocimientos de C++, pues se utilizan unas pocas sentencias.
Todos los programas aquí mostrados se ven parecidos. Esto ha sido
deliberadamente planificado, evitando escribir códigos más complejos y óptimos,
así como la utilización de algunas funciones y particularidades proporcionadas
por el C++, con el objeto de darle claridad a los programas y centrar la
atención del estudiante en la lógica antes que en detalles de programación. Se
recomienda probar todos los programas para que este texto resulte efectivo.
La importancia del estudio de
Algoritmos radica en que es el punto de entrada al fascinante mundo de la
programación de computadoras. Al implementar algoritmos,
utilizamos nuestros conocimientos en diversas áreas, para resolver problemas,
estructurándolos de tal manera que podamos establecer una serie de pasos para
llegar a su solución. Aquí es fundamental nuestra formación matemática, pues
sin ella careceremos de las visión para plantear problemas de manera lógica,
así como de los métodos de solución.
Los programadores con experiencia no suelen construir diagramas N/S. Sin
embargo, al plantear un problema, si estructuran una serie de pasos para
resolverlo. De alguna manera han adquirido la suficiente destreza para hacerlo
sobre la marcha y tienen una idea lo suficientemente clara antes de sentarse a
programar. Esto de ninguna manera es recomendable para el novato y le es
totalmente imprescindible la utilización de alguna herramienta como los
diagramas N/S para plantear la solución a un problema dado.
Recuerde siempre que la programación de computadoras requiere de especiales
destrezas y sobre todo rigidez matemática, pues nada puede dejarse al azar. En
computadoras, absolutamente todo debe estar debidamente estructurado. Sin
embargo, un problema puede ser resuelto de diversas maneras, cada una mejor que
otra, así que la solución de problemas mediante algoritmos y la programación de
computadoras, se convierte en un arte, que se de desarrolla mejor practicando y
apoyándose en ejemplos descritos adecuadamente.
Esperamos que este pequeño aporte cumpla con el objetivo propuesto, así como
que los problemas presentados le sean de utilidad práctica, y contribuyan en su
formación profesional y humana. Le rogamos que cualquier crítica, sugerencia, o
inquietud, la dirija a la siguiente dirección electrónica:
creadores@hotmail.com, que gustosos la responderemos con el ánimo de mejorar en
futuras ediciones.
César Liza Avila
INDICE
1.
La estructura secuencial ......................................15
1.1. Intercambio de valores
1.2. Número de apretones de mano
1.3. Suma de los n primeros números naturales
1.4. Suma de los cuadrados de los n primeros números naturales
1.5. Suma de los cubos de los n primeros números naturales
1.6. Suma de áreas de todos los cuadrados formados uniendo los puntos medios de
sus lados
1.7. Area de un rombo de diagonales conocidas
1.8. Volumen de un cilindro recto
1.9. Area total de un cilindro recto
1.10. Area de un triángulo inscrito en una circunferencia
1.11. Area de un triángulo en función del semiperímetro
1.12. Hipotenusa de un triángulo rectángulo
1.13. Teorema del coseno
1.14. Distancia entre 2 puntos
1.15. Convierte complejo c = a + b i, a coordenadas polares
1.16. Monto a devolver por un capital prestado
1.17. Ley de senos
1.18. Conversión de grados sexagesimales a centesimales y radianes
1.19. Conversión del sexagesimal UºV'W" a grados, minutos y segundos
centesimales
1.20. Conversión de grados Celsius a Farenheit, Kelvin y Rankine
1.21. Conversión de ºF, ºK y ºR a Celsius.
2.
La estructura condicional simple .........................45
2.1. Solución de ecuaciones de primer grado
2.2. Costo de una llamada telefónica
2.3. Costo de una llamada telefónica en horario reducido y normal
2.4. Cómo es un número respecto a otro
2.5. Ordena de mayor a menor 3 números
2.6. Mayor valor de 3 números
2.7. Raíces reales de una ecuación de segundo grado
2.8. Año bisiesto
2.9. Dados q, r y s, y determine si q es múltiplo de r y s
2.10. Valor numérico de y = (x -3)/(x2 - 25)
2.11. Valor numérico de una expresión
2.12. Indica si tres longitudes forman un triángulo
2.13. Clasifica triángulos según sus lados
2.14. Clasifica alumnos según su promedio
2.15. Obtiene el signo, parte entera y parte fraccionaria de un número
2.16. Monto a pagar por compras con descuento
2.17. Dado el sueldo obtiene el salario neto e impuesto
2.18. Hora del siguiente segundo
3.
La estructura condicional múltiple ......................69
3.1. Calculadora de 5 funciones
3.2. Signos del zodiaco
3.3. Estaciones del año
3.4. Cuántos días tiene un mes
3.5. Fecha correcta
3.6. Fecha del día siguiente
3.7. Conversión de números arábigos a romanos
3.8. Descuentos de pensiones de enseñanza según ocupación del tutor
4.
La estructura repetitiva mientras .........................85
4.1. Cociente y el residuo de una división por restas sucesivas
4.2. Números de Fibonacci menores que n
4.3. Divisores comunes de dos números
4.4. Factoriza
un número
4.5. Indica si un número es primo
4.6. Reduce una fracción a su mínima expresión
4.7. Lee un número e invierte sus las cifras
4.8. Indica si un número es perfecto
4.9. Indica si un número es cubo perfecto
4.10. Indica si un número pertenece a un sistema de numeración
4.11. Convierte un número decimal a una base menor que 10
4.12. Convierte un numero en una base menor que 10 a base 10
4.13. MCD de dos números por método de Euclides
4.14. MCD de dos números por restas sucesivas
4.15. MCD de dos números por descomposición de factores
4.16. MCM de 2 o más números
5. La estructura repetitiva hacer
mientras .............107
5.1. Calculo del valor de .
5.2. Raíz cuadrada por el método de Newton.
5.3. Cantidad de números positivos, negativos, pares e impares
5.4. Volumen máximo de una caja a partir de lámina rectangular
5.5. Máxima área de terreno
6.
La estructura repetitiva para ..............................117
6.1. Suma de una serie:
6.2. Velocidad promedio para toda la trayectoria
6.3. Valor numérico de un polinomio de grado n
6.4. Promedio de n números
6.5. Promedio ponderado de n números
6.6. Tablas de multiplicar del 1 al 15
6.7. Simula "reloj rápido"
6.8. Números de 4 cifras múltiplos de 3 y 7
6.9. Ternas pitagóricas menores que n
6.10. Artículos que podemos comprar si gastamos todo nuestro dinero
6.11. Mayor de n números
6.12. Números de 3 dígitos que aumentan en 297 al invertir sus cifras
6.13. Producto de fracciones
6.14. Suma de fracciones
6.15. Permutaciones
6.16. Variaciones
6.17. Combinaciones
6.18. Triángulo de Pascal
7.
Arreglos unidimensionales .................................141
7.1. Lee n números en un array y lo imprime
7.2. Media aritmética de un conjunto de datos
7.3. Media armónica de un conjunto de datos
7.4. Media geométrica de un conjunto de datos
7.5. Promedio ponderado de un conjunto de datos
7.6. Búsqueda secuencial en un conjunto de datos
7.7. Elimina elementos repetidos en un array
7.8. Varianza y la desviación estándar de un conjunto de datos
7.9. Regresión lineal
7.10. Ordenamiento por burbuja
7.11. Ordenamiento por selección
7.12. Ordenamiento por inserción
7.13. Dado un número de día diga que fecha es
8.
Funciones definidas por el usuario ....................165
8.1. Primeros m múltiplos de n
8.2. Divisores comunes de dos números
8.3. Fecha correcta
8.4. Teorema del coseno
8.5. Número primo
8.6. Raíz cuadrada método de Newton
8.7. Número combinatorio
8.8. Promedio ponderado
8.9. Método de la burbuja
Diagramas Nassi-Schneiderman
..................................181