El último nudo de la redBuscar AlgoritmosContacto

última actividad realizada en enero de 2012
Mostrar todos los números perfectos hasta N
Determinar si el número de elementos de una pila es un número primo10 de Enero de 2012 .Pilas .C/C++

Crear una función recursiva externa (fuera de la clase o estructura de datos PILA) que verifique si la cantidad de elementos de una pila cualquiera es un número primo.

Ejemplo de llamada a la función:

x = verifica_cantidad(pila);

<> algoritmo - código fuente - pseudocódigo
/*
Se supone que existe una clase pila que tiene esta estructura:

class pila {
propieda cima

metodo push (x)
metodo pop() : devuelve y actualiza la cima
metodo empty() : devuelve true si no hay elementos
}
*/


/* hacer una copia de la pila antes de pasar por aquí */

int r_verifica_cantidad (pila p) {
if (p.empty ())
return 0;
else {
p.pop(); /* quita un elemento */
return 1 + r_verifica_cantidad(p); /* 1 elemento + los que queden en la pila */
}
}

int verifica_cantidad (pila p) {
int n = r_verifica_cantidad (p); /* numero de elementos */

return es_primo (n); /* una función que verifica si un número es primo */
}

¿cómo funciona? La recursión lo único que hace es contar de 1 en 1 los elementos que van siendo extraídos de la pila (sabiendo que la pila solo puede hacer push o pop cada vez). Se puede "rehacer" la pila luego dentro de la misma función, pero eso no es parte de este problema

Si pila tiene 5 elementos, la función recursiva hace:

pop
1 + f (pila)
pop
1 + 1 + f (pila)
pop
1 + 1 + f (pila)
pop
1 + 1 + 1 + f (pila)
pop
1 + 1 + 1 + 1 + f (pila)
pop
1 + 1 + 1 + 1 + 1 + f (pila)
¡empty!
f(pila) = 0 en el último caso

Entonces 1 + 1 + 1 + 1 + 1 + 0 = 5

Luego se verifica si es primo o no.

Más algoritmos resueltos que podrían interesarle

Realizar una suma de números mediante pilas

Se tienen dos números enteros almacenados en dos pilas. Se desea sumar ambos números y almacenar el resultado en una tercera pila.

Cada nodo representa un dígito del... [sigue]

Eliminar los elementos repetidos de una Pila

Se tiene una Pila cualquiera con una cierta cantidad de elementos, dentro de los cuales pueden haber elementos repetidos. Escriba un algoritmo, procedimiento o función en código... [sigue]

Función que calcula y retorna la desviación estándar

Implementar una función que reciba un arreglo de flotantes y la longitud del arreglo. La función debe regresar la desviación estándar obtenida de los elementos del arreglo.

Encontrar la cadena inmediatamente mayor en un arreglo

Se tiene un arreglo de cadenas y se desea introducir una nueva cadena al arreglo. Crear una función que devuelva el índice donde debería insertarse la nueva cadena, sabiendo que... [sigue]

Encontrar la palabra más larga y su número de caracteres

Ingresar una frase por teclado y determinar cuál es la palabra más larga y el número de caracteres de dicha palabra.

Sin funciones de cadena. Utilice comparación 1 a 1.

Contar el número de letras que contiene un texto

Solicitar un texto por entrada estándar y contar el número de letras que contiene. Recorrer la cadena usando while y hacer la comparación.

Retornar el menor elemento de un arreglo de estructuras recursivamente

Suponiendo que se tiene una estructura (struct) llamada Empleado y ésta contiene un campo entero llamado sueldo.

Crear una función recursiva que devuelva el menor de los... [sigue]

Determinar si una frase es palíndrome

Se desea una función que determine si una frase es un palíndrome (se lee igual de izquierda a derecha que de derecha a izquierda).

Sustituir varios espacios en blanco dentro de una frase

Escribir un programa que lea una frase, sustituya todas las secuencias de dos o más espacios por un solo espacio y a continuación visualice la frase resultante.

Nota: El... [sigue]