Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2019-1
EJERCICIOS
1
Ejercicio 1: Ex.Esp. 2018-1 Preg.1
Escriba un programa en lenguaje C que permita calcular el perímetro de un
polígono. El algoritmo comenzará leyendo los valores x y y en base octal para
el primer punto del polígono en el plano cartesiano. Posteriormente,
continuará leyendo pares de valores x y y (en base octal) hasta que el usuario
ingrese como valor para la coordenada x un número que dentro de sus dígitos
contiene uno que no pertenece a la base octal. Cada vez que se lea una
coordenada adicional, se debe convertir el número a base decimal y calcular
la distancia al punto previo y agregarlo al perímetro. Cuando se ingresa un
número que no pertenece a la base para la coordenada x, el algoritmo debe
agregar al perímetro la distancia del último punto al primero. Entonces se
deberá mostrar el perímetro total. En el caso de que el polígono sea un
triángulo, deberá mostrarse además del perímetro, el tipo de triángulo
ingresado según sus lados (equilátero – si todos sus lados son de igual
medida, isósceles – si dos de sus lados son iguales, escaleno – si todos sus
lados son de distinta medida). En el caso de que el polígono tenga más de tres
lados, el algoritmo deberá determinar además del perímetro, si se trata de un
polígono regular o uno irregular. Implemente algún mecanismo que fuerce al
usuario a ingresar más de dos coordenadas para el correcto funcionamiento
del algoritmo. Un ejemplo de entrada y salida se muestra a continuación:
2
Ex.Especial 2018-1 Preg.1
3
#include <stdio.h>
#include <math.h>
4
do {
printf("Ingrese la parte x de la coordenada: ");
scanf("%d", &x);
if (!esta_en_base_octal(x) && contPuntos < 3) {
printf("Debio ingresar un numero en base octal!.\n");
return 1;
} else if (!esta_en_base_octal(x) && (contPuntos >= 3)){
break;
}
x = convertir_base_octal_a_decimal(x);
5
if (contPuntos >=2){
dist = calcular_distancia_entre_dos_puntos(x_ant, y_ant, x, y);
if (dist != dist_anterior && contPuntos>= 3){
distancias_iguales = 0;
}
if (contPuntos == 2) {
primera_distancia = dist;
}
dist_anterior = dist;
perimetro += dist;
printf("Perimetro: %.4f\n", perimetro);
} else {
x_ini = x;
y_ini = y;
}
x_ant = x;
y_ant = y;
} while (1);
6
dist_punto_ini_punto_fin = calcular_distancia_entre_dos_puntos(x_ini,
if (contPuntos == 3) {
determinar_imprimir_tipo_triangulo(distancias_iguales, dist,
dist_punto_ini_punto_fin, primera_distancia);
} else {
if (distancias_iguales && dist_punto_ini_punto_fin == dist)
printf("El poligono es regular.\n");
else
printf("El poligono es irregular.\n");
}
return 0;
}
7
int esta_en_base_octal(int num){
int ult_digito;
do {
ult_digito = num % 10;
if (ult_digito >=8) return 0;
} while (num/=10);
return 1;
}
8
double calcular_distancia_entre_dos_puntos(int x1, int y1, int x2, int y2){
return sqrt( pow(x2-x1 , 2) + pow (y2-y1, 2));
}
9
Ejercicio 2
Elaborar una aplicación que permita calcular los valores de Fibonacci y factorial
para un rango de valores
Evaluar funciones de un
rango de numeros
Calcular Calcular
fibonacci de factorial de
un numero un numero
10
11
12
13
14
15
16
Bibliografía
17