elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Mejorar sintaxis.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Mejorar sintaxis.  (Leído 4,144 veces)
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Mejorar sintaxis.
« en: 24 Agosto 2015, 11:17 am »

Buenas quiero saber si hay alguna forma más corta o más bonita de hacer el siguiente codigo.
Esque creo que uso demasiados "if" y probablemente hay alguna otra forma.
Es un ejemplo un poco simple.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. printf("\nEscribe tres numeros y indicare cual es el mayor");
  7.  
  8. int n1,n2,n3;
  9.  
  10. printf("\nIntroduce el primer numero:");
  11. scanf("%i",&n1);
  12.  
  13.        printf("\nIntroduce el segundo numero:");
  14. scanf("%i",&n2);
  15.  
  16.        printf("\nIntroduce el tercer numero:");
  17. scanf("%i",&n3);
  18.  
  19. if( n1 > n2 || n1 > n3 ){
  20. printf("\n%i es el mayor.",n1);
  21. }
  22. if( n2 > n1 || n2 > n3){
  23. printf("\n%i es el mayor.",n2);
  24. }
  25. if( n3 > n2 || n3 > n1){
  26. printf("\n%i es el mayor.",n3);
  27. }
  28.  
  29.  
  30. return 0;
  31. }


« Última modificación: 5 Septiembre 2015, 15:51 pm por FKT » En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
Orubatosu


Desconectado Desconectado

Mensajes: 2.515


Ver Perfil WWW
Re: Mejorar sintaxis.
« Respuesta #1 en: 24 Agosto 2015, 12:04 pm »

Es un caso pequeño, no veo problemas. Si fueran mas números lo conveniente sería usar un arreglo, definir una variable como máximo a cero y luego compararla con cada numero, y asignarle ese valor solo cuando sea mayor.

Pero con 3 es una posible solución sin recurrir a un arreglo. Para mas números si que sería interesante la que te he expuesto como una sencilla


En línea

"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #2 en: 24 Agosto 2015, 12:40 pm »

Vale, bueno acabo de "aprender" ahora mismo que son los arrays o arreglos. Aunque me has dicho que en este caso no es necesario usar un array porque es simple voy ha intentar hacerlo con un array aver que tal.

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. printf("\nEscribe tres numeros y indicare cual es el mayor");
  7.  
  8. int array[3];
  9. array[0] = a;
  10. array[1] = b;
  11. array[2] = c;
  12.  
  13. printf("\nIndica el primer numero:");
  14. scanf("%i",&a);
  15. printf("\nIndica el segundo numero:");
  16. scanf("%i",&b);
  17. printf("\nIntroduce el tercer numero:");
  18. scanf("%i",&c);
  19.  
  20. if( a > b || a > c ){
  21. printf("\n%i es el mayor.",n1);
  22. }
  23. if( b > a || b > c){
  24. printf("\n%i es el mayor.",n2);
  25. }
  26. if( c > b || c > a){
  27. printf("\n%i es el mayor.",n3);
  28. }
  29.  
  30.  
  31. return 0;
  32. }

Corrigeme si es así.

La verdad es que me parece prácticamente el mismo trabajo en lo que la diferencia que veo es simplemente que te puede ahorrar unos 7 minutos en programas largos.(O eso creo)
Por cierto los vectores son lo mismo que un array?
« Última modificación: 24 Agosto 2015, 12:48 pm por FKT » En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Mejorar sintaxis.
« Respuesta #3 en: 24 Agosto 2015, 13:29 pm »

Por cierto los vectores son lo mismo que un array?
Si te refieres a "vector" dentro del lenguaje, es de C++.

El problema de ese código, es que creas el array, pero no lo usas.

Lo importante de un array, es que se puede iterar por él. Se puede acceder a sus elementos en un bucle, cosa que con variables diferentes no puedes:
Código
  1. int i, array[10];
  2. for(i=0; i<10; i++)
  3.    printf("%i", array[i]);

Si quieres implementar un array en ese código, haz un bucle que encuentre el número más grande.
En línea

DarK_FirefoX


Desconectado Desconectado

Mensajes: 1.263


Be the change you wanna see in te world


Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #4 en: 24 Agosto 2015, 15:36 pm »

