0% encontró este documento útil (0 votos)
29 vistas19 páginas

PROBLEMAS TEMA3Metodos

El documento presenta una serie de problemas de programación en C# que abordan conceptos como la suma de cuadrados, números amigos, cálculos relacionados con círculos y cilindros, además de la conversión de números en diferentes bases. Cada problema incluye un fragmento de código que ilustra la solución propuesta, junto con explicaciones sobre el uso de métodos y estructuras de control. También se abordan temas como el cálculo de la intensidad eléctrica y la masa radioactiva de carbono 14, así como la conversión de números binarios y octales a decimal.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
29 vistas19 páginas

PROBLEMAS TEMA3Metodos

El documento presenta una serie de problemas de programación en C# que abordan conceptos como la suma de cuadrados, números amigos, cálculos relacionados con círculos y cilindros, además de la conversión de números en diferentes bases. Cada problema incluye un fragmento de código que ilustra la solución propuesta, junto con explicaciones sobre el uso de métodos y estructuras de control. También se abordan temas como el cálculo de la intensidad eléctrica y la masa radioactiva de carbono 14, así como la conversión de números binarios y octales a decimal.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

RELACIÓN DE PROBLEMAS
TEMA 3

1) Escribir un programa que calcule la suma de cuadrados de los n primeros números


enteros, utilizando para ello un método que devuelva el resultado de dicha suma, es decir, el
método deberá devolver:

Función(. .. )=12 +22 +32 +.. .+n2


