Ejercicio 1 1 2 /** * 3 * 4 * Escriba un programa que lea una letra mayúscula y la escriba en 5 minúscula.

Para 6 * ello, defina una función “May2minuscula” que recibe como parámetro un “char” y 7 * devuelve su correspondiente minúscula. Tenga en cuenta que si el 8 carácter no es 9 * una letra mayúscula, deberá devolver el mismo carácter (sin 10transformar). 11* */ 12 13#include <iostream> 14 15using namespace std; 16 17/** 18* @param c: Caracter en mayuscula * @return: El caracter c en minuscula. Si el parametro no es 19correcto, no se transforma. 20*/ 21char may2Minus(char); 22 23int main() 24{ char mayus; 25 26 cout << "Introduce una letra en MAYUSCULA: "; 27 cin >> mayus; cout << endl; 28 cout << "Transformación: " << may2Minus(mayus) << endl; 29 return 0; 30} 31 32char may2Minus(char c){ 33 if (c >= 'A' && c <='Z') return c+32; 34 else 35 return c; 36} 37</iostream> 38

Ej. 2 1 /** 2 * Escriba un programa que lea una letra e indique si corresponde a * 3 una respuesta 4 * afirmativa (una letra 's' o 'y'). Para ello, defina una función 5 “EsAfirmativo” a la que 6 * se le pasa un carácter y devuelve si la respuesta ha sido afirmativa. 7 * Como la entrada puede ser tanto minúscula como mayúscula, use la 8 función del 9 * ejercicio anterior para transformar el carácter de entrada de 10forma que 'S' y 'Y' sean 11* consideradas también como respuestas afirmativas. * 12*/ 13 14#include <iostream> 15 16using namespace std; 17 18/** Caracter en 19* @param c:El caracter cmayuscula * @return: en minuscula. Si el parametro no es 20correcto, no se transforma. 21*/ 22char may2Minus(char); 23 24/** * @param answer: La respuesta introducida 25* @return: true si la respuesta es afirmativa 26*/ 27bool esAfirmativo(char); 28 29int main() 30{ char letra; 31 32 cout << "Introduce una letra (s ó y) para respuesta afirmativa: 33"; cin >> letra; 34 cout << endl; 35 36 char respuesta = esAfirmativo(letra) ? 'S' : 'N'; 37 38 cout << "¿La respuesta fue afirmativa?: " << respuesta << endl; 39 return 0; 40} 41 42char may2Minus(char c){ if (c >= 'A' && c <='Z') 43 return c+32; 44 else 45 return c; 46} 47 48bool esAfirmativo(char letra){
if (may2Minus(letra) == 's' || may2Minus(letra) == 'y')

49 50 return true; 51 else return false; 52 } 53 </iostream> 54 55 Ej. 3 1 /** 2 * * 3 * Escriba un programa que reciba dos números, uno real y otro 4 entero, y que obtenga 5 * en la salida el resultado de elevar el primero al segundo. Para 6 ello, incluya una * función “Potencia” que devuelva el resultado de esa expresión. 7 * Nota: no puede hacer uso de la función de biblioteca “pow”. 8 * 9 */ 10 11#include <iostream> 12 13using namespace std; 14 /** 15* @param real: Base de la potencia 16* @param entero: Exponente 17* @return double: Resultado de real^entero 18*/ 19double potencia(double, int); 20int main() 21{ 22 int base; double exponente; 23 24 cout << "Introduce una base y un exponente (Separados por 25 espacios): "; 26 cin >> base; 27 cin >> exponente; 28 cout << "Potencia: " << potencia(exponente, base); return 0; 29 } 30 31 double potencia(double exp, int base){ 32 33 double res = base; 34 35 for (int i=1; i<exp; i++) res *= base; 36 return res; 37 38 39/** Más formas de hacerlo * 40* while (--exp)

