Acerca de¶
El (primer) gran repositorio de enunciados de programación, y aunque esté pensado para la cátedra Programación 1 en la que utilizamos C, pero son aplicables a (casi) cualquier lenguaje.
Consideraciones generales¶
A seguir siempre y cuando no esté indicada otra cosa:
Resuelvan todos los ejercicios de manera iterativa, a no ser que esté indicado puntualmente.
Los números son números enteros, estos incluyen al cero y los negativos.
El nombre del archivo debe ser, el número del ejercicio reemplazando el punto por un guion y su apellido, por ejemplo
1-1_vilugron.cApliquen y completen la plantilla de resolución de ejercicios que está a continuación, en la misma, copien el título y consigna del ejercicio primero. Y luego completen con sus datos.
Lo que ‘resuelve’ el enunciado, debe de estar en una función. Incluso si no hay una indicada explicitamente.
El código debe seguir la guía de estilo.
Los ejercicios marcados como [plus ultra] son variaciones del ejercicio, con otras formas para ir «más allá» de la consigna original.
Plantilla de archivo¶
En un archivo llamado
/*
Ejercicio 1.1 – Hola Mundo
Porque hay que empezar por algún lado, escribir un programa que
imprima "Hola, mundo!" en la pantalla.
Este ejercicio nos permitirá verificar el que el entorno de
programación funciona.
-----------------
Nombre y Apellido
Usuario Github
*/
Program 1:Para tener todo ordenado
A pesar de que varios de los ejercicios son combinables, es mejor hacerlo cuando veamos funciones, cosa de simplificar las cosas.
1.1 - ¡Hola mundo!¶
Porque hay que empezar por algún lado, escribir un programa que imprima “Hola, mundo!” en la pantalla.
Este ejercicio nos permitirá verificar el que el entorno de programación funciona.
Hola mundo!
El indispensable Hola Mundo!
1.1.A - Saludador [plus ultra]¶
Escribir un programa que salude por nombre.
Martin
Hola mundo, Martin!
El indispensable Hola Mundo!
1.1.B - Tipografías ASCII art [plus ultra]¶
Si lo quieren complicar, pueden aplicar un poco de ASCII art.
Salida
_ _ _ _ _
| | | | ___ | | __ _ _ __ ___ _ _ _ __ __| | ___ | |
| |_| | / _ \ | | / _` | | '_ ` _ \ | | | | | '_ \ / _` | / _ \ | |
| _ | | (_) | | | | (_| | | | | | | | | |_| | | | | | | (_| | | (_) | |_|
|_| |_| \___/ |_| \__,_| |_| |_| |_| \__,_| |_| |_| \__,_| \___/ (_)
El indispensable Hola Mundo!
1.2 - Geometría¶
1.2.1 - Área de triángulos¶
Calcular el área de un triángulo con una base y altura dadas.
El área de un triángulo se puede calcular como la mitad del producto de su base por su altura.
Donde:
es el área.
es la longitud de la base.
es la altura perpendicular a la base.
Calcular el área de un triángulo utilizando la fórmula de Herón.
La fórmula de Herón permite calcular el área de un triángulo conociendo la longitud de sus tres lados.
Primero, se calcula el semiperímetro :
Donde:
, , y son las longitudes de los lados del triángulo.
1.2.2 - Círculos¶
Calcular el área y la circunferencia de un círculo.
El área de un círculo es proporcional al cuadrado de su radio.
La circunferencia es la distancia alrededor del círculo.
Donde:
es el radio del círculo.
(pi) es una constante aproximadamente igual a 3.14159.
1.2.3 - Trapecios¶
Calcular el área de un trapecio.
El área de un trapecio se calcula multiplicando la semisuma de sus bases (los lados paralelos) por su altura.
Donde:
y son las longitudes de las bases paralelas.
es la altura perpendicular a las bases.
1.2.4 - Polígonos¶
Calcular el área de un polígono regular.
El área de un polígono regular se puede calcular multiplicando la mitad de su perímetro por la longitud de su apotema.
Donde:
es el perímetro del polígono (suma de la longitud de sus lados).
es la apotema (la distancia desde el centro del polígono al punto medio de uno de sus lados).
1.2.5 - Rectángulos¶
Calcular el área de un rectángulo con longitud y ancho dados.
El área de un rectángulo es el producto de su longitud por su ancho.
Donde:
es la longitud.
es el ancho.
1.3 - Conversiones¶
1.3.1 - Temperaturas¶
Revisen los resultados que las operaciones matematicas en C, con números decimales pueden dar resultados erroneos cuando se utilizan de forma inapropiada.
1.3.1.1 - Convertir grados Celsius a Kelvin¶
Escribe un programa que solicite al usuario un valor en grados Celsius y lo convierta a grados Kelvin.
Para convertir una temperatura de grados Celsius () a Kelvin (), se utiliza la fórmula .
1.3.1.2 - Convertir grados Kelvin a Celsius¶
Escribe un programa que solicite al usuario un valor en grados Kelvin y lo convierta a grados Celsius.
La conversión de Kelvin () a grados Celsius () se realiza con la fórmula:
1.3.1.3 - Convertir grados Celsius a grados Fahrenheit¶
Escribe un programa que pida un valor en grados Celsius y lo transforme a grados Fahrenheit.
La fórmula para convertir de grados Celsius () a Fahrenheit () es:
1.3.1.4 - Convertir grados Fahrenheit a Celsius¶
Escribe un programa que reciba un valor en grados Fahrenheit y lo convierta a grados Celsius.
Para transformar grados Fahrenheit () a Celsius (), la fórmula es:
1.3.1.5 - Conversiones [plus ultra]¶
Considerando la consignas de conversión, modifica tu implementación para que la misma se realice utilizando exclusivamente aritmética de números enteros.
Los resultados también deben ser un número entero.
Agrega un comentario en el código que explique las implicaciones de esta restricción en la precisión del resultado.
1.3.2 - Ángulos a segundos¶
Convertir un número ingresado como grados, minutos y segundos a segundos.
En donde un grado son 60 minutos y un minuto son 60 segundos.
1
2
3
1 grado, 2 minutos y 3 segundos son 3723 segundos
1.3.2.1 - Con vueltas [plus ultra]¶
Una vuelta son 360 grados.
1
2
3
4
1 vuelta, 2 grados, 3 minutos y 4 segundos son 372378203040 segundos
1.4 - Matemáticos¶
1.4.1 - Suma lenta¶
Implementar una suma entre números enteros ; en la que no se puede sumar directamente con .
10
6
10 + 6 = 16
Lo importante en este ejercicio, es que el resultado se obtiene con sumas o restas de uno en uno.
En el ejemplo anterior, los cálculos empleados terminan siendo:
Mientras que para un número negativo, sería:
10
-6
10 + -6 = 4
En donde los cálculos aplicados terminan siendo:
Recuerden tener en cuenta las cuatro combinaciones posibles de signos.
1.4.2 - División lenta¶
Implementar la división entera de dos números enteros solo utilizando restas.
10
2
10 / 2 = 5
En donde los cálculos aplicados terminan siendo:
Recuerden tener en cuenta las cuatro combinaciones posibles de signos.
1.4.3 - Resto lento¶
Implementar el resto de la división entera de dos números enteros solo utilizando restas.
13
2
13 % 2 = 1
En donde los cálculos aplicados terminan siendo:
Recuerden tener en cuenta las cuatro combinaciones posibles de signos.
1.4.5 - División egipcia¶
El método de división egipcia es un antiguo algoritmo que permite dividir dos números utilizando únicamente operaciones de duplicación, suma y resta, sin necesidad de realizar la división de forma directa. Se basa en la idea de encontrar qué múltiplos del divisor (obtenidos por duplicación) suman el dividendo.
Pasos del método
Crear dos columnas: En la primera columna se escribe el número 1. En la segunda, el divisor.
Duplicar los valores: Se duplican los valores de ambas columnas en cada fila subsiguiente. Se detiene cuando el siguiente número en la columna del divisor superaría al dividendo.
Encontrar la combinación: Se buscan en la columna del divisor (de abajo hacia arriba) los números que, sumados, se acerquen lo más posible al dividendo sin pasarse.
Calcular el cociente: Se suman los números de la primera columna que corresponden a las filas de los números elegidos en el paso anterior. El resultado es el cociente de la división.
Calcular el resto: Se resta la suma de los números elegidos en la columna del divisor al dividendo original. El resultado es el resto.
Ejemplo: Calcular
Construir la tabla: Se crean dos columnas. La primera empieza en 1 y la segunda en el divisor (6). Ambas se duplican en cada paso.
Columna 1 Columna 2 (Divisor: 6) 1 6 2 12 4 24 8 48 (se detiene porque ) Buscar la suma: Se buscan los números en la Columna 2 que sumen 37 (o lo más cercano por debajo), empezando por el más grande.
Se toma el 24. (Queda por sumar: ).
Se busca el siguiente número que quepa en 13. Se toma el 12. (Queda por sumar: 13 - 12 = 1).
El siguiente número es 6, pero no se puede tomar porque 6 > 1.
Los números seleccionados de la Columna 2 son 24 y 12.
Obtener el resultado:
Cociente: Se suman los números correspondientes de la Columna 1: .
Resto: Se resta la suma de los números seleccionados (24 + 12 = 36) del dividendo original: .
El resultado final es:
Cociente = 6 y Resto = 1.
1.4.6 - Divisibilidad¶
Determinar si un número es divisible por otro.
10
2
10 es divisible por 2
1.4.7 - Al cuadrado¶
Calcular la potencia de dos de un número dado.
10
10 ^ 2 = 100
1.4.8 - Factorial¶
Calcular el factorial de un número. Esta operación se define como el producto de todos los números enteros positivos desde 1 hasta el número.
La operación solo puede ser aplicada a valores positivos
Por ejemplo:
5
5! = 120
1.4.8 - Dígitos¶
Calcular la suma de los dígitos de un número entero de manera aritmética.
1234
10
El cálculo esperado es: .
1.4.9 - Dígitos de factorial¶
Crear un programa que calcule e imprima la suma de los dígitos de un número factorial.
5
5! = 120 -> 3
1.4.10 - MCD¶
Escribir un programa que determine el máximo común divisor (MCD) entre dos números ingresados por teclado (m y n)
El algoritmo de MCD iterativo plantea que para cada iteración:
Si y , entonces el MCD es .
Si , se intercambian los valores: .
Si y , entonces , y se intercambian los valores: .
1.4.11 - MCM¶
Calcular el mínimo común múltiplo (MCM) de dos números.
El Mínimo Común Múltiplo de dos números enteros positivos y es un valor entero y positivo tal que al dividir y , el resto es 0, y además no existe otro número menor que que cumpla esta condición.
1.4.11 - Capicúas¶
Verificar si un número es capicúa de manera aritmética.
Ejemplo capicua
1001
1001 es capicua
Ejemplo no capicua
1234
1234 no es capicua
1.4.12 - Capicúas entre¶
Imprimir todos los números capicúa en un rango dado.
100
200
Entre 100 y 200, los numeros capicua son:
101
1.4.13 - Números amigos¶
Solicitar dos números enteros positivos y determinar si son números amigos. Dos números son amigos si la suma de los divisores propios de cada uno es igual al otro número.
Para entender matemáticamente los números amigos, primero definamos el concepto de divisores propios.
Divisores Propios:
Los divisores propios de un número entero positivo son todos los divisores positivos de excepto el propio . Por ejemplo, los divisores de 6 son . Los divisores propios de 6 son .
Podemos definir una función (o a veces ) que representa la suma de los divisores propios de un número . Si es un divisor de y , entonces la suma de los divisores propios se expresa como:
Condición para Números Amigos: Dos números enteros positivos y son considerados números amigos si cumplen las siguientes dos condiciones simultáneamente:
En otras palabras, la suma de los divisores propios de es igual a , y la suma de los divisores propios de es igual a .
Ejemplo: Consideremos los números 220 y 284.
Divisores propios de 220:
Divisores propios de 284:
Dado que y , los números 220 y 284 son números amigos.
1.4.14 - Invertir un número entero¶
Pedir un número entero positivo y mostrarlo con sus dígitos en orden inverso, sin usar arreglos ni cadenas de caracteres.
12345
54321
1.5 - Secuencias¶
Los ejercicios de secuencias no requieren que guardemos los valores intermedios, ejercicios que si lo requieren están en la categoría Arreglos.
1.5.1 - Cuenta regresiva¶
Imprimir una cuenta regresiva de diez, pueden usar sleep(1)
de
stdlib.h
para que la cuenta no sea instantánea.
10
9
8
...
3
2
1
Lanzamiento!
1.5.1.A - Cuenta regresiva ajustable [plus ultra]¶
Lo mismo que el ejercicio anterior, pero con conteo seleccionable por el usuario
3
3
2
1
Lanzamiento!
1.5.2 - Pares¶
Imprimir la secuencia de números pares entre y .
10
15
10
12
14
1.5.3 - Ascendente¶
Mostrar los números entre y de forma ascendente siendo
2
5
El intervalo [2; 5) es:
2
3
4
1.5.4 - Suma en rango¶
Sumar los números entre n y m según:
3
5
La suma entre 3 y 5 es 12
1.5.5 - Cuadrados ascendentes¶
Obtener al suma de los cuadrados entre n y m.
3
5
Los cuadrados ascendentes entre 3 y 5 es = 50
1.5.6 - Descendente¶
Imprimir los números entre y de forma descendente. ()
10
7
10
9
8
1.5.7 - n-impares¶
Imprimir la secuencia de números impares del 1 hasta n.
10
1
3
5
7
9
1.5.8 - n-esimos numeros sumados¶
Calcular la suma de los primeros n números naturales de manera iterativa. Sin usar simetría de las progresiones aritméticas, o lo que descubrió Gauss.
10
La suma de los primeros 10 numeros es 55
1.5.9 - i-fibonacci’esimo¶
Imprimir el i-esimo termino de la serie de Fibonacci.
La serie de Fibonacci está definida por:
La secuencia para el octavo termino queda como
8
El termino 8 es 13
1.5.10 - Dígitos de Fibonacci¶
Obtener la suma de los dígitos del i-esimo termino de las serie de Fibonacci.
Siendo el octavo termino 13, la suma de sus dígitos es 4;
8
4
1.6 - Condicionales¶
1.6.1 - Par o Impar¶
Dado un número entero, determinar si es par o impar.
Un número entero se considera par si es un múltiplo de 2, es decir, si existe un entero tal que:
Si un número no es par, se considera impar. Esto se puede expresar matemáticamente como la existencia de un entero tal que:
1.6.2 - Signo de un Número¶
Dado un número real , clasificarlo como positivo, negativo o cero. La clasificación se basa en las siguientes propiedades:
1.7 - Primos¶
Un número natural se considera primo si sus únicos divisores positivos son 1 y él mismo. Cualquier número entero mayor que 1 que no es primo se denomina número compuesto.
1.7.1 - ¿Es primo?¶
Determinar si un número es primo o compuesto.
1.7.2 - Varios primos¶
Escribir un programa que genere y muestre los primeros números primos, donde es un valor proporcionado por el usuario.
1.8 - Fechas¶
1.8.1 - Es bisiesto?¶
Determinar si un año dado es bisiesto.
Un año es bisiesto si cumple una de las siguientes reglas del calendario gregoriano:
Es divisible por 4, pero no es divisible por 100.
Es divisible por 400.