Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Bledniss en 25 Abril 2011, 13:13 pm



Título: ¿determinar multiplos?
Publicado por: Bledniss en 25 Abril 2011, 13:13 pm
Bueno que en un libro de C que estoy leyendo me pide que realize un ejercicio pero nose como aver si me lo dice alguen.
¿Como escribir un programa que lea un valor entero y determine si es multiplo de 2 y de 5.? :o


Título: Re: ¿determinar multiplos?
Publicado por: Slava_TZD en 25 Abril 2011, 13:20 pm
http://es.wikipedia.org/wiki/Operadores_de_C_y_C%2B%2B#Operadores_aritm.C3.A9ticos

Módulo (Resto)


Título: Re: ¿determinar multiplos?
Publicado por: Bledniss en 25 Abril 2011, 13:40 pm
Me ha venido al pelo!! :D :D :D
Gracias!!!!


Título: Re: ¿determinar multiplos?
Publicado por: Bledniss en 25 Abril 2011, 14:28 pm
¿Me puedes dar un codigo que no me sale?
¿Por que en el siguiente script yo creo que deberia dar 0 si pones un multiplo de 2 no?
Código:
#include <stdio.h>
void main()
{
int a,b;
scanf("%d", &a);
b = a % 2;
printf("%d",&b);
}


Título: Re: ¿determinar multiplos?
Publicado por: Oblivi0n en 25 Abril 2011, 17:30 pm
quitale el & al printf
Código:
printf("%d",b);
el & es el operador que retorna la direccion de memoria

tambien es recomendable usar int main() en vez de void, pero eso ya haz como quieras....

Saludos


P.D: Si, debe de retornar 0 si es multiplo de 2


Título: Re: ¿determinar multiplos?
Publicado por: leogtz en 25 Abril 2011, 19:48 pm
!Y por Dios!, no es un SCRIPT.


Título: Re: ¿determinar multiplos?
Publicado por: Bledniss en 25 Abril 2011, 22:51 pm
Amm vale ahora si que me va! >:D
¿ Y que diferencia hay entre void main y int main?


Título: Re: ¿determinar multiplos?
Publicado por: leogtz en 25 Abril 2011, 23:10 pm
Que void main es incorrecto, e int main() es lo correcto, cuando un programa finaliza este debe "avisar" al sistema operativo cómo terminó, es decir, un diagnóstico, si pones void main() tu programa no hará este comportamiento.

int main(), int main(void) es lo correcto.


Título: Re: ¿determinar multiplos?
Publicado por: Garfield07 en 26 Abril 2011, 18:47 pm
Código
  1. #include <stdio.h>
  2.  
  3. int main ()
  4. {
  5. int integer, i;
  6.  
  7. printf ("Introduzca un numero (!0): ");
  8. scanf ("%d", &integer);
  9. if (integer == 0)
  10. {
  11. printf ("[!!!] El valor no puede ser cero.\n\n");
  12. return 1;
  13. }
  14. if (integer < 0) integer *= -1;
  15.  
  16. if (integer % 2 == 0 && integer % 5 == 0)
  17. printf ("El valor introducido es multiplo de 2 y de 5.\n\n");
  18. else
  19. printf ("El valor introducido no es multiplo de 2 y de 5.\n\n");
  20.  
  21. return 0;
  22. }
  23.  

PS: Este código tiene parte de un código que escribí para H-Sec. La distribución o copia de este código está completamente prohibida y sólo he reescrito el código para mostrarlo como ejemplo. No está permitido copiar ninguna parte de este código, ni hacer ningún uso de él, excepto como ejemplo y con autorización mía o de un miembro del staff de H-Sec. Aparte, estoy en todo mi derecho pues los dos códigos son míos. No os lo toméis a broma, sin comentarios.
Un saludo. Sagrini


Título: Re: ¿determinar multiplos?
Publicado por: leogtz en 26 Abril 2011, 19:01 pm

PS: Este código tiene parte de un código que escribí para H-Sec. La distribución o copia de este código está completamente prohibida y sólo he reescrito el código para mostrarlo como ejemplo. No está permitido copiar ninguna parte de este código, ni hacer ningún uso de él, excepto como ejemplo y con autorización mía o de un miembro del staff de H-Sec. Aparte, estoy en todo mi derecho pues los dos códigos son míos. No os lo toméis a broma, sin comentarios.


No te ofendas, pero ese código lo hace cualquer niño de 8 años que lleve menos de un día con C. Dicho de otra forma, tu código es tan básico que poner eso solo te acarreará burlas.

Saludos.


Título: Re: ¿determinar multiplos?
Publicado por: d(-_-)b en 26 Abril 2011, 19:11 pm
Bueno que en un libro de C que estoy leyendo me pide que realize un ejercicio pero nose como aver si me lo dice alguen.
¿Como escribir un programa que lea un valor entero y determine si es multiplo de 2 y de 5.? :o

Cual libro es ese.  :-X

saludos...


Título: Re: ¿determinar multiplos?
Publicado por: Bledniss en 26 Abril 2011, 23:36 pm
Es uno pa empezar que tapoco soy tan listo :P
Se llama Introduccion a la programacion con C es de Marco A. Peña Basurto y José M. Cela Espín.
Lo descarge sde un link que me encontre por el foro, fijate que hay un monton :xD