41 42 43 * res *= base; 44* return res; 45*-------------------------------for (int i=exp; i > 1; res *= base, i--); 46* * return res; 47 */ 48} 49 50</iostream> 51 52 53 Ej. 4 1 /** 2 * Escriba un programa que lea 4 números a, b, c y d que definen el * 3 polinomio 4 * ax³ + b*x² + c*xd , que lo evalúe en un punto y que muestre ese 5 valor. Para ello, 6 * defina la función “Evaluar” que recibe los cuatro valores junto con un valor x donde 7 * evaluarlo, y que devuelve un número resultado de la evaluación. 8 Para resolverlo, por 9 * un lado deberá reutilizar la función “Potencia” del ejercicio 10anterior, y por otro, 11* evitar declarar ninguna variable local en la función “Evaluar”. * 12*/ 13 14#include <iostream> 15 16using namespace std; 17 18 19double potencia(double, int); 20double evaluar(double, double, double, double, double); 21int main() 22{ 23 double a,b,c,d,x; 24 cout << "Introduzca números para a,b,c,d separados por espacios: 25 "; 26 cin >> a; 27 cin >> b; 28 cin >> c; 29 cin >> d; cout << "\nIntroduzca un valor x para evaluar el polinomio ax³ + 30 bx² + cx + d: "; 31 cin >> x; 32 cout << "\nEl resultado para estos datos es: " << 33evaluar(a,b,c,d,x); return 0; 34

35 36} 37/** 38* @param x: punto en el que evaluar el valor del polinomio 39* @return: El valor de polinomio para x 40*/ 41double evaluar(double a, double b, double c, double d, double x){ return a*potencia(3,x) + b*potencia(2,x) + c*x + d; 42} 43 44/** 45* @param exp: Base de la potencia 46* @param base: Exponente 47* @return double: Resultado de real^entero */ 48double potencia(double exp, int base){ 49 double res=base; 50 for (int i=1; i < exp; i++) 51 res*=base; 52 return res; 53} 54 55</iostream> 56 Ej. 9 1 /** 2 * Escriba una función “Intercambiar” para intercambiar el valor de * 3 dos variables de 4 * tipo “double”. Es decir, en la llamada se pasarán dos variables y, 5 después de ella, los 6 * valores de ambas estarán intercambiados. * 7 */ 8 9 #include <iostream> 10 11using namespace std; 12 13/** Función que intercambia los valores de los parametros dados. 14* */ 15void intercambiar(double& una, double& otra){ 16 double aux = una; una = otra; 17 otra = aux; 18 } 19 20int main() 21{ 22 double una, otra; 23 cout << "Dame dos nunmeros y los intercambio: "; 24 cin >> una >> otra; 25

26 27 28 cout << "Antes una= " << una << " y otra= " << otra << endl; 29 intercambiar(una, otra); cout << "Ahora una= " << una << " y otra= " << otra << endl; 30 } 31 </iostream> 32 33 Ej. 10 1 2 /** 3 * Escriba una función “Ordenar2” para ordenar los valores de dos 4 variables de tipo 5 * “double”. Es decir, en la llamada se pasarán dos variables y, al finalizar, la primera 6 * variable tendrá el menor y la segunda el mayor de los valores. 7 Para resolverlo, use la 8 * función “Intercambiar” del ejercicio anterior. 9 */ 10 11#include <iostream> 12 using namespace std; 13 14/** 15* Función que intercambia los valores de los parametros dados. 16*/ 17void intercambiar(double& una, double& otra){ double aux = una; 18 una = otra; 19 otra = aux; 20} 21 22void ordenar2(double& menor, double& mayor){ if (menor > mayor) 23 intercambiar(menor, mayor); 24} 25 26int main() 27{ double n1, n2; 28 29 cout << "Introduce dos número y te los devuelvo ordenados: "; 30 cin >> n1 >> n2; 31 ordenar2(n1, n2); 32 cout << n1 << " " << n2; 33 return 0; 34 35} </iostream> 36 37

