• Martes 5 de Noviembre de 2024, 09:36

Autor Tema:  Re: tamaño de un array  (Leído 2563 veces)

neo644

  • Nuevo Miembro
  • *
  • Mensajes: 18
    • Ver Perfil
    • http://www.neo644..com.ar
Re: tamaño de un array
« en: Jueves 4 de Abril de 2002, 23:14 »
0
como obtengo el tamaño, o se,a la cantidad de elementos ke tiene un array?

olla

  • Nuevo Miembro
  • *
  • Mensajes: 11
    • Ver Perfil
Re: tamaño de un array
« Respuesta #1 en: Lunes 8 de Abril de 2002, 12:36 »
0
Pregunta un poco absurda creo pero bueno ahí va la va la respuesta: Al tratarse de un Array, estamos hablando de una estructura estática, es decir que el tamaño se lo pones tu en el momento de la declaración.  

int array[20]: Array de 20 posiciones de enteros.

Si lo que quieres es saber la longuitid de una cadena de caracteres, que no es más que un array de caracteres utiliza la función strlen , que te devuelve un entero.
Eres tu John Wayne o lo soy yo?

jpastor

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: tamaño de un array
« Respuesta #2 en: Jueves 11 de Abril de 2002, 15:56 »
0
Como ha dicho olla al ser estaticos lo defines tu y es de ahi por donde lo puedes saber.

Por otro lado, además de esto no hay forma de saberlo directamente.

Si quieres poder trabajar con arrays sin tener que ir llevando controlado en tamaño a todas partes, podrías meterle un valor especial en el ultimo elemento.

jpastor

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: tamaño de un array
« Respuesta #3 en: Viernes 12 de Abril de 2002, 21:05 »
0
Bueno, me paso por aqui antes de irme a casa para corregir la gilipollez que dije ayer.

Si tenemos un array como el siguiente:

int datos[40];

podemos saber la memoria total que ocupa con:

sizeof (datos);

por lo que el numero de elementos seria:

sizeof (datos)/sizeof(int);

Por cierto olla, la pregunta no es tan absurda y lo comentado de sizeof se usa de vez en cuando.

ToTeX

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
    • http://www.totex.cl
Re: tamaño de un array
« Respuesta #4 en: Miércoles 17 de Abril de 2002, 22:05 »
0
Los arrays son estaticos?

Ke pasa si hago un puntero a un bloque de memoria y despues reajusto el tamaño de ese bloque con realloc?  Eso se comporta igual que un array...  es un aray?

Respecto al tema del tamaño, la mejor forma al usar array dinamicos con realloc es usar sizeof como dice jpastor, si es un array estatico la pregunta no tiene mucho sentido.
Hay que acordarse se que esta el '' al final cuando usamos cadenas.... ese igual se contaria en el tamaño del array:P
Salu2... ToTeX
[ www.totex.cl ]

jpastor

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: tamaño de un array
« Respuesta #5 en: Lunes 22 de Abril de 2002, 15:47 »
0
Bueno, en realidad yo acabe diciendo que si tiene sentido. Aca va un ejemplo:

int ArrayDeEnteros[] = {1, 2, 3, 2, 1};
int iNumElementos = sizeof (ArrayDeEnteros);

De lo otro no tengo mucha idea, solo decir que la declaracion de ArrayDeEnteros que he hecho reserva una zona de memoria determinada en tiempo de compilacion por lo que luego no puede variar.

Un puntero como:

BYTE *pArray = (BYTE *)malloc(40);

se comporta como un array pudiendo acceder a cada elemento con el operador [].

maltalara

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
tamaño de un array
« Respuesta #6 en: Viernes 26 de Abril de 2002, 02:12 »
0
:para ver el tamaño de un array segun los elementos que hayas introducido es:
la libreria creo es
#include <conio.h>
#include <string.h>
#include <ctype.h>
int x;

x = strlen(cadena);

strlen lee la longitud de la cadena.

o si no quieres usar strlen puedes usar el siguiente codigo en C++:

#include <iostream.h>
#include <ctype.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>

class digitos
{
 public:
   digitos(int *,int,char *);
   void setdatos();
   void imprime();

   void getdatos();

 private:
    int x[50], res;
    char z[50];
};
//constructor
  void digitos::digitos(int xx[50],int respuesta,char zz[50])
  {
   int y;
   for (y=0; y<50; y++)
   {
    x[y] = xx[y];
   }
    strcpy(z,zz);
    res = respuesta;
  }
   void digitos::setdatos()
   {
    int y;
    clrscr();
    cout<<"***LONGITUD DE LA CADENA***"<<endl;
leo cadena de caracteres
    cout<<"introduce un numero: "<<endl;
    cin>>z;
    for (y=0; y<=z[y]; y++)
    {
     if (z[y] < 48 || z[y] > 57 )
     {
      cout<<"error";
      getch();
      abort();
     }
    }
   }

    void digitos::getdatos()
    {
     int y;
     for (y=0; y<=z[y]; y++)
     {
    // convierto cadena de caracter a enteros
      x[y] = int(z[y]) - 48;
 y hago la suma mediante bucle for
      res += 1;
     }
    }

       void digitos::imprime()
       {
   cout<<"el resultado es: "<<res;
       }

   main()
   {
    char op;
    do {
//inicializo variables privadas
    digitos ob(0,0,"1/0");
    clrscr();
    textbackground(BLACK);
    textcolor(BROWN);
    ob.setdatos();
    ob.getdatos();
    ob.imprime();
    op = toupper(getch());
    } while (op != 27);
//bucle while termina hasta que sea
igual a SALIR=ESC
    return 0;
   }