Skip to article frontmatterSkip to article content

Ejercicios de punteros

Ejercicios diseñados para afianzar el uso de punteros, la aritmética de punteros y el paso de variables por referencia.

1: Referencias y Aritmética

1.1: Duplicar valor

Implementar void duplicar(int *numero) que modifique el valor de la variable original.

1.2: División Lenta II

Implementar int division_lenta(int dividendo, int divisor, int *cociente, int *resto). Los resultados se devuelven modificando las variables a las que apuntan cociente y resto.

Utilicen el retorno para indicar si la división fue correcta o nó.

1.3: Estadísticas de Arreglo

Implementar void estadisticas(int arr[], size_t n, int *min, int *max, double *prom).

1.4: Largo seguro con punteros

Implementar size_t largo_seguro(const char *str, size_t capacidad). Lógica: Inicializar un puntero const char *fin = str;. Iterar con while (*fin != '\0' && (size_t)(fin - str) < capacidad) { fin++; }. El largo es fin - str.

2: Manipulación con Punteros

2.1: Ordenamiento con intercambia

Implementar un algoritmo de ordenamiento (ej. Burbuja) que para intercambiar elementos llame a void intercambia(int *a, int *b).

2.2: Búsqueda de subcadena

Implementar char* busqueda(const char *cadena, const char *buscado). Se debe retornar un puntero al inicio de la primera ocurrencia de buscado dentro de cadena, o NULL.

2.3: Inversión de arreglo

Implementar void invertir(int *inicio, int *fin). Se intercambia *inicio con *fin y se avanza inicio y retrocede fin hasta que se crucen.