Hola:
El programa tiene bastantes fallos:
Por un lado estás intentando acceder a los índices del array así:
Cuando
i es un
float.
Los índices del array son
int. No se puede acceder a
array[4.5], por ejemplo (en rigor sí se podría, pero sobrecargando el operador y en todo caso ya estamos hablando de otra cosa)
Otro fallo:
Estas intentando que el bucle vaya desde
float = 0 (error comentado arriba) a
float = num[10]. No tiene sentido, querrás que el bucle vaya hasta el índice 10 (realmente 9, ya que un array de 10 elementos va de 0 a 9), pero no hasta el valor que haya en num[10];
Por otro lado, en la declaración de la función tienes:
y en la implementación:
La función retorna un puntero a
float*, pero tú retornas
mayor, que es
float (no
float*)
Por otro lado, el propio algoritmo de la función no te va a funcionar correctamente, porque haces comparaciones 2 a 2, por lo que realmente sólo te va a retornar el mayor de los últimos dos números comparados. Suponiendo que el blucle estuviera bien, te compararía el valor del índice 8 y del índice 9 (valores 9 y 10 del array)
Además ten cuidado porque cuando haces:
Código C++:
Ver originalfor(w=0;w<=num;w++)
{
if(num[w]>=num[w-1])
.......................
En la primera iteración te estás saliendo fuera del array, ya que si w=0, w-1=-1, o sea que estás intentando acceder a la posición -1 del array. Si te compilase, lo siguiente que tendrías probablemente fuera un error de segmentación.
Bueno, además, haces uso de variables globales que no tienen mucho sentido.
Con respecto a recorrer el array en la función, puedes definir el tamaño del mismo con una constante, así puedes usar esa constante para recorrer el bucle, y con sólo cambiar su valor te valdrá para cualquier tamaño de array:
Te pongo una propuesta sin los errores:
Código C++:
Ver original#include <iostream>
using namespace std;
const int tam_array=10;
float tomarMayor(float M[tam_array]);
int main() {
float A[tam_array];
int i=0;
for(i=0;i<tam_array;i++)
{
cout << "Introduzca un numero para introducir en el array:";
cin >>A[i];
}
cout<<tomarMayor(A);
return 0;
}
float tomarMayor(float M[tam_array])
{
float mayor=0;
for(int w=0;w<tam_array;w++)
{
if(M[w]>=mayor)
{
mayor = M[w];
}
}
return mayor;
}