Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: urvreak en 24 Enero 2011, 01:36 am



Título: ayuda con practica
Publicado por: urvreak en 24 Enero 2011, 01:36 am
tengo que hacer un programa en c, que lea cinco numeros enteros, y que de esos saque el mayor y menor, solo puedo usar if, sin else o then, y no puedo usar nada mas que eso con printf y scanf... alguna idea?.

el problema no me lo dio nadie, estoy aprendiendo c\c++ por mi cuenta y el libro: como programar en c/c++ me dio este problema :S


Título: Re: ayuda con practica
Publicado por: .:Snifer:. en 24 Enero 2011, 02:20 am
Emm si te la dio un libro, y supuestamente estas aprendiendo deberias de realizarlo solo.. y muestras tus avances y con gusto te podremos decir donde esta tu error..

El foro no es para hacer tareas..

Saludos :P


Título: Re: ayuda con practica
Publicado por: urvreak en 24 Enero 2011, 02:23 am
jaaaj es que no tengo la mas minima idea, por eso pregunto.. segui adelante porque si por lo menos usara while podria hacerlo.

aca tengo problema con este ejercicio que hice:


#include <stdio.h>

int main()
{
  int numero;
  
  printf("ponga un num\n");
  scanf("%d\n, &numero");
  if ((numero % 2) == 0)

  {
            printf("numero par\n");
            }
  printf("numero impar\n");
  getchar();   
  return 0;
}

termina la secuencia en error


Título: Re: ayuda con practica
Publicado por: N0body en 24 Enero 2011, 02:54 am
Te creo que no te lo dio nadie, porque he leído otro post tuyo donde decía que estabas aprendiendo de no sé cual manual...


Lo recomendable sería que uses iteraciones (bucles), si sólo quieres saber el mayor y el menor...
Osea, imaginate que tu eres la computadora y tienes que determinar cuál es el mayor de n números... ¿Qué hacés tú en tú cabeza para hacer esto? Podrías explicarlo, y no hacerlo de forma intuitiva? Y, lo más obvio que se te ocurrirá será que compararás el primero con el segundo, te memorizarás el mayor y lo compararaás con el tercero, memorizarás el mayor de ésta nueva comparación y pasarás al cuarto y harás esto con todos los números...

En el caso que todavía no hayas llegado a las iteraciones (el uso de instrucciones for, while...) y lo tengas que hacer con if  te recomiendo que si sabes usar else, lo uses, el programa será más óptimo...
Sino, también se puede hacer sin else, pero hará más preguntas de las necesarias ¿entiendes? Es que cuando tu preguntas algo, tanto la respuesta afirmativa como la negativa te dan informacion y tienes que aprovechar ambas... de no usar el else estarías haciendo una mala práctica, a mi criterio...

Bueno, imagina que son 3 números (a, b y c) en vez de 5 y yo hago:

¿a es mayor que b y éste último a su vez mayor que c?
SI--> camino 1
NO-->camino 2

Camino 1: (en esta situación tendríamos en orden descendente "a,b,c") Entonces el mayor es a...


Camino 2: (en esta situación tendríamos en orden descendente "b,a,c" o "b,c,a" o "c,b,a" o "c,a,b" ) Entonces, nos bastará preguntar: ¿b es mayor que c?
SI-->camino 2-1
NO-->camino 2-2

Camino 2-1: el mayor es b
Camino 2-2 el mayor es c



Bueno, espero que veas así claramente que la respusta dicotómica (si o no) ofrece información que no debe ser desperdiciada...

Obviamente que pordías preguntar a es mayor que b, y a es mayor que c? SI--> a es el mayor de los tres
Punto y aparte
b es mayor que a, y b es mayor que c? SI--> b es el mayor de los tres
Punto y aparte
c es mayor que b, y c es mayor que a? SI--> c es el mayor de los tres
Punto y aparte

Pero sería, repito, un desperdicio de preguntas


Título: Re: ayuda con practica
Publicado por: urvreak en 24 Enero 2011, 03:04 am
muchas gracias por la respuesta, este metodo yo lo usaba en pascal el año pasado.. queria saber si habia otra forma solo usando eso..

ahora con este segundo ejercicio, si tuve un problema, nose  si sera que no uso el else, o then .. pero me da error.. estos ejercicios me dice de solo hacerlo hasta if, lo otro recien para el siguiente capitulo :S



Título: Re: ayuda con practica
Publicado por: do-while en 24 Enero 2011, 04:24 am
¡Buenas!

con solo if lo puedes hacer de forma bien sencilla:

Código:
leer numero

min <- numero
max <- numero

inicio:
leer numero

si numero < min
    min <- numero
fin si

si numero > max
    max <- numero
fin si
fin:

volver a repetir el codigo que hay entre inicio y fin tantas veces como numeros tenga la lista menos uno.


Como ves con tres variables puedes obtener, usando solo if, el minimo y el maximo de todos los numeros que quieras.

¡Saludos!


Título: Re: ayuda con practica
Publicado por: leogtz en 24 Enero 2011, 08:34 am
Corrige la línea del scanf() a esto:

Código:
scanf("%d", &numero);


Título: Re: ayuda con practica
Publicado por: urvreak en 24 Enero 2011, 12:39 pm
muchas gracias a todos por su ayuda! mas tarde probare todo lo que dijeron!..


        
   ahora en un momento les muestro el codigo terminado :P