Contar el numero de arrays en una funcion

Iniciado por ramona98, 27 Agosto 2013, 12:04 PM

0 Miembros y 1 Visitante están viendo este tema.

ramona98

Hola,

Estoy haciendo una funcion que me diga el numero mas alto de un array.

#include <stdio.h>
#include <string.h>


// Exercise 9-5: Write a function that returns the maximum value of an array of
// numbers.


int maximo(int numeros[])
{

int i, numtotal; // index into the string
int nummaximo;
   
    nummaximo = numeros[0];

    numtotal = sizeof numeros / sizeof numeros[0];
    printf("##%d\n", numtotal);


for (i = 0; numeros[i] != '\0'; ++i) {
   
    if (nummaximo <= numeros[i]) {
    nummaximo = numeros[i]; }
    printf("de momento es %d\n", nummaximo);
       
    }
   
   

return (nummaximo);
}

int main()
{
   
    int bingo[] = {1,2,3, 4, 4, 4, 4, 4, 5, 4, 66, 3, 4, 3, 2, 67};
    int index22;
    index22 = sizeof bingo / sizeof bingo[0];
   

    printf("##total d numero s %d en bingo\n", index22);

    printf("el valor maximo es %d\n", maximo(bingo));



return (0);
}


El problema lo tengo en el contador de valores del array para completar el for

for (i = 0; numeros[i] != '\0'; ++i)
con este funciona correctamente pero al llegar al ultimo valor da numeros aleatorios.

for (i = 0; i <numtotal ; ++i) {
desconozco el pq pero numtotal siempre es 2 en la funcion.

cual es el motivo por el que fallo aqui?

Gracias y saludos

avesudra

#1
Tienes que pasarle el largo de la función al array, porque el sizeof en la función no te vale, sin embargo si te da el valor correcto dentro del ámbito en el que fue declarado el array. Bueno aquí tienes el código con esa modificación:
#include <stdio.h>
#include <string.h>


// Exercise 9-5: Write a function that returns the maximum value of an array of
// numbers.


int maximo(int numeros[], int index)
{
   int i = 0;
   int numTotal = 0; // index into the string
   int numMaximo = 0;

   numMaximo = numeros[0];
 
   for (i = 0; i < index ; ++i)
   {
       if (numMaximo <= numeros[i])        
           numMaximo = numeros[i];
       
       printf("de momento es %d\n", nummaximo);
   }

   return numMaximo;
}

int main(int argc, char *argv[])
{
   int bingo[] = {1,2,3, 4, 4, 4, 4, 4, 5, 4, 66, 3, 4, 3, 2, 67,2};
   
   int index = sizeof (bingo) / sizeof (bingo[0]);

   printf("##El total de numeros en bingo es de: %d\n", index);

   printf("El valor maximo es %d\n", maximo(bingo,index));

   return (0);
}

En C++11 puedes hacer esto:
Código (cpp) [Seleccionar]
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   int bingo[] = {1, 2, 3, 4, 4, 4, 4, 4, 5, 4, 66, 3, 4, 3, 2, 67, 2};

   int maxNum(0);
   for(auto &currentNum : bingo)
       if(currentNum > maxNum)
           maxNum = currentNum;

   cout << "The maximum value is: " << maxNum;

   return (0);
}


¡Un saludo!
Regístrate en