class Program
{
static void Main(string[] args)
{
int n;

Console.WriteLine("\nSuma de cuadrados\n\n");
Console.WriteLine("Introduce el valor de n: ");
n = int.Parse(Console.ReadLine());
Console.WriteLine("El valor de los {0} primeros cuadrados es:
{1}\n\n", n,cuadrados(n));

static int cuadrados(int n)


{
int resultado = 0;

for (int i = 1; i <= n; i++)


{
resultado = resultado + i * i;
}
return resultado;
}

2) Determinar si dos números enteros positivos son amigos.


Nota. Dos números a y b son amigos si a es la suma de los divisores de b, y b es la suma de
los divisores de a. El uno se considera divisor, pero no el propio número. Ejemplo: 220 y 284.
220 (divisores)  1 + 2 + 4 + 5 + 10 + 11 + 20 + 22 + 44 + 55 + 110 = 284
284 (divisores)  1 + 2 + 4 + 71 + 142 = 220

Prácticas de Informática Pág. 1


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

class Program
{
static void Main(string[] args)
{
int numero_uno, numero_dos;

Console.WriteLine("\nNumeros amigos\n\n");
Console.WriteLine("Introduce un numero: ");
numero_uno = int.Parse(Console.ReadLine());

Console.WriteLine("Introduce otro numero: ");


numero_dos = int.Parse(Console.ReadLine());

//Buscamos los divisores de los dos números introducido


mediante
//el método suma divisores
Console.WriteLine("\n");
if ((suma_divisores(numero_uno) == numero_dos) &&
(suma_divisores(numero_dos) == numero_uno))
{
Console.WriteLine("\nLos numeros {0} y {1} son amigos\n\
n",
numero_uno,numero_dos);
}
else
{
Console.WriteLine("\nLos numeros {0} y {1} no son amigos\
n\n",
numero_uno,numero_dos);
}

static int suma_divisores(int numero)


{
int suma_divisores = 0;
int i;

for (i = 1; i < numero; i++)


{
if (numero % i == 0)
{
suma_divisores = suma_divisores + i;
}
}
return suma_divisores;
}

3) Realizar un programa que tenga:


a. Un método para calcular el perímetro de una circunferencia a partir del radio
(2*PI*r).
b. Un método para calcular el área de un círculo (PI*r*r).

Prácticas de Informática Pág. 2


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

c. Un método para calcular el volumen de un cilindro (area_circulo*altura), que puede


usar los métodos anteriores.
d. Un método para calcular el área de un cilindro.
e. Un programa principal que pida el radio y la altura de un cilindro y, usando los
métodos anteriores, informe del perímetro de la parte circular del cilindro, del área
del círculo, del volumen y del área del cilindro.

Nota. Para contestar el apartado e., se ha optado por realizar un menú mediante la sentencia
switch(), de forma que el usuario decida qué quiere calcular.

class Program
{
//En la resolución a este ejercicio puede verse la diferencia en
//cuanto al ámbito de visivilidad de la variable area, declarada
//como variable tanto en el método principal, como en el método
//area_circulo(). También pueden verse tres formas distintas de
//proceder en la implementación de métodos:
//1) Método perimetro(). Método sin parámetros que realiza todo lo
//necesario para llevar a cabo su cometido dentro de sí misma;
//2) Método area_circulo(), que devuelve el resultado mediante la
//sentencia return;
//3) Método volumen_ciclindro(), que devuelve el resultado
mediante
//un parámetro por referencia.
//4) Método area_cilindro() que no usa ni Console.WriteLine ni
para
// tipo.Parse() en su interior y por tanto, todo lo que le hace
falta
//hacer los cálculos y el resultado que devuelve, son argumentos
del
// método.

static void Main(string[] args)


{
int opcion;
float area, volumen, radio, altura;

//Mostraremos, mediante un menu de opciones por pantalla, los


//métodos que el usuario tiene a su disposición. Para
//finalizar el programa, deberá elegir la opción 5
do
{
Console.WriteLine("\nElige una de las siguientes
opciones:\n\n");
Console.WriteLine("1. Perímetro de la circunferencia\n");
Console.WriteLine("2. Area de un círculo\n");
Console.WriteLine("3. Volumen de un cilindro\n");
Console.WriteLine("4. Area de un cilindro\n");
Console.WriteLine("5. Salir del programa\n\n");
Console.WriteLine("Opción: ");
opcion=int.Parse(Console.ReadLine());

switch (opcion)
{
case 1: perimetro();
Prácticas de Informática Pág. 3
Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

break;
case 2: area = area_circulo();
Console.WriteLine("\nEl area del circulo de es: {0}\n",
area);
break;
case 3: volumen_cilindro(out volumen);
Console.WriteLine("\nEl volumen del cilindro es:{0}\n",
volumen);
break;
case 4: Console.WriteLine("\nIntroduce el radio del
circulo: ");
radio = float.Parse(Console.ReadLine());
Console.WriteLine("\nIntroduce la altura del
cilindro: ");
altura = float.Parse(Console.ReadLine());
area_cilindro(radio, altura, out area);
Console.WriteLine("\nEl área del cilindro es:{0}\n",
area);
break;
}
} while (opcion != 5);

static void perimetro(){


float radio,perimetro;

Console.WriteLine("\nIntroduce el radio de la circunferencia:


");
radio=float.Parse(Console.ReadLine());

perimetro=(float)(2*Math.PI*radio);
Console.WriteLine("\nEl perimetro de la circunferencia es:
{0}\n",perimetro);
}

static float area_circulo(){


float radio,area;

Console.WriteLine("\nIntroduce el radio del circulo: ");


radio = float.Parse(Console.ReadLine());

area=(float)(Math.PI*radio*radio);
return area;
}

static void volumen_cilindro(out float volumen){


float altura;

Console.WriteLine("\nIntroduce la altura del cilindro: ");


altura = float.Parse(Console.ReadLine());

volumen=area_circulo()*altura;
}

static void area_cilindro(float radio, float altura, out float


area)
{

float AreaCírculos,AreaRactángulo;

Prácticas de Informática Pág. 4


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

AreaCírculos = (float)(2 * Math.PI * radio * radio);


AreaRactángulo = (float)(2 * Math.PI * radio * altura);
area = AreaCírculos + AreaRactángulo;
}

4) Crear un programa que calcule el valor de la intensidad que pasa a través de una
resistencia dada, cuando se le aplica un voltaje determinado. El programa deberá estar
dividido en los métodos siguientes:
a. explicar_programa(). Este método mostrará una introducción del programa por la
pantalla.
b. obtener_valores(). Este método pedirá los valores para la resistencia y voltaje, los
cuales se pasarán por referencia al programa principal.
c. calcular(). Este método efectuará el cálculo de la intensidad a partir de la
resistencia y el voltaje aplicado.
d. imprimir_respuesta(). Este método se encargará de mostrar un mensaje con los
resultados.

Nota. La declaración de variables se realizará en el programa principal, y los métodos usarán


dichas variables por valor o por referencia según sea necesario.

class Program
{
static void Main(string[] args)
{
float resistencia, voltaje, intensidad;

explicar_programa();
obtener_valores(out resistencia, out voltaje);
intensidad = calcular(resistencia, voltaje);
imprimir_respuesta(intensidad);

static void explicar_programa(){


Console.WriteLine("\nPresentación del programa\n");
Console.WriteLine("Cálculo de la intensidad que circula por una
resistencia");
Console.WriteLine("cuando se le aplica un voltaje dado.\n\n");
}

static void obtener_valores(out float r,out float v){


Console.WriteLine("Introduce el valor de la resistencia en
Ohmios: ");
r = float.Parse(Console.ReadLine());

Prácticas de Informática Pág. 5


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

Console.WriteLine("Introduce el valor del voltaje en Voltios:


");
v = float.Parse(Console.ReadLine());

static float calcular(float r,float v){


return v/r;
}

static void imprimir_respuesta(float i){


Console.WriteLine("La intensidad es de {0} Amperios\n\n",i);
}

5) Escribir un programa que calcule la masa radioactiva de carbono 14 que queda después de
t años. La fórmula que determina la masa restante en el tiempo t es:

donde:
t es el tiempo en años
Mt es la masa que permanece en el tiempo t
m es la masa original
h es la vida media en años

Sabiendo que para el carbono 14 la vida media es de 5700 años, se pide imprimir una tabla
de la masa (Mt) para t = 500, 1000, 1500, 2000, etc. hasta 5000 años. Se deberá utilizar un
método que permita evaluar la expresión (1/2)t/h para los diferentes valores de t. Sólo se
permite imprimir desde el programa principal. La masa original se pedirá en el programa
principal.

class Program
{
static void Main(string[] args)
{
int i, masa;

Console.WriteLine("\nMasa radioactiva del Carbono 14\n\n");


Console.Write("Dame la masa original en gramos: ");
masa = int.Parse(Console.ReadLine());

//La variables de control empleadas en los bucles, pueden


//incrementarse y decrementarse cualquier cantidad
for (i = 500; i <= 5000; i = i + 500)
{

Prácticas de Informática Pág. 6


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

Console.WriteLine("La masa restante tras {0} años es {1}\


n",
i,expresion(masa,i,5700));
}

static double expresion(int masa, int t, int h){


double Base, Exponente;
double resultado;
//Forzamos la división real. 1/2 realiza la división entera y
obtenemos
//un cociente entero, en este caso 0.
//Si uno de los dos operandos, o los dos, es un real, se obtiene
un
//resultado con decimales.
Base=1.0/2;
//Otra forma de forzar la división real: con un molde
Exponente=(double)t/h;
resultado=Math.Pow(Base,Exponente);

return resultado;
}

}
6) Escribir un método que calcule el número combinatorio

Utilizar para ello otro método que calcule el factorial de un número. Sólo se permite imprimir
desde el programa principal.

class Program
{
static void Main(string[] args)
{
int M, N;
Console.WriteLine("\nNumero combinatorio M sobre N\n\n");
Console.WriteLine("Introduce el valor de M: ");
M = int.Parse(Console.ReadLine());
Console.WriteLine("Introduce el valor de N: ");
N = int.Parse(Console.ReadLine());
Console.WriteLine("El resultado es: {0}\n\n",M_sobre_N(M,N));

static double M_sobre_N(int M, int N)


{

return factorial(M) / (factorial(N) * factorial(M - N));


}
Prácticas de Informática Pág. 7
Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

static double factorial(int numero)


{
double resultado;

if (numero == 0)
{
return 1.0;
}

resultado = 1.0;
for (int i = 1; i <= numero; i++)
{
resultado = resultado * i;
}
return resultado;
}

7) Realizar un programa en C que calcule el valor decimal de un número escrito en octal o en


binario. Para ello, el programa mostrará por pantalla el siguiente mensaje: “Pulse 2 si el número
a convertir es binario o bien 8 si es octal”. Posteriormente, solicitará el número de dígitos que
se van a introducir, y por último solicitará dichos dígitos comenzando por el más significativo (el
situado más a la izquierda). Finalmente, mostrará por pantalla el valor decimal del número
introducido y volverá a mostrar el menú inicial.
Nota: Para resolver el problema habrá que escribir un método que pasará un número
expresado en cualquier base a decimal.

class Program
{
static void Main(string[] args)
{
char opcion;
int dígitos;

do{
Console.WriteLine("\nPulse 2 si el numero a convertir es
binario o
bien 8 si es octal:");
Console.WriteLine("2. Binario a decimal");
Console.WriteLine("8. Octal a decimal");
Console.WriteLine("S. Salir del programa");
Console.WriteLine("Opcion: ");
opcion=char.Parse(Console.ReadLine());

switch(opcion){
case '2':Console.WriteLine("\nFuncion conversora de
binario a
decimal\n\n");
Console.WriteLine("\nIntroduzca el numero de digitos
del

Prácticas de Informática Pág. 8


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

numero binario:");
dígitos=int.Parse(Console.ReadLine());
Console.WriteLine("El resultado de la conversion es:

{0}",convertir_a_decimal(dígitos,2));
break;
case '8': Console.WriteLine("\nFuncion conversora de octal
a
decimal\n\n");
Console.WriteLine("\nIntroduzca el numero de digitos
del
numero octal: ");
dígitos = int.Parse(Console.ReadLine());
Console.WriteLine("El resultado de la conversion es:
{0}",
convertir_a_decimal(dígitos, 8));
break;
}
}while ((opcion!='S'));

static int convertir_a_decimal(int dígitos,int Base){


int dígito;
int resultado=0;

for(int i=1;i<=dígitos;i++){
Console.WriteLine("\nIntroduzca el digito numero {0}:
",dígitos-i);
dígito=int.Parse(Console.ReadLine());
resultado=resultado+dígito*(int)Math.Pow(Base,(dígitos-i));
}
return resultado;
}

8) Realizar un programa que pase un número binario (parte entera y parte fraccionaria) a
decimal. Para ello, deberá pedir al usuario que indique cuántos bits de la parte entera del
número va a introducir y cuantos de la parte fraccionaria. Posteriormente, solicitará los bits de
la parte entera comenzando por el más significativo (el situado más a la izquierda). Una vez
haya obtenido el valor decimal de la parte entera, solicitará los bits correspondientes a la parte
fraccionaria del número binario, comenzando de nuevo por el de mayor peso (el situado más a
la izquierda). Finalmente, mostrará por pantalla el valor decimal del número binario introducido.

class Program
{
static void Main(string[] args)
{
int bits_parte_entera, bits_parte_decimal;
float resultado;

Prácticas de Informática Pág. 9


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

Console.WriteLine("\nConvertsor de binario a decimal con


decimales\n\n");
Console.WriteLine("Introduce el numero de digitos de la parte
entera: ");
bits_parte_entera=int.Parse(Console.ReadLine());
Console.WriteLine("Introduce el numero de digitos de la parte
decimal: ");
bits_parte_decimal=int.Parse(Console.ReadLine());

resultado = binario_decimal_parte_entera(bits_parte_entera) +

binario_decimal_parte_fraccionaria(bits_parte_decimal);

Console.WriteLine("\nEl resultado de la conversion es:


{0}\n",resultado);

static int binario_decimal_parte_entera(int d){


int dígito,i;
int resultado=0;

Console.WriteLine("\nParte Entera\n");
for(i=1;i<=d;i++){
Console.WriteLine("\nIntroduzca el digito numero {0}: ",d-
i+1);
dígito = int.Parse(Console.ReadLine());
resultado=resultado+dígito*(int)Math.Pow(2,(d-i));
}
return resultado;
}

static float binario_decimal_parte_fraccionaria(int d){


int dígito,i;
float resultado=0;

Console.WriteLine("\nParte Fraccionaria\n");
for(i=1;i<=d;i++){
Console.WriteLine("\nIntroduzca el digito numero {0}: ",d-
i+1);
dígito = int.Parse(Console.ReadLine());
resultado=resultado+dígito*(float)Math.Pow(2,-i);
}
return resultado;
}

9) Determinar el mínimo común múltiplo (m.c.m) de dos números enteros. Los múltiplos de un
número se obtienen multiplicando dicho número por los números naturales.
Nota. El m.c.m de dos números es el menor múltiplo común distinto de cero, o dicho de otra
forma, el m.c.m de dos números expresados como producto de factores primos, su mínimo
común múltiplo será el resultado de multiplicar los factores comunes y no comunes elevados al
mayor exponente:

Prácticas de Informática Pág. 10


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

Ejemplo: El m.c.m de 10 y de 20 es 20. El m.c.m de 4 y 5 es 20.

class Program
{
static void Main(string[] args)
{
int numero_uno, numero_dos, MCM;

Console.WriteLine("\nMinimo comun multiplo (m.c.m) de dos


numeros\n\n");
Console.WriteLine("Introduce un numero: ");
numero_uno = int.Parse(Console.ReadLine());
Console.WriteLine("Introduce otro numero: ");
numero_dos = int.Parse(Console.ReadLine());
MCM = mínimmo_común_múltiplo(numero_uno, numero_dos);
Console.WriteLine("\nEl m.c.m de {0} y {1} es {2}\n",
numero_uno,
numero_dos,MCM);

static int mínimmo_común_múltiplo(int N1, int N2)


{
int contador_uno, contador_dos;
int multiplos_uno, multiplos_dos;

//La solución propuesta consiste en ir generando los multiplos


//de cada uno de los números introducidos hasta que coincidan.
//En cada vuelta del bucle sólo se generará un múltiplo de uno
//de los dos números, concretamente el múltiplo del número con
//menor múltiplo actual

contador_uno = 1;
contador_dos = 1;
do
{

multiplos_uno = N1 * contador_uno;
multiplos_dos = N2 * contador_dos;
if (multiplos_uno > multiplos_dos) contador_dos++;
if (multiplos_dos > multiplos_uno) contador_uno++;

} while (multiplos_uno != multiplos_dos);

return multiplos_uno;

10) Implementar un método que, dado un número entero positivo pasado como parámetro por
valor, nos devuelva en otro parámetro por referencia el número con sus dígitos invertidos, pero
sólo si el numero tiene 4 cifras o más. Si el número tiene menos de 4 cifras, el resultado será -

Prácticas de Informática Pág. 11


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

1. El método principal se encargará de solicitar un número al usuario y visualizar el resultado de


invocar a el método.

Solución 1 (usando ref):


class Program
{
static void Main(string[] args)
{
int número,invertido=-1;
// hay que darle valor a invertido ya que se usa ref en el
método

Console.WriteLine("Teclea el número positivo que quieres


invertir:");
número = int.Parse(Console.ReadLine());

invertir(número, ref invertido);


if (invertido != -1) Console.WriteLine("El resultado de
invertir el
número {0} es {1}", número,invertido);
else Console.WriteLine("El número tiene que ser de al menos 4
cifras
...");

static int cuantos_dígitos(int N)


{
int i = 0;

while (N > 0)
{
N = N / 10;
i++;
}
return i;

// Nótese el uso de ref en lugar de out ya que


// en el interior del método no siempre se le
// asigna valor a N2.
static void invertir(int N1, ref int N2){
int dígito,i,resultado=0;
i = cuantos_dígitos(N1);
if (i >= 4){
while (N1 > 0)
{
dígito = N1 % 10;
N1 = N1 / 10;
resultado = resultado * 10 + dígito;
i++;
}
N2 = resultado;
}
}

Prácticas de Informática Pág. 12


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

}
Solución 2 (usando out):
class Program
{
static void Main(string[] args)
{
int número,invertido;
// No hay que darle valor a invertido ya que se usa out en el
método

Console.WriteLine("Teclea el número positivo que quieres


invertir:");
número = int.Parse(Console.ReadLine());

invertir(número, out invertido);


if (invertido != -1) Console.WriteLine("El resultado de
invertir el
número {0} es {1}", número,invertido);
else Console.WriteLine("El número tiene que ser de al menos 4
cifras
...");

static int cuantos_dígitos(int N)


{
int i = 0;

while (N > 0)
{
N = N / 10;
i++;
}
return i;

// Nótese el uso de out en lugar de ref ya que


// en el interior del método N2 siempre toma valor.
static void invertir(int N1, out int N2){
int dígito,i,resultado=0;
i = cuantos_dígitos(N1);
if (i >= 4)
{
while (N1 > 0)
{
dígito = N1 % 10;
N1 = N1 / 10;
resultado = resultado * 10 + dígito;
i++;
}
N2 = resultado;
}
else N2=-1;
}

Prácticas de Informática Pág. 13


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

11) Realizar un programa que tenga:


a. Un método para convertir grados Fahrenheit a grados Celsius.
b. Un método para convertir grados Celsius a grados Fahrenheit.

Las dos opciones deberán presentarse al usuario mediante un menú por pantalla, al que se
añadirá una opción más para salir del mismo.
Nota. La conversión de grados Celsius a grados Fahrenheit se realiza de la siguiente manera:

T (ºF )=1 , 8×T (ºC )+32


12) Realizar un programa que lea en el programa principal las coordenadas de un punto (x,y) y
que mediante un menú invoque los siguientes métodos:
a. Comprobar si el punto pertenece a una circunferencia de radio r y centro en el
punto (x2,y2), valores solicitados al usuario. Los valores del punto (x,y) deberán
pasarse a el método como parámetros por valor.
b. Determinar en qué cuadrante se encuentra el punto dado. Se deberá prestar
especial atención a los puntos que pertenecen a los ejes de coordenadas, o
cuando se trate del punto (0,0), mediante mensajes informativos mostrados por
pantalla.
c. Convertir las coordenadas del punto (x,y) a coordenadas polares (radio,ángulo). El
método en este caso tendrá cuatro parámetros. Los valores del punto (x,y) deberán
pasarse a el método como parámetros por valor, mientras que los valores en
coordenadas polares deberán devolverse a el método principal mediante
parámetros por referencia. El programa principal será el encargado de imprimir en
pantalla el resultado de la ejecución de este método.

También deberá mostrase una opción al usuario para que abandone el programa cuando
desee.
NOTA: En el interior de cada uno de los métodos implementados no podrá usarse ningún
método de la clase Console.

13) Realizar un programa que nos diga si un número n leído por teclado es a la vez múltiplo de
dos números a y b, también leídos desde teclado. Deberá implementarse un método multiplo()
que nos diga si un número x es múltiplo de otro .

14) Solucionar el ejercicio 38 de la relación del problemas del tema 2 usando métodos de la
forma siguiente:

Prácticas de Informática Pág. 14


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

1. Hacer un método que a partir de x devuelva n.


2. Hacer un método que a partir de x y n y haciendo uso de el método realizado
en el apartado 1. devuelva la raíz cuadrada de x.
3. Hacer un programa principal que pida el número cuya raíz cuadrada queremos
calcular y muestre en pantalla el resultado obtenido usando el método
realizado en el apartado 2.
4. Usando Console.WriteLine en el programa principal, mostrar en pantalla la raíz
cuadrada de 12 sin hacer uso de variables auxiliares.

15) Realizar un programa que, mediante un menú e implementadas mediante métodos, permita
realizar las siguientes operaciones con polinomios de segundo grado:
a. Leer un polinomio de segundo grado.
b. Imprimir el polinomio de segundo grado que haya sido leído en última instancia.
c. Calcular el valor del polinomio f(x) en un punto x, cuando x toma un valor real.
d. Calcular la derivada del polinomio de segundo grado introducido.

El usuario podrá abandonar el programa cuando desee, reflejando dicho hecho mediante una
opción en el menú.
Nota. Para la resolución de este ejercicio, el paso de parámetros a los métodos podrá
realizarse por valor o por referencia, dependiendo de lo que se estime más adecuado en cada
caso. No se permite el uso de la sentencia return.
Nota: Los métodos de los apartados c. y d. no podrán hacer uso en su interior de ningún
método de la clase Console.

16) Implementar los métodos siguientes:


1. Un método que lea de teclado una hora del día con el formato horas, minutos y
segundos y los devuelva al exterior del mismo utilizando los parámetros. Este
método no puede usar ni Console.WriteLine ni la instrucción return.
2. Hacer un método que muestre en pantalla la hora del día con el formato hh:mm:ss.
Este método no puede usar tipo.Parse() ni la instrucción return.
3. Hacer un método que convierta una hora del día a segundos y devuelva el resultado al
exterior del mismo. Además devolverá 1 si es por la mañana, 2 si es por la tarde y 3 si
es por la noche. Este método no puede usar Console.WriteLine, ni tipo.Parse() y
deberá usar obligatoriamente la instrucción return.

Hacer un programa principal que haga el siguiente conjunto de operaciones en secuencia


haciendo uso de los métodos descritos anteriormente hasta que el usuario decida que
quiere parar.
Prácticas de Informática Pág. 15
Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

i. Leer de teclado dos horas del día.


ii. Mostrarlas en pantalla.
iii. Indicar para cada hora tecleada en el apartado i. su equivalente en segundos y si
es por la mañana, por la tarde o por la noche con un mensaje en pantalla que
indique “Es por la mañana”, “Es por la tarde” o “Es por la noche”.

17) Implementar los métodos siguientes:


a) Hacer un método que lea de teclado 3 datos correspondientes a los lados de un
triángulo. Este método no puede usar ni Console.WriteLine ni la instrucción
return.
b) Hacer un método que lea de teclado 3 datos correspondientes a los ángulos de un
triángulo. Este método no puede usar ni Console.WriteLine ni la instrucción
return.
c) Hacer un método que acepte como parámetros los lados de un triángulo y compruebe
si es equilátero y si lo es, nos devuelva los lados de los dos triángulos rectángulos en
los que se descompone. Este método no puede usar Console.WriteLine, ni
tipo.Parse() . El método tendrá que usar return para indicar si el triángulo se pudo
descomponer, en cuyo caso devolverá 1, o si no se pudo, en cuyo caso devolverá 0.
d) Hacer un método que acepte como parámetros los ángulos de un triángulo y nos
indique si es obtusángulo. Este método no puede usar usar Console.WriteLine, ni
tipo.Parse() y usará obligatoriamente la instrucción return.

Hacer un programa principal que haga el siguiente conjunto de operaciones en secuencia


haciendo uso de los métodos descritos anteriormente hasta que el usuario decida que
quiere parar.

i. Leer de teclado los lados de dos triángulos.


ii. Leer de teclado los ángulos para cada uno de los triángulos.
iii. Haciendo uso del método del apartado c), mostrar en pantalla los dos
triángulos rectángulos en los que se descompone el primero de los triángulos
leídos en el apartado i, si es que esto es posible.
iv. Haciendo uso del método del apartado d) mostrar un mensaje en pantalla
indicando para cada uno de los triángulos tecleados el mensaje “El triángulo
es obtusángulo” o el mensaje “El triángulo no es obtusángulo”.

Clasificación de los triángulos por la amplitud de sus ángulos:


o Triángulo rectángulo: si tiene un ángulo interior recto (90°). A los dos lados que
conforman el ángulo recto se les denomina catetos y al otro lado hipotenusa.

Prácticas de Informática Pág. 16


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

o Triángulo obtusángulo: si uno de sus ángulos interiores es obtuso (mayor de


90°); los otros dos son agudos (menores de 90°).
o Triángulo acutángulo: cuando sus tres ángulos interiores son menores de 90°.

18) Implementar los métodos que se indican a continuación, teniendo en cuenta las
características y/o restricciones que se establecen para cada una de ellas:
1. Un método imprime_caracteres, que reciba un parámetro por referencia de tipo char y
que lo imprima por pantalla tantas veces como su valor decimal en UNICODE UTF-16,
si se trata de una letra minúscula. Si se trata de una letra mayúscula devolverá,
empleando el mismo parámetro por referencia, dicha letra en minúscula. No hará
nada en el resto de los casos. Nota: el valor de ‘A’ es 65, el de ‘a’ es 97, el valor de la
‘Z’ es 90 y el valor de la ‘z’ es 122 en Unicode UTF-16.
2. Un método binario_a_decimal, que reciba dos parámetros por valor de tipo entero: el
primero con el valor y el segundo con el número de dígitos del mismo, e imprima por
pantalla el valor en decimal equivalente.
3. Un método intercambia, que recibirá dos valores por referencia de tipo entero. Si el
primero de ellos es mayor que el segundo intercambiará dichos valores, si son iguales
devolverá en ambos la suma de ellos y si el segundo valor es mayor que el primero
devolverá, en ambos, la diferencia del segundo menos el primero.
4. Escribe un programa completo en el que se empleen los cuatro métodos anteriores,
según la forma que consideres adecuada y atendiendo a las restricciones de los
métodos a implementar.
Nota. En ninguna parte de los métodos a implementar, o del programa principal, se podrán
usar métodos de lectura de valores por pantalla.

19) Implementar, mediante el lenguaje C#, los métodos que se indican a continuación, teniendo
en cuenta las características y/o restricciones que se establecen para cada una de ellos.
Nota: Para resolver este problema está prohibido hacer menús y usar matrices y
cadenas.
1. Escribe un método llamado PRIMULT que dado un número de caracteres que el
usuario tendrá que teclear, y que se le pasará al método como argumento, pida por
teclado tantos caracteres como se indique en el argumento y devuelva usando los
argumentos del método el primer carácter tecleado y el último carácter tecleado
siempre y cuando se hayan tecleado al menos dos caracteres. Si esto es así el método
también devolverá true usando la sentencia return y false en caso de que el número de
caracteres sea menor que dos.
Nota: dentro de este método estará prohibido usar Console.Write o Console.WriteLine.

Prácticas de Informática Pág. 17


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

2. Escribe un método llamado CUANTOS que devuelva usando los parámetros del mismo
cuántos dígitos tiene un número. En este método está prohibido usar la sentencia
return.

3. Escribe un método llamado ENMEDIO que acepte dos número enteros positivos como
argumento y si el número de dígitos de ambos números es impar y ambos números
tienen el mismo número de dígitos devuelva, usando los argumentos del método, el
dígito que ocupa la posición de en medio de cada uno de los números. Si todas estas
condiciones se cumplen, el método devolverá true usando la sentencia return, y
devolverá false si alguna de las condiciones no se cumplen.

Nota 1: Dentro de este método habrá que usar obligatoriamente el método


elaborado en el apartado 2.
Nota 2: dentro de este método estará prohibido usar Console.Write, Console.WriteLine,
Console.Read o Console.ReadLine.

4. Escribe un programa principal en el que se empleen los métodos anteriores para hacer
lo que sigue:
a. Pedir un número entero por consola y activar el método del apartado 1 para (si
se pudo) mostrar el primer y el último carácter tecleados. Si no se pudo, se
mostrará el mensaje siguiente en la consola “No se pudo hacer el cálculo”.
b. Pedir dos enteros positivos por consola y mostrar en la consola el dígito que
ocupa la posición de en medio en cada uno de ellos (si se pudo hacer el
cálculo). Si el cálculo no se pudo hacer se mostrará el mensaje siguiente en la
consola: “No se pudo hacer el cálculo”.

Nota 1: los métodos de este ejercicio tendrán exactamente los argumentos descritos
en el enunciado, ni más ni menos.
Nota 2: En el programa principal se puede usar Console.Write, Console.WriteLine,
Console.Read o Console.Readline.

20) Hacer tres métodos, cada uno de los cuales resolverá los ejercicios 3,4 y 5 de la relación
de problemas del tema 2. Para implementar dichos métodos no se podrán usar métodos
de lectura de valores del teclado o escritura de valores por pantalla . Implementar un
programa principal que, mediante un menú, haga uso de dichos métodos; en el programa
principal sí se podrán usar métodos de lectura de valores del teclado o escritura de
valores por pantalla

Prácticas de Informática Pág. 18


Departamento de Sistemas Informáticos Escuela de Ingenieros Industriales de Albacete

Prácticas de Informática Pág. 19

También podría gustarte