def muestra_num(a,b):
if a>b:
aux=a
a=b
b=aux
for i in range(1,b-a):
print(a+i)
ext_inf=int(input('Extremo inferior del intervalo: '))
ext_sup=int(input('Extremo superior del intervalo: '))
muestra_num(ext_inf,ext_sup)Menú principal
- Inicio
- Programación C
- Programación C++
- Vectores class='sub'>
- Funciones class='sub'>
- Ficheros
- Sobrecarga de operadores
- Robot bq
- Arduino
- Python
- Visión Artificial openCV class='sub'>
- Ejercicios
- Otros
domingo, 7 de febrero de 2021
Imprimir números comprendidos en un intervalo - Bucle For - Python
Calcular factorial - Python
Realizar un programa que pida al usuario un numero y que realice el factorial de este. Se ha implementado la función def factorial(a): para así poder reutilizar el código si fuera necesario.
Solución:
def factorial(a):
result=1
for i in range(1,a+1):
result=result*i
return(result)
n=int(input('Intro numero: '))
print(f'{n}! = {factorial(n)}')
Manejo de excepciones - Python
En el anterior post vimos como podían surgir posibles problemas si el usuario no introducía como extremos del intervalo números. Ahora trataremos de cubrir situaciones inesperadas para que el programa pueda responder con un mensaje de error, para ello utilizaremos las excepciones.
Las excepciones constan por lo menos de dos partes: 'try' y 'except TypeError'. Dentro de try introduciremos la sección critica del programa, es decir, donde pueden surgir errores. Si sucede una situación la cual el programa no ha contemplado previamente, saltará la excepción que será tratada dentro de 'except TypeError'. En nuestro caso el programa imprimirá un mensaje de error y devolverá al sistema -1 indicando así que algo ha ido mal.
De esta forma si el usuario introduce una cadena de caracteres como extremo del intervalo, la excepción saltará y el sistema sabrá manejar la situación.
A continuación se muestra una posible solución:
from random import *
def aleatorio(a,b):
try:
if a>b:
aux=a
a=b
b=aux
return randint(a, b)
except TypeError:
print("Los limites deben ser numeros")
return -1
for i in range(0,5):
print(aleatorio(2,7))
Obtener números aleatorios comprendidos en un intervalo con Randint() - Python
Lo primero que debemos hacer es importar la biblioteca random que nos permitirá utilizar el comando randint() posteriormente. Lo haremos de la siguiente forma:
from random import *Ahora definiremos una función que nos devuelva un numero aleatorio entre dos valores dados. Contemplaremos la posibilidad de que el usuario introduzca un valor del extremo inferior del intervalo mayor al del extremo superior (por ejemplo [7,2]). Para solucionar este posible fallo, se intercambiarán los valores de los extremos del intervalo (en nuestro ejemplo resultaría [2,7]). Finalmente utilizaremos randint(extremo inferior, extremo superior).
Por último, se ha realizado un bucle for para sacar por pantalla 5 valores aleatorios comprendidos en el intervalo indicado por el usuario.
Posible solución:
from random import *
def aleatorio(a,b): if a>b:
aux=a
a a=b
b b=aux
return randint(a, b)
for i in range(0,5):
print(aleatorio(2,7))
Cabe destacar que si el usuario introduce una cadena de caracteres como extremo del intervalo, el programa no funcionará. En el siguiente post haremos unas pequeñas modificaciones para contemplar estas situaciones.
Funcion de paridad - Python
Definir una función que detecte la paridad de un número introducido por el usuario.
Solución:
def paridad(a):
if a%2==0:
print("es par")
else:
print("es imapr")
num=int(input('Intro numero: '))
paridad(num)
Funciones Lambda - Python
Las funciones Lambda son aquellas funciones en las que solamente se ejecuta una linea de código. En ellas, primeramente se definen los parámetros y posteriormente la instrucción que se realizará. A continuación se muestran algunos ejemplos:
x=lambda a,:a*5
print(x(3)) """ Salida: 15 """
y=lambda a,b: a + b
print(y(3,5))""" Salida: 8 """
z=lambda a,b,c: a+b*c
print(z(1,2,3))""" Salida: 7 """
martes, 8 de septiembre de 2020
Representa números triangulares - C++
Se pide realizar un programa que compruebe si el número introducido por el usuario es triangular y si es así, que lo represente como un triángulo rectángulo. Se propone el siguiente código:
1 #include <iostream>
2 using namespace std;
3
4 void imprime_linea(int);
5 bool esTriangular(int N);
6
7 int main()
8 {
9 int suma=0, i=1, n;
10 cout << "Intro numero: "; cin >> n;
11
12 if(esTriangular(n))
13 {
14 cout << "Es triangular" << endl;
15 suma=0;
16 for(int i=1; suma<n; i++)
17 {
18 suma+=i;
19 imprime_linea(i);
20 }
21 }
22 else
23 cout << "No es triangular" << endl;
24 }
25
26 void imprime_linea(int i)
27 {
28 for(int j=0; j<i; j++)
29 cout << "*";
30
31 cout << endl;
32 }
33
34 bool esTriangular(int N)
35 {
36 int suma=0;
37 for(int i=1; suma<N; i++)
38 suma+=i;
39 if (suma==N)
40 return true;
41 else
42 return false;
43 }
Serie de Tribonacci - C++
Se quiere realizar un programa que muestre la serie de Tribonacci de tal forma que el usuario introduzca por teclado el número de términos que quiere que se muestren. En la solución se han utilizado dos funciones, una para el cálculo de la serie y otra para recorrer y mostrar el vector.
1 #include <iostream>
2 #include <vector>
3 using namespace std;
4
5 //FUNCIONES
6 vector<int> serie_tribonacci(int);
7 void muestra_vector(const vector<int>&);
8
9 int main()
10 {
11 int terminos;
12
13 //Numero de terminos introducidos por teclado
14 cout << "Intro numero de terminos: ";
15 cin >> terminos;
16
17 //Para mayor optimizacion declaramos el vector con el numero de terminos
18 vector<int> v(terminos);
19
20 //Llamada a funcion serie_tribonacci
21 v=serie_tribonacci(terminos);
22 muestra_vector(v);
23
24 return 0;
25 }
26
27 vector<int> serie_tribonacci(int n)
28 {
29 vector<int> v(n); //Vector de tamaño de elementos
30
31 //Condiciones inciales
32 v.at(0)=1;
33 v.at(1)=1;
34 v.at(2)=2;
35
36 //Recorrido del vector desde la posicion 3
37 for(size_t i=3; i<n; i++)
38 v.at(i)=v.at(i-1)+v.at(i-2)+v.at(i-3);
39
40 return v;
41 }
42
43 void muestra_vector(const vector<int>& v)
44 {
45 for(auto x:v)
46 cout << x << " ";
47 }
lunes, 7 de septiembre de 2020
Multiplicación de fracciones. Introducción a sobrecarga de operadores - C++
Se procede a realizar un programa que realice la multiplicación de dos fracciones. En primer lugar se solicitarán las fracciones al usuario y para ello, se han creado dos funciones dentro de la clase Fraccion, SetN y SetD. Posteriormente se realiza la multiplicación de estas mediante una función friend declarada en la misma clase. Para realizar dicha operación se necesita acceder al numerador de cada fraccion de forma independiente al denominador, por lo que necesitaremos las funciones GetN y GetD. Finalmente, en el main se declara la variable fMulti como Fraccion y se llama a la función multiplicación. Se mostrará el resultado por pantalla.
En las siguiente entradas de este blog veremos como simplificar este programa utilizando la sobrecarga de operadores.
1 #include <iostream>
2 using namespace std;
3
4 class Fraccion
5 {
6 int n,d;
7
8 public:
9 Fraccion(int num=0, int den=1)
10 {
11 n=num;
12 d=den;
13 }
14 //Set para introducir los datos de las fracciones
15 void SetN(int num)
16 {
17 n=num;
18 }
19 void SetD(int den)
20 {
21 d=den;
22 }
23 //Para diferenciar el num y den de cualquier fracion y sacarlo por pantalla
24 int GetN()
25 {
26 return n;
27 }
28
29 int GetD()
30 {
31 return d;
32 }
33 //Friend para que la funcion pueda acceder a la clase
34 friend Fraccion multiplica(const Fraccion &f1, const Fraccion &f2);
35 };
36
37 Fraccion multiplica(const Fraccion &f1, const Fraccion &f2)
38 {
39 Fraccion result;
40 result.n=f1.n*f2.n;
41 result.d=f1.d*f2.d;
42 return result;
43 }
44 int main()
45 {
46 Fraccion f1, f2, fMulti;
47 int n1,n2,d1,d2;
48
49 cout << "Intro primer numerador: "; cin >>n1;
50 cout << "Intro primer denominador: "; cin >>d1;
51 cout << endl << "Intro segundo numerador: "; cin >>n2;
52 cout << "Intro segundo denominador: "; cin >>d2;
53
54 f1.SetN(n1);
55 f1.SetD(d1);
56 f2.SetN(n2);
57 f2.SetD(d2);
58
59 fMulti=multiplica(f1,f2);
60
61 cout<<endl<<"La multiplicacion es: "<<fMulti.GetN()<<" / "<<fMulti.GetD()<<endl;
62 }
jueves, 3 de septiembre de 2020
Histograma de un vector - C++
1 ///HISTOGRAMA DE UN VECTOR
2 #include <iostream>
3 #include <vector>
4 #include <fstream>
5 using namespace std;
6 double calcula_media(vector<int>);
7
8 int main()
9 {
10 vector<int> v;
11 ifstream fich("vector.txt");
12 int dato;
13
14 ///Intro datos de fichero a vector
15 while(fich >> dato)
16 v.push_back(dato);
17
18 ofstream histo("histograma.txt");
19
20 for(size_t j=0; j<v.size(); j++)
21 histo << j << " ";
22 histo << endl;
23
24 //Crear vector histograma con mismo tamaño al de v
25 vector<int> histograma(v.size());
26
27 //Contabilizar
28 for(size_t i=0; i<v.size(); i++)
29 histograma.at(v.at(i))++;
30
31 for(auto x:histograma)
32 histo << x << " ";
33 histo << endl;
34
35 double media=calcula_media(v);
36 histo << "Media: " << media;
37 }
38
39 double calcula_media(vector<int> v)
40 {
41 double suma=0;
42 for(size_t j=0; j<v.size(); j++)
43 suma+=v.at(j); //suma=suma+v.at(j)
44 double media=suma/v.size();
45 return media;
46 }