Autor
|
Tema: Mejorar sintaxis. (Leído 4,144 veces)
|
FKT
Desconectado
Mensajes: 221
|
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. #include <stdio.h> #include <stdlib.h> int main(){ printf("\nEscribe tres numeros y indicare cual es el mayor"); int n1,n2,n3; printf("\nIntroduce el primer numero:"); scanf("%i",&n1); printf("\nIntroduce el segundo numero:"); scanf("%i",&n2); printf("\nIntroduce el tercer numero:"); scanf("%i",&n3); if( n1 > n2 || n1 > n3 ){ printf("\n%i es el mayor.",n1); } if( n2 > n1 || n2 > n3){ printf("\n%i es el mayor.",n2); } if( n3 > n2 || n3 > n1){ printf("\n%i es el mayor.",n3); } return 0; }
|
|
« Ú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
|
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
Mensajes: 221
|
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. #include <stdio.h> #include <stdlib.h> int main(){ printf("\nEscribe tres numeros y indicare cual es el mayor"); int array[3]; array[0] = a; array[1] = b; array[2] = c; printf("\nIndica el primer numero:"); scanf("%i",&a); printf("\nIndica el segundo numero:"); scanf("%i",&b); printf("\nIntroduce el tercer numero:"); scanf("%i",&c); if( a > b || a > c ){ printf("\n%i es el mayor.",n1); } if( b > a || b > c){ printf("\n%i es el mayor.",n2); } if( c > b || c > a){ printf("\n%i es el mayor.",n3); } return 0; }
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
Mensajes: 3.412
ASMático
|
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: int i, array[10]; for(i=0; i<10; i++) 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
Mensajes: 1.263
Be the change you wanna see in te world
|
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. #include <stdio.h> #include <stdlib.h> int main(){ printf("\nEscribe tres numeros y indicare cual es el mayor"); int n1,n2,n3; printf("\nIntroduce el primer numero:"); scanf("%i",&n1); printf("\nIntroduce el segundo numero:"); scanf("%i",&n2); printf("\nIntroduce el tercer numero:"); scanf("%i",&n3); if( n1 > n2 || n1 > n3 ){ printf("\n%i es el mayor.",n1); } if( n2 > n1 || n2 > n3){ printf("\n%i es el mayor.",n2); } if( n3 > n2 || n3 > n1){ printf("\n%i es el mayor.",n3); } return 0; }
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í: if( n1 > n2 && n1 > n3 ){ printf("\n%i es el mayor.",n1 ); //n1 es el mayor } else if( n2 > n1 && n2 > n3){ printf("\n%i es el mayor.",n2 ); //n2 es el mayor } else { printf("\n%i es el mayor.",n3 ); //'n3 es el mayor }
Espero entiendas la diferencia entre || y &&. Salu2s
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
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í: if( n1 > n2 && n1 > n3 ){ printf("\n%i es el mayor.",n1 ); //n1 es el mayor } else if( n2 > n1 && n2 > n3){ printf("\n%i es el mayor.",n2 ); //n2 es el mayor } else { printf("\n%i es el mayor.",n3 ); //'n3 es el mayor }
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
Mensajes: 172
|
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
Mensajes: 172
|
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 : 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 */ int array[10]; array[0]=0; array[1]=1; //..... array[9]=10; //este codigo de aqui lo podrias meter en una función que se llame maximo :) for(int i=0;i<array_size;i++){ if(max>array[i]) max=array[i]; } return max;
Espero que lo hayas entendido bien , comentame si te a servido o tienes algún problema
|
|
|
En línea
|
|
|
|
furciorifa
Desconectado
Mensajes: 94
|
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
Mensajes: 221
|
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 : 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 */ int array[10]; array[0]=0; array[1]=1; //..... array[9]=10; //este codigo de aqui lo podrias meter en una función que se llame maximo :) for(int i=0;i<array_size;i++){ if(max>array[i]) max=array[i]; } return max;
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.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Comprobar sintaxis sql
Programación Visual Basic
|
elmaro
|
1
|
3,185
|
28 Noviembre 2007, 18:06 pm
por elmaro
|
|
|
Colorear sintáxis de VB
Programación Visual Basic
|
aaronduran2
|
4
|
2,799
|
27 Junio 2008, 23:16 pm
por aaronduran2
|
|
|
¿sintaxis de los patrones?
PHP
|
brian_e
|
2
|
2,896
|
19 Marzo 2009, 04:14 am
por [u]nsigned
|
|
|
Sintaxis FASM
« 1 2 »
ASM
|
ferk93
|
16
|
10,678
|
9 Julio 2009, 09:57 am
por Erik#
|
|
|
sintaxis php
PHP
|
MasterPunk
|
1
|
2,236
|
21 Noviembre 2009, 15:10 pm
por Kasi
|
|