Abreviar condicion

Si eres principiante y tienes alguna consulta entra en este foro.
Responder
Mensaje
Autor
solidsnake89
Mensajes: 20
Registrado: 24/03/2018 10:43 am

Abreviar condicion

#1 Mensaje por solidsnake89 » 18/11/2019 4:20 pm

Alguna manera de abreviar esto

Código: Seleccionar todo

if(array[0] == 3 && array[1] == 3 && array[2] == 3)
En el caso que fueran muchos elementos,
Cómo haría para usar el operador && sin tener que escribir todos?

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: Abreviar condicion

#2 Mensaje por dehm » 19/11/2019 1:06 am

Bueno, si se trata de comprobar todos los valores del array, puedes usar un bucle dentro de una función que devolverá true si todos los valores cumplen la condición:

Algo como

Código: Seleccionar todo

bool evaluar()
{
for (int i = 0;i<numero_elementos;i++)
{
    if (array[i] != 3)
    {
	return false;//si algún miembro no cumple la condición se sale de la función con false
    }    
}
 return true;//si todos los miembros cumplen la condición se devuelve true   
}
Si no es así, pues o buscas un patrón que muestre los índices que tienes que comparar, o alguna regla más refinada....o tendrás que hacer la comparación por cada elemento que quieras comparar.
Aprendiendo

solidsnake89
Mensajes: 20
Registrado: 24/03/2018 10:43 am

Re: Abreviar condicion

#3 Mensaje por solidsnake89 » 19/11/2019 9:08 am

Si es buena la opción que me das retornando con funciones. En el caso es que si tengo que comparar 100 elementos por ejemplo se complica más hacer las comparaciones o hacer en grupos si quisiera comparar con diferentes valores. Con switch se podría hacer algo?

dehm
Mensajes: 328
Registrado: 29/04/2011 7:31 am

Re: Abreviar condicion

#4 Mensaje por dehm » 20/11/2019 10:00 pm

Hola:

Yo entiendo que switch/case sirve un poco para organizar y hacer más legible un código con varias bifurcaciones en función del valor dado, pero si tienes muchas comparaciones, no te va a resolver mucho en cuanto a escribir menos código, aunque sí será más legible y fácil de mantener.
Saludos
Aprendiendo

Avatar de Usuario
kiko66
Mensajes: 37
Registrado: 11/10/2019 10:51 am

Re: Abreviar condicion

#5 Mensaje por kiko66 » 22/11/2019 1:11 pm

hola solidsnake89

con tan pocos datos como das y apenas nada de codigo hay que echarle
imaginacion para tantear que necesitas :shock:

:idea: por suponer algo, supongo que quieres saber cuantos elementos de un array
son iguales a 12, 5, 20, 3, 66 por suponer algo, entonces podrias hacer algo como ...

Código: Seleccionar todo

#include <stdio.h>

int main(void){

   // array con los 100 numeros a buscar
   const int arrai[]  = {3, 3, 20, 3, 0, 3, 66, 3, 20, 5, 6, 12, 45, 3, 20, 3, 3}; 
   const int tam_arr  = sizeof(arrai)/sizeof(int); // soy muy vago para contar numeros ;-)

   // numeros que queremos encontrar en el array anterior
   const int numero[] = {12, 5, 20, 3, 66};
   const int cant_num = sizeof(numero)/sizeof(int); 

   // array donde guardar las ocurrencias. lo inicializo a cero
   int n_encotrados[cant_num];
   for(int i=0; i<cant_num; i++) n_encotrados[i]=0;

   // busqueda 
   for(int n=0; n<cant_num ;n++)
      for(int a=0; a<tam_arr ;a++)
         if(arrai[a]==numero[n]) n_encotrados[n]++;

   // se muestran los resultados
   for(int n=0; n<cant_num ;n++)
      printf("\nen el array el numero %2d se repite %2d %s", 
             numero[n], n_encotrados[n], n_encotrados[n]==1 ? "vez":"veces");
   puts("");
   
   return 0;
}
saludos y suerte con el programa :wink:

pd para cuando el resaltado de codigoooo, es muy soso todo verde :cry:

solidsnake89
Mensajes: 20
Registrado: 24/03/2018 10:43 am

Re: Abreviar condicion

#6 Mensaje por solidsnake89 » 01/12/2019 3:14 pm

Gracias por responder.
Si lo que buscaba más que nada es convertir todos los elementos en 1 o cualquier otro número quedando
el array original {1,1,1,1,...}
dentro de un bucle uso sumas y restas según sean menor o mayor y uso la bandera para terminar el ciclo.
Pero tenía que comparar que todos me hayan quedado en 1.

el pare
Mensajes: 6
Registrado: 04/12/2019 5:40 am

Re: Abreviar condicion

#7 Mensaje por el pare » 04/12/2019 6:24 am

Hola solidsnake89:

Si lo único que necesitas es saber si tienes todos las posiciones iguales.
Una solución puede ser imprimir el arreglo y verlo in situ.
Compruebas varias veces el funcionamiento
y cuando estes seguro borras el código para la impresión.

Responder

¿Quién está conectado?

Usuarios navegando por este Foro: Majestic-12 [Bot] y 2 invitados