5.2 Punteros y arrays

En numerosas ocasiones hay que definir funciones para el tratamiento de arrays que deben devolver más de un valor, sobre todo en arrays bidimensionales o matrices. Veamos algunos ejemplos:
 
 
5.2.1 Función tal que dado un array de enteros devuelve el máximo y la posición donde se encuentra. Podemos hacer dos versiones según el máximo se devuelva en el nombre de la función (como en la función 2.1.8):











5.2.2 O los dos argumentos sean de entrada/salida:











5.2.3 Función tal que dada una matriz de números reales y un valor x devuelva la primera posición (fila y columna) donde se encuentra x ó (-1,-1) si no está.














5.2.4 Función tal que dada una matriz de reales devuelve el máximo y el mínimo de sus elementos.













5.2.5 Función que lea desde teclado el número de filas y columnas de una matriz y después lea los elementos de la matriz correspondiente. Proporcionamos dos soluciones casi iguales, en la primera las variables locales numf y numc nos sirven para leer las dimensiones y los bucles y sus valores son copiados en los argumentos punteros nf y nc:












5.2.6 O esta otra solución sin necesidad de definir variables locales, sino trabajando directamente con los punteros nf y nc. Nótese que la sentencia scanf no necesita &:



5.2.7 Usando la misma función intercambia 5.1.2, implemente una función que reciba una MatrizReal m y dos números de fila f1 y f2, y devuelva m modificada (no otra matriz, sino la misma m) de forma que los elementos de las filas f1 y f2 estén intercambiadas. Por ejemplo, si intercambiamos las filas 1 y 3:
 









5.2.8 Implemente una función tal que dada una MatrizReal devuelva el valor mínimo y la primera posición (fila y columna) donde se encuentra. Por ejemplo en la matriz m anterior devolvería como mínimo 0 y como posición fila 0 columna 2.








No hay comentarios:

Publicar un comentario