Ayuda: Longitud de un Array. [SOLUCIONADO]

Buenas... denuevo por acá para consultar.

Quisiera saber si alguien conoce como saber la longitud de un array que no lo defino yo.

Ejemplo:
{8300,4350,400,650,400,650,400,1700,400,650,400,1700,400,700,
350,700,400,650,400,4300,450,650,400,650,400,650,400,1700,400,
700,350,650,400,700,350,650,400}

Esos valores tendrian almacenado dentro de un array, lo que yo quisiera saber es cómo hago para que me diga la cantidad de elementos que tiene el array, asi puedo colocarlo en un "FOR" para manipular cada elemento.

Pd: ya goglee hasta donde pude y no tuve buenos resultados, por eso paso por acá.

Gracias Gente.

Hola,
para que podamos ayudarte, ¿podrías darle un nombre a esa variable donde está ese array de datos, y decir de qué tipo es?

Podría funcionar esto:

Elementos=sizeof(Array)/sizeof(Array[0]);

Al menos en el compilador no da error :*

@curro92:

Perdón, según deduzco podría ser un int, porque el array contiene números enteros de tamaño chico. Entonces sería...

Int NombreArray[]: {8300,4350,400,650,400,650,400,1700,400,650,400,1700,400,700,
350,700,400,650,400,4300,450,650,400,650,400,650,400,1700,400,
700,350,650,400,700,350,650,400};

@Marcial.

Elementos=sizeof(Array)/sizeof(Array[0]);

Voy a probar que tal funciona, pero por lo que creo entender, estas haciendo una división entre la cantidad de elementos del array y un valor que esté dentro del elemento "0" del array.

Ahora me sirvió de mucha ayuda para probar lo siguiente.

int Elementos = sizeof(Array);

Cuando llegue a casa lo probaré y les comentaré el resultado. Gracias.

NO, el tamaño del array entero entre el tamaño del primer elemento

Int NombreArray[]: {8300,4350,400,650,400,650,400,1700,400,650,400,1700,400,700,
350,700,400,650,400,4300,450,650,400,650,400,650,400,1700,400,
700,350,650,400,700,350,650,400};

int Elementos=sizeof(NombreArray[)/sizeof(NombreArray[[0]);

ya lo probé, funciona, jeje

Gracias MARCIAL por ayudarme con el código. Funcionó al fin.

/* Prueba de lectura de cantidad de elementos de un array...

Se supone que vienen los datos desde una función y yo tengo que saber que cantidad de elementos tiene el array para 
poder leer cada posición del mismo.

*/

// Este sería el valor que devuelve la función...
unsigned int ArrayFunc[37] = {8300,4350,450,650,350,700,350,1750,400,650,400,1700,400,700,350,700,350,650,400,4350,400,700,350,700,350,700,400,1700,400,650,400,650,400,700,350,700,350};

void setup()
{
  Serial.begin(9600);
}

void loop() 
    {

    int cantArray = (sizeof(ArrayFunc)/sizeof(ArrayFunc[0])); //Gracias a la comunidad Arduino y en especial a Marcial por ayudarme con éste código...
    Serial.print("Esta es la cantidad de posiciones que hay en el array: ");
    Serial.println(cantArray);
    
    for (int i = 0; i < cantArray; i++)
    {
     Serial.println("Posicion " + String(i) + ": " + String(ArrayFunc[i])); 
    }
    delay(3000);
    
     }

Probado en el puerto serial me tira estos valores:

Esta es la cantidad de posiciones que hay en el array: 37
Posicion 0: 8300
Posicion 1: 4350
Posicion 2: 450
Posicion 3: 650
Posicion 4: 350
Posicion 5: 700
Posicion 6: 350
Posicion 7: 1750
Posicion 8: 400
Posicion 9: 650
Posicion 10: 400
Posicion 11: 1700
Posicion 12: 400
Posicion 13: 700
Posicion 14: 350
Posicion 15: 700
Posicion 16: 350
Posicion 17: 650
Posicion 18: 400
Posicion 19: 4350
Posicion 20: 400
Posicion 21: 700
Posicion 22: 350
Posicion 23: 700
Posicion 24: 350
Posicion 25: 700
Posicion 26: 400
Posicion 27: 1700
Posicion 28: 400
Posicion 29: 650
Posicion 30: 400
Posicion 31: 650
Posicion 32: 400
Posicion 33: 700
Posicion 34: 350
Posicion 35: 700
Posicion 36: 350

Nuevamente Gracias a todos y espero poder aprender rápidamente asi sea yo también el que de soluciones... Un Abrazo.

Prueba_Array.ino (730 Bytes)

HOla, me meto (a pesar del que el tema esta ya algo añejo).

Andaba leyendo sobre punteros y referencias, producto de la necesidad de mandar arreglos a funciones y/o métodos.

Entiendo ahora, porque ya había leído el post, y no podía comprender esa fórmula tan rara para determinar la longitud del arreglo:

int cantArray = (sizeof(ArrayFunc)/sizeof(ArrayFunc[0]));

y se me ocurrió hacerme estas dos preguntas:

  1. ¿que ocurre si tengo un arreglo bidimensional PERO DE Strings (cuya longitud varia) con esta fórmula de trabajo?
    Algo así me refiero:
String tablaUsuarios[2][2] = {{"Nicolas","1234"},{"Oli","1234"}};
  1. ¿no hay una primitiva, como en la mayoría de los lenguajes, un atributo del dato?? tipo arreglo.length() o (en el caso de bidimensionales) arreglo[1].length() para poder determinar estas longitudes?

Bueno, muchas gracias por la atención... y queda planteada la pregunta.

Bueno veo que tienes un problema general con las normas de este foro.
Como eres nuevo te vuelvo a comentar.
Los post viejos de mas de 4 meses antes de responderlos te ponen un WARNING o ADVERTENCIA para que no los respondas.
Entonces si no debes responderlos porque lo haces?

Voy a cerrar el hilo porque nadie te va a responder ya que desde 13-01-2014, 17:30:57

Continua en tu tema, tópico o hilo, y ahi tendras tus respuestas.

Perlo loco.... cuanto problemas que tenés.

Justamente me sumo a un debate, que si bien se ha solucionado... el problema inicial, encuentro si otra faceta del tema que, en una de esas, a alguién más (que no sos vos evidentemente) le interese explorar.

Claro que vi la advertencia... pero que sea viejo no significa que no deje tela para cortar.

Así en el futuro, cuando alguién busque el tema, se encontrará tanto la solución al problema inicial como la continuidad del debate...

antiyanki:
...

Claro que vi la advertencia... pero que sea viejo no significa que no deje tela para cortar.

Así en el futuro, cuando alguién busque el tema, se encontrará tanto la solución al problema inicial como la continuidad del debate...

Las normas del foro son para leerlas y respetarlas pero si usted pretende venir a ignorarlas. Yo no se lo voy a permitir.
Para evitar males mayores cerré el hilo.