Ej. 11 1 2 /** 3 * 4 * Escriba una función “Ordenar3” para ordenar los valores de tres 5 variables de tipo Es decir, en la llamada se pasarán tres variables y, 6 * “double”.ella, la después de 7 * primera variable tendrá el menor, la segunda el mediano y la 8 tercera el mayor de los 9 * valores. Para resolverlo, use la función “Ordenar2” del ejercicio 10anterior teniendo en * cuenta que para que tres valores queden ordenados, basta con 11ordenar los dos 12* primeros, luego los dos segundos y de nuevo los dos primeros. 13* 14*/ 15 16#include <iostream> 17 using namespace std; 18 19/** 20* Función que intercambia los valores de los parametros dados. 21*/ 22void intercambiar(double& una, double& otra){ double aux = una; 23 una = otra; 24 otra = aux; 25} 26 27void ordenar2(double& menor, double& mayor){ if (menor > mayor) 28 intercambiar(menor, mayor); 29} 30 31void ordenar3(double& a, double& b, double& c){ ordenar2(a,b); 32 ordenar2(b,c); 33 ordenar2(a,b); 34} 35 36int main() 37{ double a,b,c; 38 39 cout << "Introduce 3 numeros y los ordeno de menor a mayor: "; 40 cin >> a >> b >> c; 41 cout << "Antes a=" << a << " b=" << b << " c=" << c << endl; 42 ordenar3(a,b,c); 43 cout << "Ahora a=" << a << " b=" << b << " c=" << c << endl; return 0; 44 } 45 </iostream> 46 47

Ej. 12 1 /** 2 * Escriba una función “Triangulo” que devuelva el tipo de un * 3 triángulo definido a 4 * partir de las tres longitudes de sus lados. Como puede 5 * comprobar, será necesario ordenar los tres valores para usar 6 exactamente los * mismos pasos, por lo que deberá usar la función “Ordenar3” del 7 ejercicio anterior. El 8 * valor devuelto será 0 para indicar que no es un triángulo, 1 para 9 indicar que se trata 10* de un triángulo isósceles, 2 para el tipo escaleno y 3 para el 11equilátero. * Finalmente, escriba una función “main” para probar este código, en 12la que se 13* declararán tres variables para almacenar las tres longitudes, y se 14llamará a la 15* función anterior para determinar el tipo de triángulo, de forma 16que se pueda escribir * en la salida estándar el mensaje correspondiente. 17* 18*/ 19 20#include <iostream> 21 22using namespace std; 23 void intercambiar(double&, double&); 24void ordenar2(double&, double&); 25void ordenar3(double&, double&, double&); 26unsigned short int triangulo(double, double, double); 27 28int main(){ double a,b,c; 29 30 cout << "Introduzca los tres lados del triángulo: "; 31 cin >> a >> b >> c; 32 33 switch (triangulo(a,b,c)){ case 0: 34 cout << "No es triángulo" << endl; 35 break; 36 case 1: 37 cout << "Isósceles" << endl; 38 break; case 2: 39 cout << "Escaleno" << endl; 40 break; 41 case 3: 42 cout << "Equilátero" << endl; break; 43 44 } 45 } 46 47 /** 48* Función que intercambia los valores de los parametros dados.

