Está en la página 1de 2

Curso: Algoritmos y Estructura de Datos

Ejercicios con Punteros

1. Construya una función que reciba los siguientes parámetros


 3 punteros a enteros, en los que se recibirán 3 arrays de enteros del mismo tamaño, llenos
con números aleatorios. Los tres punteros se llamaran Input, Output_1 y Output_2
 Un entero Tam, que indique el tamaño de los arrays
 Un puntero a función, llamado pf, que permita apuntar a una función que permita recibir
un número entero y devuelva un boleano.

La función realizará lo siguiente:

 Recorrerá utilizando únicamente aritmética de punteros, el array Input y enviará el valor


de cada elemento del array a la función pf, si la función pf indica verdadero, copiará el
valor del elemento en la lista Output_1 y si devuelve falso en la lista Output_2. El recorrido
de los arrays tanto de Input como de Output debe ser estrictamente usando aritmética de
punteros, no siendo permitido el uso de índices, es decir que no está admitido el uso de
expresiones como
o Output_1 [j] = Input[i]
o *(Output_1+j) = *(Input+i)

Deberá usar expresiones como (es solo un ejemplo, no debe usarse a literal)

For(Input; Input < Input:fin; Input++)

{ *Output_1 = *Input; Output_1++; }

 Culminada la lectura del array Input, si alguno de los Arrays Output_1 u Output_2, no
estuvieran llenas, deberán llenar los espacios sobrantes con 0.

Implemente las funciones siguientes, las cuales reciben un número entero y devuelven
verdadero si se cumple la condición y falso si no se cumple

 Es un número par
 Es un múltiplo de 3
 Es un año bisiesto

Las funciones antes descritas son las que pueden enviarse en el parámetro pf.

Codifique el programa de tal manera que pueda imprimir como están los arrays antes de
ingresar a la función y como terminan luego de ingresar a la función. Realice las codificaciones
necesarias para demostrar el correcto funcionamiento con cualquiera de las funciones antes
mencionadas.
2. Realice el programa del ejercicio anterior con las siguientes modificaciones.
a. El puntero Input, apunta al inicio de una lista enlazada implementada con la estructura
nodo, donde el next del último elemento será un puntero NULL
b. Los punteros Output_1 y Output_2; también son punteros a estructuras nodo, que
inicialmente inician en Null
c. Los valores que se enviaran a los punteros a funciones corresponde al elemento valor
de la estructura nodo.
d. En este programa, no se copiaran valores, sino que se retirarán los nodos de la lista
Input y se moverán la lista output correspondiente. Es decir no se hará uso de los
comandos new y delete; para mover los nodos; en su lugar se apuntará el next al
elemento adecuado que se está moviendo en la lista.
e. Al finalizar el programa Input, apuntará a Null, al igual que el next de los elementos
finales de las listas Output_1 y Output_1.
f. Debe acomodar el programa para presentar como están las listas antes y después de
ingresar a la función.
g. La estructura nodo es la siguiente.
struct nodo { int valor; nodo *next;}

3. Utilizando la estructura struct nodo { int valor; nodo *next;}, crear un programa que haga lo
siguiente
a. Pida al usuario el ingreso de un número por teclado. Con el número ingresado, genera
una lista enlaza de números enteros que parta del 1 hasta el número ingresado
b. Construya una función que tenga como parámetros el primer elemento de la lista
enlazada y un número entero. La función deberá eliminar de la lista, el elemento cuyo
número coincida con el parámetro entero, así como todos los múltiplos de dicho
parámetro; si es que estuvieran presentes.
c. Debe permitir al programa ingresar números enteros que desean retirarse de la lista
así como sus múltiplos (haciendo uso de la función antes descrita), hasta que el
usuario ingrese un número 0.

También podría gustarte