Buenas quiero saber si hay alguna forma más corta o más bonita de hacer el siguiente codigo.
Esque creo que uso demasiados "if" y probablemente hay alguna otra forma.
Es un ejemplo un poco simple.
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. printf("\nEscribe tres numeros y indicare cual es el mayor");
  7.  
  8. int n1,n2,n3;
  9.  
  10. printf("\nIntroduce el primer numero:");
  11. scanf("%i",&n1);
  12.  
  13.        printf("\nIntroduce el segundo numero:");
  14. scanf("%i",&n2);
  15.  
  16.        printf("\nIntroduce el tercer numero:");
  17. scanf("%i",&n3);
  18.  
  19. if( n1 > n2 || n1 > n3 ){
  20. printf("\n%i es el mayor.",n1);
  21. }
  22. if( n2 > n1 || n2 > n3){
  23. printf("\n%i es el mayor.",n2);
  24. }
  25. if( n3 > n2 || n3 > n1){
  26. printf("\n%i es el mayor.",n3);
  27. }
  28.  
  29.  
  30. return 0;
  31. }

Independientemente de que quieras mejorar este código para que tenga "mejor sintaxis". ¿Ya probaste si el código está correcto?

Imagina esta situación:
n1=4, n2=6, n3=1

Veras que se va a cumplir la condición del primer if pues n1=4 es mayor que n3=1, por lo tanto vas a imprimir que n1=4 es el mayor, lo cual no es correcto. Luego vas a tener el segundo if que también se va a cumplir la condición de que n2=6 es mayor que n1=4 y también que n2=6 es mayor que n3=1, por lo tanto también va a imprimir que n2=6 es el mayor, este sería el correcto, pero date cuenta de los errores que tienes.

Debería ser así:

Código
  1. if( n1 > n2 && n1 > n3 ){
  2. printf("\n%i es el mayor.",n1); //n1 es el mayor
  3. }
  4. else if( n2 > n1 && n2 > n3){
  5. printf("\n%i es el mayor.",n2); //n2 es el mayor
  6. }
  7. else
  8.        {
  9. printf("\n%i es el mayor.",n3); //'n3 es el mayor
  10. }

Espero entiendas la diferencia entre || y &&.

Salu2s
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #5 en: 24 Agosto 2015, 17:50 pm »

Independientemente de que quieras mejorar este código para que tenga "mejor sintaxis". ¿Ya probaste si el código está correcto?

Imagina esta situación:
n1=4, n2=6, n3=1

Veras que se va a cumplir la condición del primer if pues n1=4 es mayor que n3=1, por lo tanto vas a imprimir que n1=4 es el mayor, lo cual no es correcto. Luego vas a tener el segundo if que también se va a cumplir la condición de que n2=6 es mayor que n1=4 y también que n2=6 es mayor que n3=1, por lo tanto también va a imprimir que n2=6 es el mayor, este sería el correcto, pero date cuenta de los errores que tienes.

Debería ser así:

Código
  1. if( n1 > n2 && n1 > n3 ){
  2. printf("\n%i es el mayor.",n1); //n1 es el mayor
  3. }
  4. else if( n2 > n1 && n2 > n3){
  5. printf("\n%i es el mayor.",n2); //n2 es el mayor
  6. }
  7. else
  8.        {
  9. printf("\n%i es el mayor.",n3); //'n3 es el mayor
  10. }

Espero entiendas la diferencia entre || y &&.

Salu2s

Tienes razón lo sabía pero se me ha pasado, no sé porque he usado || y no &&.

Como funciona el if,else if,else? Yo siempre he usado un "If-then-else", o en algunos casos un "If" solo, veo que mucha gente usa "else if"

La verdad ninguno de los videos o documentos que encuentro que explican el array no los entiendo, teneis algun link que explique como funcionan o si alguien se quiere tomar el tiempo para explicarmelo  :)
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
robertofd1995

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #6 en: 24 Agosto 2015, 23:36 pm »



 Se envio dos veces , el de abajo es el que esta bien , sorry
« Última modificación: 24 Agosto 2015, 23:45 pm por robertofd1995 » En línea

robertofd1995

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #7 en: 24 Agosto 2015, 23:44 pm »


La verdad ninguno de los videos o documentos que encuentro que explican el array no los entiendo, teneis algun link que explique como funcionan o si alguien se quiere tomar el tiempo para explicarmelo  :)

Un array es una de las distintas estructuras de datos que hay para almacenar datos , en el caso del array puedes imaginártelo como un matric de 1 x n (espero que sepas que es una matric xD ) , sino imagínate que tienes una fila de  n cajas una detrás de otra.

Esas cajas agrupadas forman un conjunto , y eso es el array , dentro del array hay n huecos y dentro de esos huecos puedes poner cosas , números , strings,  otro array ( y asi crearas un array bidimensional , de esta manera en lugar de tener una fila de cajas , ahora tendras una tabla de cajas con filas y columnas ) , objetos , es decir puedes meter de todo  (mal pensados abstenerse de comentarios XD).