49 50 51 52*/ 53void intercambiar(double& una, double& otra){ double aux = una; 54 una = otra; 55 otra = aux; 56} 57 58/** Función que ordena de menor a mayor dos valores dados. 59* */ 60void ordenar2(double& menor, double& mayor){ 61 if (menor > mayor) 62 intercambiar(menor, mayor); 63} 64 65/** * Función que ordena de menor a mayor 3 valores dados. 66*/ 67void ordenar3(double& a, double& b, double& c){ ordenar2(a,b); 68 ordenar2(b,c); 69 ordenar2(a,b); 70} 71 72unsigned short int triangulo(double a, double b, double c){ 73 74 //Ordenamos los valores ordenar3(a,b,c); 75 76 if (a+b<=c) return 0; 77 else if (a==b && b==c) return 3; 78 else if (a==b || b==c) return 1; 79 else return 2; 80} 81</iostream> 82 83 84 Ej. 14 1 /** 2 * Considere el ejercicio 12, donde han usado un par de funciones de * 3 ordenación (para 4 * 2 y para 3 datos). Modifique el programa de manera que las dos 5 funciones tengan el 6 * mismo nombre “Ordenar”, y compruebe que sigue funcionando correctamente. 7 * 8 */ 9 10#include <iostream> 11

12using namespace std; 13 14void intercambiar(double&, double&); double, double); unsigned short int triangulo(double, 15 16int main(){ 17 double a,b,c; 18 cout << "Introduzca los tres lados del triángulo: "; 19 cin >> a >> b >> c; 20 21 switch (triangulo(a,b,c)){ 22 case 0: 23 cout << "No es triángulo" << endl; 24 break; case 1: 25 cout << "Isósceles" << endl; 26 break; 27 case 2: 28 cout << "Escaleno" << endl; break; 29 case 3: 30 cout << "Equilátero" << endl; 31 break; 32 33 } 34} 35 36/** Función que intercambia los valores de los parametros dados. 37* */ 38void intercambiar(double& una, double& otra){ 39 double aux = una; 40 una = otra; otra = aux; 41 } 42 43 /** 44* Función que ordena de menor a mayor dos valores dados. 45*/ 46void ordenar(double& menor, double& mayor){ if (menor > mayor) 47 intercambiar(menor, mayor); 48} 49 50/** 51* Función que ordena de menor a mayor 3 valores dados. 52*/ 53void ordenar(double& a, double& b, double& c){ ordenar(a,b); 54 ordenar(b,c); 55 ordenar(a,b); 56} 57 58unsigned short int triangulo(double a, double b, double c){ 59 //Ordenamos los valores 60 ordenar(a,b,c); 61

62 63 64 65 66 if (a+b<=c) return 0; 67 else if (a==b && b==c) return 3; else if (a==b || b==c) return 1; 68 else return 2; 69 } 70</iostream> 71 72 73 74 75 Ej. 17 1 /** 2 * Considere el siguiente sistema de 2 ecuaciones con 2 incógnitas, * 3 así como sus 4 * correspondientes soluciones: 5 * El sistema es compatible determinado (tiene una solución) si 6 a⋅e−b⋅d≠0 mientras 7 * que tiene cero o infinitas soluciones en caso contrario. 8 * Escriba un programa para obtener la solución de un sistema compatible 9 * determinado. Para ello, deberá leer los 6 valores que determinan 10el problema y 11* obtener por pantalla el correspondiente par de valores (x,y) 12-solución del sistema- o * un mensaje indicando que no es compatible determinado. Para ello, 13defina una 14* función que, a partir del sistema, obtiene las soluciones. Además, 15esta función 16* devuelve un entero que indica si ha habido algún error, ya que es 17posible que el * sistema no tenga una solución. 18* 19*/ 20 21#include <iostream> 22 23using namespace std; 24 25/** @Param Double& double&: Solución del sistema. * 26* @return: Codigo de finalización de la función 27*/ 28int resuleveSistema(double, double, double, double, double, double, 29double&, double&); 30 int main() 31{ 32 double a,e,b,f,d,c,x,y; 33

34 cin >> a >> e >> b >> f >> d >> c; 35 if (resuleveSistema(a,e,b,f,d,c,x,y)) cout << "No es compatible determinado"; 36 else 37 cout << "Solución: x=" << x << " y=" << y; 38 return 0; 39} 40 41int resuleveSistema(double a, double e, double b, double f, double d, 42double c, double& x, double& y){ if (!(a*e - b*d)) return 1; 43 else{ 44 x = (c*e - b*f) / (a*e - b*d); 45 y = (a*f - c*d) / (a*e - b*d); return 0; 46 } 47 } 48</iostream>

cout << "Introduce a, e , b, f, d , c: ";

Sign up to vote on this title
UsefulNot useful