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

Como verificar si un Arreglo esta vacio

Estas en el tema de Como verificar si un Arreglo esta vacio en el foro de C/C++ en Foros del Web. En c para saber si mi arreglo esta vacio puedo poner Código: if (arreglo=='\0') {.........} o debo recorrer todo el arreglo...
  #1 (permalink)  
Antiguo 04/12/2014, 15:19
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 11 meses
Puntos: 0
Pregunta Como verificar si un Arreglo esta vacio

En c para saber si mi arreglo esta vacio puedo poner
Código:
if (arreglo=='\0')
{.........}
o debo recorrer todo el arreglo
  #2 (permalink)  
Antiguo 04/12/2014, 16:33
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Como verificar si un Arreglo esta vacio

El concepto de "vacio" no existe en los arrays de C. En las cadenas de caracteres sí, pero sería:
Código C++:
Ver original
  1. if (cadena[0] == '\0')

Siempre y cuando, la cadena haya sido inicializada previamente claro.
  #3 (permalink)  
Antiguo 05/12/2014, 06:10
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 10 años, 1 mes
Puntos: 204
Respuesta: Como verificar si un Arreglo esta vacio

Imagínate un arreglo de enteros... aunque no asignes ningún valor, el arreglo va a tener enteros en todas sus posiciones.... es lo que se conoce como basura. ¿Cómo determinas si el valor de un arreglo es válido o no? No puedes.

Aún inicializando el arreglo (el valor que se suele poner por defecto es 0). Si te encuentras un 0 en un momento dado, ¿podrías determinar si ese valor es válido o no? pues básicamente depende de si el 0 forma parte del rango válido de valores o no. En el caso más genérico, cualquier valor que te encuentres en el arreglo será válido.

¿Cual es la solución entonces?

Una de ellas es agrupar los valores válidos al inicio del arreglo y disponer de una variable entera que indique el número de posiciones del arreglo que tienen un valor válido:

Código C++:
Ver original
  1. struct Lista
  2. {
  3.   int* arreglo;
  4.   int numElementos;
  5.   int maxElementos;
  6. };

La tercera variable sirve para saber cuando el arreglo está lleno y no pasarse.

PD.: es responsabilidad del programador asignar los valores correctos a estas variables en todo momento, no hay ningún mecanismo en C que los vaya a rellenar por ti.

Un saludo.
  #4 (permalink)  
Antiguo 05/12/2014, 19:30
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Como verificar si un Arreglo esta vacio

Lo que hice fue que cree una funcion
Código:
int VerificacionSeccion(){
    for (Contador = 0; Contador<CantidadAlumnos; Contador++){
           if ((Programacion1[Contador] != 0) && (Programacion2[Contador] !=0)){
               //NO ES NULO
               break;
           }
       }
return 0;
}
luego en mi menu tengo asi:
Código:
 case 1:  if(VerificacionSeccion() !=0 ){
                         printf(" APERTURA DE SECCIONES\n");
                         printf(" ¿CUANTOS ALUMNOS EXISTIRAN EN PROGRAMACION 1?\t");
                         scanf("%d", &CantidadAlumnos);
                         InicializarSeccion(Programacion1,CantidadAlumnos);
                         printf(" ¿CUANTOS ALUMNOS EXISTIRAN EN PROGRAMACION 2?\t");
                         scanf("%d", &CantidadAlumnos);
                         InicializarSeccion(Programacion2,CantidadAlumnos);
                         }
                    else{printf("YA NO PUEDE HACER MODIFICACIONES");}
                    break;
                    
            case 2: if(VerificacionSeccion() !=0){
                        printf(" !!NO TIENE PERMITIDO ENTRAR..!!\a\n ES NECESARIO APERTURAR LA SECCION\n");}
                    else{printf(" BIENVENIDOS\n");}
                    break;
deberia de funcionar no ? o tengo algo malo ?
  #5 (permalink)  
Antiguo 05/12/2014, 20:22
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como verificar si un Arreglo esta vacio

En principio sí, "APERTURAR" no sólo está mal, sino que es de pésimo gusto.
  #6 (permalink)  
Antiguo 05/12/2014, 20:46
 
Fecha de Ingreso: diciembre-2014
Mensajes: 6
Antigüedad: 9 años, 11 meses
Puntos: 0
Respuesta: Como verificar si un Arreglo esta vacio

Cita:
Iniciado por lareto Ver Mensaje
En principio sí, "APERTURAR" no sólo está mal, sino que es de pésimo gusto.
Lo se pero ni modo es lo que me pidieron poner :| pero no me funciona en el menu y no se porque si todo esta bien, esto de trabajar en c es un poco complicado
  #7 (permalink)  
Antiguo 05/12/2014, 22:40
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Como verificar si un Arreglo esta vacio

No puedo ayudarte mucho con el código, pero veo que VerificacionSeccion() siempre devuelve 0, y supongo que en algún momento pretenderás que devuelva algo distinto.

Un comentario adicional: ayudaría a que te ayuden si pusieras código que pudiera compilarse.

Por otro lado, este es un foro donde se escribe normalmente en castellano, así que si no te molesta, te señalo algunas expresiones que podrías corregir:
Cita:
Lo se pero ni modo es lo que me pidieron poner :| pero no me funciona en el menu y no se porque si todo esta bien, esto de trabajar en c es un poco complicado
"sé", del verbo saber, se escribe con acento.
"ni modo" -> ¿qué quiere decir eso?
"es lo que me pidieron poner" -> es lo que me pidieron que ponga, o es lo que me pidieron que pusiese
"menú" se escribe con acento.
"y no se porque" -> y no sé por qué. Otra vez, , de saber, se escribe con acento, y por qué se escribe separado, con acento en la e de qué.

De nada, de nada.

Etiquetas: arreglo, vacio, verificar
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 14:17.