Título: Re: ¿determinar multiplos?
Publicado por: xassiz~ en 27 Abril 2011, 00:12 am
No te ofendas, pero ese código lo hace cualquer niño de 8 años que lleve menos de un día con C. Docho de otra forma, tu código es tan básico que poner eso solo te acarreará burlas.

Saludos.
Aparte de que no tiene ninguna autoridad mientras no esté registrado con licencia.


Título: Re: ¿determinar multiplos?
Publicado por: ~ en 27 Abril 2011, 00:15 am
Como sabemos un múltiplo es un número que es exactamente divisible entre el "mútliplo base", o en otras palabras, que al dividirlo da un residuo de 0. Con "exactamente divisible" lo que queremos decir es que la división da un resultado entero sin ningún decimal.

Por ejemplo 10 es múltiplo de 5 y de 2 porque

Código:
10/5==2,
10%5==0,
10/2==5,
10%2==0,
(int)(10/5)*5==10,
(int)(10/2)*2==10
___________

Como podemos ver también, si efectuamos una división inexacta (que produce decimales) con variables enteras, la parte decimal se pierde y solo queda la parte entera. Así que si dividimos dos números de variables enteras por ejemplo entre 2, y después los volvemos a multiplicar por dos, y el número es el mismo que antes de dividir, entonces también sabemos que el número en cuestión es un múltiplo del número por el que lo dividimos.
___________

Para determinar si el número es múltiplo de 2, de 5, etc., solo hay que dividir ese número entre 2, entre 5, etc., usando el operador de módulo %.

Este se aplica igual que el de división /, pero la diferencia es que % devuelve el residuo de la división.

Así que siempre que algo como numero % 2 o numero % 5 den como resultado 0 es porque el numero es un múltiplo de 2, 5, etc.

Esto es aplicable para C, C++, javascript, Java, ensamblador, y prácticamente todos los lenguajes mayores de programación.


Título: Re: ¿determinar multiplos?
Publicado por: Garfield07 en 27 Abril 2011, 18:33 pm
No te ofendas, pero ese código lo hace cualquer niño de 8 años que lleve menos de un día con C. Dicho de otra forma, tu código es tan básico que poner eso solo te acarreará burlas.
Es cierto, pero a pesar de eso es un código, y lo he puesto en otro foro en el que se pide específicamente que no liberemos información que se encuentre en ese foro. Esa información, por muy simple que sea, es información, y aunque el código sea muy simple no está permitido copiarla. Así que ese código no se copia y punto. Supongo que aunque el código sea muy sencillo, he dicho explícitamente que no se copie, y hacerlo sería ilegal (sí que está protegido por licencia). Y supongo que sabrás que sé programar medianamente bien en C, así que espero no te "burles mucho" de que haya querido ayudar a alguien con un código sencillo y comprendible :¬¬.

Aparte de que no tiene ninguna autoridad mientras no esté registrado con licencia.
Todo el contenido del foro tiene licencia, mientras di lo que quieras...

Sagrini


Título: Re: ¿determinar multiplos?
Publicado por: leogtz en 27 Abril 2011, 18:39 pm
Es cierto, pero a pesar de eso es un código, y lo he puesto en otro foro en el que se pide específicamente que no liberemos información que se encuentre en ese foro. Esa información, por muy simple que sea, es información, y aunque el código sea muy simple no está permitido copiarla. Así que ese código no se copia y punto. Supongo que aunque el código sea muy sencillo, he dicho explícitamente que no se copie, y hacerlo sería ilegal (sí que está protegido por licencia). Y supongo que sabrás que sé programar medianamente bien en C, así que espero no te "burles mucho" de que haya querido ayudar a alguien con un código sencillo y comprendible :¬¬.
Todo el contenido del foro tiene licencia, mientras di lo que quieras...

Sagrini

Es que simplemente es absurdo, es como si yo le pongo licencia a un Hola Mundo y voy diciendo que nadie me lo puede copiar, que porque tiene licencia, simplemente es absurdo, espero y no te enojes, pero así se ve. El operador módulo y la comprobación de múltiplos es sumamente común que aparezca en todos los libros de C, incluso en los tutoriales, así que van a estar copiando TÚ código cientos de veces.


Título: Re: ¿determinar multiplos?
Publicado por: Garfield07 en 27 Abril 2011, 19:25 pm
Realmente yo diferencio entre copiar y presentar, y mirar, comprobar, ver cómo funciona y escribir mi propio código aunque sea exactamente lo mismo. La diferencia es que en uno no aprendes y con el otro dos.


Título: Re: ¿determinar multiplos?
Publicado por: RyogiShiki en 27 Abril 2011, 20:26 pm
Tal vez el problema no sea lo sencillo del código sino lo genérico que puede llegar a ser. Cualquier persona que nunca haya visto ese código en su vida puede llegar a hacer exactamente ese mismo código. para un ejercicio o trabajo similar.
--
EDIT: Siento el comentario innecesario, no me fije que este hilo tenia 2 páginas y solo ley las entradas de la primer página, pero mi mismo punto lo ilustra Leo en el primer post de esta página, y como no me gusta repetir pero no puedo borrar el comentario, pues dejo la aclaración

Saludos