Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Como contar el total de items en un array

Estas en el tema de Como contar el total de items en un array en el foro de C/C++ en Foros del Web. Eso es lo q hace q cosa como estas sucedan: http://en.wikipedia.org/wiki/Heartbleed Más visualmente: http://xkcd.com/1354/...

  #31 (permalink)  
Antiguo 14/04/2014, 16:24
Avatar de nup_  
Fecha de Ingreso: noviembre-2010
Mensajes: 265
Antigüedad: 13 años, 5 meses
Puntos: 32
Respuesta: Como contar el total de items en un array

Eso es lo q hace q cosa como estas sucedan:
http://en.wikipedia.org/wiki/Heartbleed

Más visualmente:
http://xkcd.com/1354/
  #32 (permalink)  
Antiguo 14/04/2014, 18:22
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Como contar el total de items en un array

buen articulo -nup XD voy echar una ojeada XDD
  #33 (permalink)  
Antiguo 15/04/2014, 02:52
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Como contar el total de items en un array

Hola
vangodp gracias por el video pero solo me entere de que estamos solos en el mundo!
Te dice lo que ya sabíamos pero no porque windows te avisa sobre unos y no sobre otros.
  #34 (permalink)  
Antiguo 15/04/2014, 07:41
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Como contar el total de items en un array

Bueno pues agárrate para descubrir la verdad XDD
https://www.youtube.com/watch?v=TEyLHaTFGEU
Si con eso no pillas el por que estas solo en el mundo... ya no te digo na =)
  #35 (permalink)  
Antiguo 15/04/2014, 11:08
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Como contar el total de items en un array

El video te explica como funcionan las matrices, esto ya lo sabia pero no te dice porque windows salta un error en algunos casos y en otros no.
  #36 (permalink)  
Antiguo 15/04/2014, 14:05
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: Como contar el total de items en un array

hola patilanz.
no se si lo que quieres entender es por que a vangod si le ompilo pero a ati visual no te deja compilar oasea en si por que algunos un odigo les compila sin problemas y a otros no.
bueno si esa es la pregunta.
Mira aqui no creo que tenga que ver mucho el s.o si no el compilador mira el por lo que yo veo es que tu usas vs y vangod usa code::block.
entonces por lo que yo se microsoft por asi decirlo como que creo un compilador con una fucion de estandres entonces vs usa tanto el estandar c99 como c89 pero no hacepta por completo el c99 solo en algunas cosa.
y bueno pues codeblocks como devc++ usan o son compatibles con mingw en el cual usan gcc o g++ para compilar ya sea su codigo c o c++ y buen este compiladorse apega a el estandar c99 que es el mas utilizado por la mayoria de los programadores.
por eso pienso que es problema esta en el tipo de compilacion que usa vs.
por ejemplo:

en gcc:
Código C:
Ver original
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.     for (int i = 0; i <= 5 ; i++)
  5.     {
  6.         printf("%d", i);
  7.     }
  8.     getchar();
  9.     return 0;
  10. }
si ejecutas este codigo no te dice que tiene errores simplemente te dice que le indiques que debe compilar con el estandar c99.
Sin embargo si lo compilas en vs te dice que hay mucho errores que faltan punto y comas etc.

ejemplo 2:
Código C:
Ver original
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.     int i;
  5.     for ( i = 0; i < 5 ; i++)
  6.         printf("%d", i);
  7.        
  8.     char ca[5];
  9.     ca[0] = 'h' ;
  10.     printf("%c", ca[0]);
  11.     getchar();
  12.     return 0;
  13. }

si ejecutas este codigo en gcc te lo compila sin problemas.
Pero si lo compilas en vs te va a decir que hay un error etc.. y eso es por que vs solo permite declarar variables al principio dela funcion.
asi que bueno pues como puedes ver es cosa de vs por que no tiene unestandar en esecifico no compila lo que otros compiladores si pueden.
por eso un consejo deberia de empesar a usar cosas de microsoft por que no sirven bien siemrpe tienen fallas por eso mejor usa software libre y so lo usas mejor siempre usalo y no uses programas de windows aun que no te digo que no programas en windows solo que uses las herramientas de libres que la mayoria estan tanto para windows como para linux. pero bueno eso ya es cosa de ada programador a su forma de programar y la herramientas que usa.
bueno espero haberte ayudado.
saludos.
  #37 (permalink)  
Antiguo 15/04/2014, 17:52
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Como contar el total de items en un array

Patilanz abre la mente, intenta ver mas allá del monte.

Lo que tu necesitas hacer con 2 for yo lo hago con uno:
Código C++:
Ver original
  1. #include <iostream>
  2. #include <windows.h>
  3.  
  4. using namespace std;
  5.  
  6. int main (){
  7.     //system("MODE CON cols=100 lines=50");    
  8.     const int columna = 2;
  9.     const int    fila = 10;
  10.    
  11.     int M[columna][fila] = { {10,11,12,13,14,15,16,17,18,19,} , {20,21,22,23,24,25,26,27,28,29} };
  12.        
  13.     for ( int i = 0 ; i < (columna*fila) ; i++ )
  14.         cout << M[0][i] << endl;
  15.  
  16.     cin.ignore();
  17.     return 0;
  18. }

Esa es la razón. "Puedes sacar provecho". O puede que a ti te duela como dice el video y no te guste lo mas mínimo.
Tu decide si usar esa desventaja o ventaja como te guste XD
Que mas decirte si todo ya sabes XDDD
Saludos!
  #38 (permalink)  
Antiguo 15/04/2014, 19:14
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: Como contar el total de items en un array

perdon en la parte del mensaje anterior:
y bueno pues codeblocks como devc++ usan o son compatibles con mingw en el cual usan gcc o g++ para compilar ya sea su codigo c o c++ y buen este compiladorse apega a el estandar c99 que es el mas utilizado por la mayoria de los programadores.

en lugar de c99 en c89 osea asi.
y bueno pues codeblocks como devc++ usan o son compatibles con mingw en el cual usan gcc o g++ para compilar ya sea su codigo c o c++ y buen este compiladorse apega a el estandar c89 que es el mas utilizado por la mayoria de los programadores.
  #39 (permalink)  
Antiguo 16/04/2014, 03:36
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Como contar el total de items en un array

Hola
Drewermerc a mi me salta el error en tiempo de ejecutacion de modo que no puede ser por el compliador o si?
vangodp el codigo me lo ejecuta perfectamente.

Creo que no me habeis entendido bien :)
Me refiria porque en tiempo de ejecutacion en un array de 80 length salta un error si se intenta modificar el indica 99999 y no hay error si se modifica el 100 ??
  #40 (permalink)  
Antiguo 16/04/2014, 03:49
Avatar de vangodp  
Fecha de Ingreso: octubre-2013
Mensajes: 934
Antigüedad: 10 años, 6 meses
Puntos: 38
Respuesta: Como contar el total de items en un array

patilanz no se nada de visual studio, estoy seguro que es una herramienta muy muy buena, por encima de las demás, pero estoy optando por la portabilidad ya que no tengo demasiados recursos económicos que diga. :D
¡Suerte!
  #41 (permalink)  
Antiguo 16/04/2014, 04:41
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Como contar el total de items en un array

Cita:
Iniciado por vangodp Ver Mensaje
patilanz no se nada de visual studio, estoy seguro que es una herramienta muy muy buena, por encima de las demás, pero estoy optando por la portabilidad ya que no tengo demasiados recursos económicos que diga. :D
¡Suerte!
Pero el compilador creo que no tiene nada que ver ya que insisto que el problema esta en tiempo de ejecutacion después de crear el programa y no te avisa antes de empezar. Yo utilizo visual studio solo por su buen debugger ya que en los otros me resulta ,as difícil encontrar los errores.
  #42 (permalink)  
Antiguo 16/04/2014, 05:27
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: Como contar el total de items en un array

Existen compiladores que ademas de chequear que el programa es correcto y de generar el ejecutable AGREGAN instrucciones para darse cuenta que existen accesos inadecuados, mas alla de los limites, etc.

El proceso no es perfecto y existen sistemas operativos mas permisivos, que agregan chequeos para que lo que esta marcado como codigo no pueda ejecutarse y un largo etc.

El costo de lo primero es generar un programa mas lento y guaton, pero mas seguro, que podria morir en medio de una ejecucion insegura.

g++ tiene algunos chequeos al compilar, algunos tienen q activarse explicitamente.
__________________
Visita mi perfil en LinkedIn
  #43 (permalink)  
Antiguo 16/04/2014, 07:03
Avatar de patilanz  
Fecha de Ingreso: enero-2012
Mensajes: 880
Antigüedad: 12 años, 3 meses
Puntos: 29
Respuesta: Como contar el total de items en un array

A vale ya que me ha quedado mas claro gracias.
  #44 (permalink)  
Antiguo 16/04/2014, 12:41
Avatar de leosansan  
Fecha de Ingreso: mayo-2012
Ubicación: GRAN CANARIA
Mensajes: 194
Antigüedad: 11 años, 10 meses
Puntos: 49
Respuesta: Como contar el total de items en un array

Cita:
Iniciado por Principe_Azul Ver Mensaje
hola jhonny6721, creo que es opcional especificar el tamaño de un array, de todas maneras le especifiqué un tamaño por ejemplo 20 y me devuelve el valor 20, cosa que no debería suceder, ya que yo tengo por ejemplo 4 valores:

Código C++:
Ver original
  1. int N[20] = {1, 2 ,3, 6}
  2.     N[6] = {4};

ahí quice agregar el quinto valor, pero no se agrega, también probé así:

Código C++:
Ver original
  1. int N[20] = {1, 2 ,3, 6}
  2.     N[6] = 4;

pero tampoco funciona, además me devuelve 20 y yo tengo tan sólo 4 valores.
.................................................. ...
Lo de especificar la dimensión del array no es que sea opcional, es una opción u otra.

Por ejemplo si declaro:

Código C++:
Ver original
  1. array[] = {3, 5, 8, 9, 1, 0,3, 5};

el tamaño del array está determinado impepinablemente por el número de componentes que hemos introducido entre las llaves.

En cambio si declaro:

Código C++:
Ver original
  1. array[20] = {3, 5, 8, 9, 1, 0,3, 5};

el array, desde que se inicializa al menos un elemento, se compone de veinte elementos, donde los no inicializados se inicializan a cero por defecto. Lo puedes comprobar recorriendo los veinte elementos del arrray con un for:

Cita:
array[0]= 3
array[1]= 5
array[2]= 8
array[3]= 9
array[4]= 1
array[5]= 0
array[6]= 3
array[7]= 5
array[8]= 2
array[9]= 0
array[10]= 0
array[11]= 0
array[12]= 0
array[13]= 0
array[14]= 0
array[15]= 0
array[16]= 0
array[17]= 0
array[18]= 0
array[19]= 0
Cantidad de elementos: 20
El declarar 20 e inicializar unos pocos te permite agregar en las posiciones libres más elementos o variar la ya ocupada. Es decir puedes hacer tranquilamente en el ejemplo anterior:

Código C++:
Ver original
  1. array[8] = 2;

o bien:

Código C++:
Ver original
  1. array[2] = 2;

Y si lo que quieres saber es cuántos elementos realmente has declarado, sin incluir a los nulos que se rellenan por defecto, y en el supuesto de que no hallas introducido dos ceros consecutivos, siempre puedes hacer:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main(){
  6.     int i,cont=0,tam,array[20] = {3, 5, 8, 9, 1, 0,3, 5};
  7.     array[8] = 2;
  8.     tam=sizeof(array)/sizeof(array[0]);
  9.     cout << endl<< "array["<<8<<"]= " << array[8] << endl<< endl<< endl;
  10.     for (i=0;i<tam;i++){
  11.       if (i+2<tam && array[i]==0 && array[i+1]==0 && array[i+2]==0)
  12.         break;
  13.       else {
  14.         cout << "array["<<i<<"]= " << array[i] << endl;
  15.         cont++;
  16.       }
  17.     }
  18.     cout << "Cantidad de elementos: " << cont << endl;
  19.     cout << endl;
  20.     return 0;
  21. }

Con la salida esperada:

Cita:

array[8]= 2


array[0]= 3
array[1]= 5
array[2]= 8
array[3]= 9
array[4]= 1
array[5]= 0
array[6]= 3
array[7]= 5
array[8]= 2
Cantidad de elementos ocupados: 9
¡¡¡Saluditos!!!

  #45 (permalink)  
Antiguo 16/04/2014, 15:32
Avatar de Drewermerc  
Fecha de Ingreso: febrero-2014
Mensajes: 185
Antigüedad: 10 años, 2 meses
Puntos: 5
Respuesta: Como contar el total de items en un array

hola patilanz.
bueno pues nunca e probado el debuger de vs por que yo tiene poco que uso gdb y para mi pues es muy bueno y pues hice una prueba.
con el tipo de error que dice y pues a mi si me dijo que estaba fallando o por que ocurre el error alomejor tambien no sirve muy bien ese debuger de vs.
y bueno pues es creo que el error te lo da en tiempo de ejecucion por que el compilador lo unico que hace es verificar la sintaxis remplazar constantes hacer lo procesos de las funciones de preprocesador etc. y no siempre nos puede decir que eso causa un error ya queno es un debuger y para que el error se efectue se debe correr el programa por que ya estas dando valores a las variables, despues la imprimir y todo lo haga el programas.

Y bueno por ese tipo de errores es por lo que se caractizan c y c++ por ellos hacen loque tu les pidas y si lo que le dices no se puede llevar acabo ya no es problema de el compilador o del sistema operativo sino de uno como programador por la sintaxis que se le da al programa.
  #46 (permalink)  
Antiguo 20/04/2014, 01:31
Principe_Azul
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como contar el total de items en un array

Muchas gracias leosansan por tu explicación, muy amable de tu parte.

Etiquetas: funcion, int, items
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:06.