Dependiendo del lenguaje en el que estes puede estar implementado de manera distinta o tener distintos métodos pero normalmente en casi todos suele ser igual. (por ej en java un array permite guardar lo que quieras siempre que sean del mismo objeto , un arrayList permite guardar en el array distintos tipos de objetos ,  si esto te suena a chino , no te preocupes que ya lo entenderas con el tiempo)

Y para que sirve todo esto , pues para muchísimas cosas ,guardar cosas ,  tener conjuntos mas agrupados , para iterar sobre estos de una manera rápida con un bucle for , while , for-each y todas las maneras que se te ocurran.

Por ejemplo en tu caso anterior :

Código
  1.  
  2.    int max=array[0]; /* aqui lo que haces es asignar a la variable max , el primer valor que contenga el array ,los indices normalmente empiezan en el 0 */
  3.  
  4.    int array[10];
  5.    array[0]=0;
  6.    array[1]=1;
  7.    //.....
  8.    array[9]=10;
  9.  
  10.  
  11.   //este codigo de aqui lo podrias meter en una función que se llame maximo :)
  12.    for(int i=0;i<array_size;i++){
  13.    if(max>array[i])
  14.         max=array[i];
  15.    }
  16.  
  17.  return max;
  18.  
  19.  
  20.  

Espero que lo hayas entendido bien , comentame si te a servido o tienes algún problema  :)

 
En línea

furciorifa

Desconectado Desconectado

Mensajes: 94


Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #8 en: 25 Agosto 2015, 03:43 am »

Matemáticamente hablando un array y un vector son lo mismo pueden ser representados de la misma manera, pero para usos más estrictos de el habla y las diferencias en C y C++ , vector es en C++ , y array es en C , tienen diferentes propiedades.
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Mejorar sintaxis.
« Respuesta #9 en: 27 Agosto 2015, 13:42 pm »

Un array es una de las distintas estructuras de datos que hay para almacenar datos , en el caso del array puedes imaginártelo como un matric de 1 x n (espero que sepas que es una matric xD ) , sino imagínate que tienes una fila de  n cajas una detrás de otra.

Esas cajas agrupadas forman un conjunto , y eso es el array , dentro del array hay n huecos y dentro de esos huecos puedes poner cosas , números , strings,  otro array ( y asi crearas un array bidimensional , de esta manera en lugar de tener una fila de cajas , ahora tendras una tabla de cajas con filas y columnas ) , objetos , es decir puedes meter de todo  (mal pensados abstenerse de comentarios XD).

Dependiendo del lenguaje en el que estes puede estar implementado de manera distinta o tener distintos métodos pero normalmente en casi todos suele ser igual. (por ej en java un array permite guardar lo que quieras siempre que sean del mismo objeto , un arrayList permite guardar en el array distintos tipos de objetos ,  si esto te suena a chino , no te preocupes que ya lo entenderas con el tiempo)

Y para que sirve todo esto , pues para muchísimas cosas ,guardar cosas ,  tener conjuntos mas agrupados , para iterar sobre estos de una manera rápida con un bucle for , while , for-each y todas las maneras que se te ocurran.

Por ejemplo en tu caso anterior :

Código
  1.  
  2.    int max=array[0]; /* aqui lo que haces es asignar a la variable max , el primer valor que contenga el array ,los indices normalmente empiezan en el 0 */
  3.  
  4.    int array[10];
  5.    array[0]=0;
  6.    array[1]=1;
  7.    //.....
  8.    array[9]=10;
  9.  
  10.  
  11.   //este codigo de aqui lo podrias meter en una función que se llame maximo :)
  12.    for(int i=0;i<array_size;i++){
  13.    if(max>array[i])
  14.         max=array[i];
  15.    }
  16.  
  17.  return max;
  18.  
  19.  
  20.  

Espero que lo hayas entendido bien , comentame si te a servido o tienes algún problema  :)

 

Querrás decir matriz en vez de matric no? Lo entiendo prefectamente gracias, pero lo que pedia era aprender como se usan jeje aunque me lo has aclarado más
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Comprobar sintaxis sql
Programación Visual Basic
elmaro 1 3,185 Último mensaje 28 Noviembre 2007, 18:06 pm
por elmaro
Colorear sintáxis de VB
Programación Visual Basic
aaronduran2 4 2,799 Último mensaje 27 Junio 2008, 23:16 pm
por aaronduran2
¿sintaxis de los patrones?
PHP
brian_e 2 2,896 Último mensaje 19 Marzo 2009, 04:14 am
por [u]nsigned
Sintaxis FASM « 1 2 »
ASM
ferk93 16 10,678 Último mensaje 9 Julio 2009, 09:57 am
por Erik#
sintaxis php
PHP
MasterPunk 1 2,236 Último mensaje 21 Noviembre 2009, 15:10 pm
por Kasi
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines