Quiero hacer un programa k digas cual es el mayor de 3 numeros probe a escribir esto y me dice cual es el numero medio ni el mayor ni el menor
Por ejemplo si pongo en los numeros
3,4,5
me dice k es el segundo
si pongo 4,3,5
me dice k es el primero
y si pongo 3,5,4
me dice k es el tercero aqui el codigo fuente:
#include <stdio.h> int main(int argc, char **argv) { int i; int cantidad[3]; for(i = 0;i < 3;i ++) { scanf("%i", &cantidad[i]); } if(cantidad[1] < cantidad[2] && cantidad[3] < cantidad[2]) { printf("El segundo numero es el mayor"); } if(cantidad[1] < cantidad[3] && cantidad[2] < cantidad[3]) { printf("El tercer numero es el mayor"); } if(cantidad[2] < cantidad[1] && cantidad[3] < cantidad[1]) { printf("EL primer numero es el mayor"); } return 0; }
Yo
Yo haría:
Bueno,
Pero el if (i==M-1) es innecesario. Lo puedes sacar del for no? Además, si pasas un vector como argumento, ¿Para qué haces un cin?
Ya puestos, si lo haces con la clase vector, hazlo genérico. En 5 líneas sería:
¿Hay otra opción más sencilla?
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Noop, es la mas sencilla. De
Noop, es la mas sencilla. De hecho el problema se llamaria "calcular el elemento maximo de un vector". La unica objecion seria tener en cuenta los negativos, para inicializar la variable maximo al minimo valor (negativo) codificable.
Un saludo!
En realidad.
La variable "mayor" no almacena el máximo, sino la posición donde está. Al inicializarla a 0, estoy diciendo que a priori el máximo es la primera posición. Luego comparo para calcular el máximo. Vamos, que funciona perfectamente con negativos (o debería). :)
Ahora, eso sí, si el vector solo tiene una posición, peta. Aunque sería un poco tonto encontrar el máximo de un solo número, no? xD
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Cierto, me he colado al leer
Cierto, me he colado al leer por encima el codigo XD
Ahora, mirandolo detenidamente, creo que no petaria, puesto que en la comprobacion del bucle, i<size(), si size es 1, entonces 1<1 es falso, por tanto no entra al bucle y devolveria directamente el elemento, no?
Aunque carezca de sentido calcular el maximo de un solo elemento XD
Es verdad.
No me había parado a pensarlo, pero no petaría con un solo elemento. De hecho, incluso devolveria 0, que sería la posición del máximo (el único).
Solo petaría si no tiene elementos, pero eso sí que no tiene ni pies ni cabeza... xD
Si nos ponemos a buscarle 3 pies al gato, creo que se podría comprimir un poquito más, solo por jugar :P
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Ya puestos...
Si lees los datos con for, ¿por que no compararlos también en un bucle? Es menos código y más genérico :)
Ahora cambia N por 10, 100 o 10000 y te funcionará igual :D.
Saludos.
Nota: Lo del for(i=1...) no es un error. Es porque empiezo asumiendo que el mayor es el 0, y luego lo comparo con el resto (hago N-1 comparaciones).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Aquí esta
TEAM MEX Homebrew y desarrollo PSP
Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .
Ubunshell VProof. (45%)C
RPG Magues (35%)Lua , 5% C
Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD
Xperience | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve
-- KLOZZ
Casi, pero no.
Si declaras cantidad como un vector de 3 posiciones, no puedes acceder a la posición cantidad[3], porque esta es la cuarta, contando el 0.
El for estaba bien. En lugar de cambiar el for, tendrías que haber cambiado los índices de las condiciones (del 0 al 2).
Tu código, puede que funcione, o puede que te de un error de segmento, dependiendo del sistema operativo y la configuración de la memoria en ese momento, ya que estás accediendo a posiciones fuera del vector ;).
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Si pero checando que hemos
Si pero checando que hemos iniciado el vector en el numero 1 ;D solo seria arreglar esto f
or(i = 1;i < 3;i ++)
poresto otro f
or(i = 1;i <= 3;i ++)
error mio al no haber re-leido lo que puse D: ya que ponemos que el vector es de 3 tablas y en el for iniciamos con el numero 1 osea que el vector inicia en 1 y termina en 3 hacemos la comprobacion de si i es menor o igual a 3 se ejecute si no es y se pasa entonces ya no continua.Igual arriba ustedes reacomodan el codigo acortandolo yo solo le acomodé el fallo pero igual se lo puse erroneo xD por el tipeo que no puse la comprobacion de <= SALUDOS!.
TEAM MEX Homebrew y desarrollo PSP
Metal TrooperV.Pre-Alpha (15%)Lua , 10% C .
Ubunshell VProof. (45%)C
RPG Magues (35%)Lua , 5% C
Android development for Xperia X8 ^^ mis roms en XDA-Developers ya que en Scenebeta no las publican xD
Xperience | MIUI Pikachu | Semc debrand engine | Froyexp | Xperience walkman mod | Android 4.0.4 CN9 Crema de nieve
-- KLOZZ
Mmm
Pero si pones eso, el vector entonces tiene que ser de 4 posiciones. Cuando i==3, estás accediendo a la cuarta posición.
Lo mejor siempre es empezar en 0, para no desperdiciar una posición tontamente.
Dennis Ritchie. Padre de C y cocreador de UNIX.
R.I.P.
Se
Se puede hacer un "cantidad.size() - 1" para no pasarse del vector, es decir una búsqueda o recorrido con sentinela.
Eso
Solo se puede hacer si usas la clase vector, no con vectores estáticos ;)
Casi lo lograste, pero en tus
Casi lo lograste, pero en tus condiciones tienes los índices mal. El primer número del array (tal y como pusiste el code) es cantidad[0] y no cantidad[1]. En otras palabras, a los índices de tus funciones réstales 1, y funcionará tu code.
Si lo quieres extender (comparar más números), te recomiendo que ordenes primero el array (hay muchos ejemplos de cómo se hace por ahi). Cuando esté ordenado, simplemente tomas el número del extremo derecho (si ordenaste de menor a mayor) y declaras que ese es el mayor de todos.
La ventaja de hacerlo así, es que funciona para cualquier cantidad de números, sin necesidad de añadir más condiciones ni nada ;)
No lo entendi mi podrias
No lo entendi mi podrias poner un codigo fuente para ver a lo que te refires ¿?
#include <stdio.h> int
Creo que se refiere a esto. Asi depaso que veo esto voy aprendiendo.
Ya lo solucione pero en tu
Ya lo solucione pero en tu código hay u error cuando declaras cantidad pon un tres no un dos
int cantidad[3];
Que es lo que no entendiste?
Que es lo que no entendiste?
PD. No hagas doble comentario, por favor.
Me funciono lo k dijistes no
Me funciono lo k dijistes no me acordaba de k el indice empieza en 0 y no en 1 a y lo k dijistes abajo lo voy a buscar por ahi haber gracias :D