Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: flacc en 28 Noviembre 2010, 03:15 am



Título: Hola me sacan de una duda?[C]
Publicado por: flacc en 28 Noviembre 2010, 03:15 am
Hola, estoy travado con esto, tengo que comprobar si el dígito ingresado es multiplo de 2 y 5, pero quiero ahorrarme código haciendo esto:

Código:
if (( (valor % 2) == 0) && ( (valor % 5) == 0) ))
{
                printf(" bla bla bla"\n);
}
else
{
      printf("blablabla"\n);

entonces para que se entienda... el código que quiero hacer en palabras seria asi:

Código:
Si es que ((Si valor es multiplo de 2) y ( valor es multiplo de 5)
{
            imprimirpantalla (codigo);
}
Si no
{
      imprimirpantalla ( codigo);

se entiende?... mejor dicho.. este codigo
Código:
(( (valor % 2) == 0) && ( (valor % 5) == 0) ))
hace lo que nesecito?... a mi me da que no pero queria consultarlo con ustedes...saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Beakman en 28 Noviembre 2010, 04:09 am
Código
  1. if( numero%2 == 0 && numero%5 ==0 )
  2. cout << "El numero es divisible por 2 Y 5";
  3.  
Esta bien, eso. Te dice si es divisible por ambos, 2 y 5.
Por ejemplo 10


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 28 Noviembre 2010, 06:35 am
gracias, pero sacame de una duda mas, es que estoy sumamente enredado con los operadores logicos en general, osea, al decir yo && tu, digo "yo y tu", o estoy operando con los balores boleanos de "yo" y "tu", no se si me entiendes, he visto montones de explicaciones, y justo cuando creo haber entendido leo otra y vuelvo al inicio...
por ejemplo el || se puede usar como or, aparte de comparar valores boleanos( true y false creo)... pero si me lo pudieras explicar mejor esto porfavor... gracias y saludos

modificacion...


esperen un momento... ya note el problema, y es que no tengo idea de cual es... haber miren, el problema no es el código sino el so, tengo windows 7 home premium(venia incluido), y pues cuando ejecuto el exe compilado con dev c/c++, mesale la ventana pidiendo el numero(funcion scanf), pongo el numero y doy enter, acto seguido se pega, otro enter y deja de funcionar el exe.... que podria ser el problema?... tengo instalada conio para dev c.. o desintalo y reinstalo todo?...saludos


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Beakman en 28 Noviembre 2010, 07:02 am
Para comparar valores booleanos.
para && tiene que ser verdadero si o si, todas las partes.
para || solo se necesita uno en verdadero.
Código
  1. bool var1,var2;
  2.  
  3. (...)
  4.  
  5. if( var1 && var2 )
  6. cout << "Ambas son verdaderas" << endl;
  7. else
  8. {
  9. cout << "Puede que solo una este en falso" << endl;
  10. cout << "O puede que las dos esten en falso" << endl;
  11. }
  12.  
  13.  
  14. if( var1 || var2 )
  15. cout << "Una o dos en verdadero" << endl;
  16. else
  17. cout << "Ninguna de las 2 esta en verdadero" << endl;
  18.  
  19. if( !var1 || !var2 )
  20. cout << "Una o dos en falso" << endl;
  21. else
  22. cout << "Las dos estan en verdadero" << endl;
  23.  

No entendí muy bien el otro problema que tenias.
Pero no creo que sea por el SO, al menos que sea un programa muy grande no creo.


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 29 Noviembre 2010, 12:19 pm
cuando intento ejecutar lo que compilo el exe se pega y se cierra...


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Superplay en 30 Noviembre 2010, 00:00 am
Para comparar valores booleanos.
para && tiene que ser verdadero si o si, todas las partes.
para || solo se necesita uno en verdadero.
Código
  1. bool var1,var2;
  2.  
  3. (...)
  4.  
  5. if( var1 && var2 )
  6. cout << "Ambas son verdaderas" << endl;
  7. else
  8. {
  9. cout << "Puede que solo una este en falso" << endl;
  10. cout << "O puede que las dos esten en falso" << endl;
  11. }
  12.  
  13.  
  14. if( var1 || var2 )
  15. cout << "Una o dos en verdadero" << endl;
  16. else
  17. cout << "Ninguna de las 2 esta en verdadero" << endl;
  18.  
  19. if( !var1 || !var2 )
  20. cout << "Una o dos en falso" << endl;
  21. else
  22. cout << "Las dos estan en verdadero" << endl;
  23.  

No entendí muy bien el otro problema que tenias.
Pero no creo que sea por el SO, al menos que sea un programa muy grande no creo.

Tio, lo tuyo está bien... pero si pregunta para C y le contestamos C++ es como si un ruso pregunta en español (que le cuesta) por algo y le contestamos en catalán.


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Akai en 30 Noviembre 2010, 00:11 am
Volviendo al tema del post:

cuando intento ejecutar lo que compilo el exe se pega y se cierra...

Posiblemente tu programa se esté ejecutando correctamente, pero debido a que lo estás ejecutando bajo windows, tu programa abre una consola, empieza su ejecución, hace lo que tenga que hacer, la finaliza y cierra la consola.  Si quieres mantener lo que imprima el programa sin recurrir a pausas (no poner pausas sería lo recomendable)deberías mirarte esto:

http://foro.elhacker.net/programacion_cc/ejecutar_programas_en_windows_sin_necesidad_de_pausas_system_pause_etc-t306837.0.html


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 30 Noviembre 2010, 00:49 am
Tiene pausas sysmtem>nul, pero me he fijado en detalles, por eso mismo voy a formatear la portatil, por ejemplo me pasa que a veces al abrir el aimp se pega totalmente la pc, o firefox, o cosas tipicas, jugar escuchando musica, intentar cerrar algo... asi que por seacaso voy a limpiar la informacion de respaldo y instalar un copia limpia(primero a descargarla por que el win lo traia preinstalado esta cosa)...saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 07:38 am
Hola de nuevo, miren el problema esta, yo tengo esto para comprobar por separado si el n° ingresado es multiplo de 2 y de 5, lo hago sin pauses, lo ejecuto desde  la consola, y nada no hay resultado...  este es el codigo:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  int valor;
  7.  printf("introduzca un numero\n");
  8.  scanf("%d", valor);
  9.  /* comprobar si es multiplo de 2*/
  10.  if (valor % 2 == 0)
  11.  {
  12.            printf("Multiplo de 2: si\n");
  13.            }
  14.  else {
  15.       printf("Multiplo de 2: no\n");
  16.       }
  17.  
  18.  /* comprobar si el multiplo de 5*/
  19.  if (valor % 5 == 0)
  20.  {
  21.            printf("Multiplo de 5: si\n");
  22.            }
  23.  else {
  24.       printf("Multiplo de 5: no\n");
  25.       }
  26.  return 0;
  27. }
  28.  

si me pudieran dar otra manito y explicarme lo que esta mal se los agradeceria...saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: leogtz en 2 Diciembre 2010, 07:40 am
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(int argc, char *argv[])
  5. {
  6.  int valor;
  7.  printf("introduzca un numero\n");
  8.  scanf("%d", valor);
  9.  /* comprobar si es multiplo de 2*/
  10.  if (valor % 2 == 0)
  11.  {
  12.            printf("Multiplo de 2: si\n");
  13.            }
  14.  else {
  15.       printf("Multiplo de 2: no\n");
  16.       }
  17.  
  18.  /* comprobar si el multiplo de 5*/
  19.  if (valor % 5 == 0)
  20.  {
  21.            printf("Multiplo de 5: si\n");
  22.            }
  23.  else {
  24.       printf("Multiplo de 5: no\n");
  25.       }
  26.  while(getchar() != '\n');
  27.  getchar();
  28.  return 0;
  29. }


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 08:05 am
gracias pero tampoco me funka, si pongo una letra andaperfecto, pero como la cosa es con numero despues de teclas un numero no aparece nada.. saludos


Título: Re: Hola me sacan de una duda?[C]
Publicado por: leogtz en 2 Diciembre 2010, 09:39 am
Código
  1. scanf("%d", &valor);

No uses int main(int argc, char *argv[]) si no vas a dar soporte para linea de comandos, es como declarar variables y no utilizarlas.


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 10:20 am
gracias... no se me habia pasado por la mente que no darle argumentos seria un problema...saludoss

modificacon: entiendo.. se reconocer cuando algo se sale de mia manos y esta es una ocacion... sino uso main que uso? y como lo uso, perdonenme que sea tan ignorante pero estoy aprendiendo, y sin personas que me expliquen no puedo aprender... por cierto con:

Código
  1. int main()

sigue igual, probe con void en vez de main pero me da error...saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Akai en 2 Diciembre 2010, 11:14 am
A lo que se refería es que no uses main con argc y argv si no los vas a utilizar.

Utiliza en ese caso int main(){/* código del main aquí*/ }



Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 11:52 am
pero me sigue dando lo mismo, es decir, no me da el resultado que tiene que dar... he revisado todo una y otra vez, y nada, lo he hecho como me dicen pero no sirve... todavia no veo cual sea el problema...


Título: Re: Hola me sacan de una duda?[C]
Publicado por: Akai en 2 Diciembre 2010, 12:11 pm
Pon el código. Sin saber qué has modificado es dificil decirte nada.


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 12:35 pm
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.  int valor;
  7.  printf("introduzca un numero\n");
  8.  scanf("%d", valor);
  9.  /* comprobar si es multiplo de 2*/
  10.  if (valor % 2 == 0)
  11.  {
  12.            printf("Multiplo de 2: si\n");
  13.            }
  14.  else {
  15.       printf("Multiplo de 2: no\n");
  16.       }
  17.  
  18.  /* comprobar si el multiplo de 5*/
  19.  if (valor % 5 == 0)
  20.  {
  21.            printf("Multiplo de 5: si\n");
  22.            }
  23.  else {
  24.       printf("Multiplo de 5: no\n");
  25.       }
  26.  while(getchar() != '\n');
  27.  getchar();
  28.  return 0;
  29. }
  30.  

se supone que me debiera decir i el numero ingresado es multiplo de 2 y 5...pero no da..saluda


Título: Re: Hola me sacan de una duda?[C]
Publicado por: 3mp3z@ndo en 2 Diciembre 2010, 13:04 pm
Ya te habian comentado lo que te faltaba, aqui:

Código
  1. scanf("%d", valor);

no almacenas la entrada en la variable, dejalo asi:

Código
  1. scanf("%d", &valor);

Saludos


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 2 Diciembre 2010, 13:15 pm
Amm hola de nuevo, bueno, me funciono y todo y capte como hacer una pausa, aunque a mi parecer no es pausa sino un asimulacion de ella.. en fin.. en mi afan por hacer algo mejor que solo limitarme a hacer el ejercicio, decidi aparte de practicar, hace un codigo que te pidiera el numero a comprobar, y otro numero que indique hasta donde comprobar, osea que compruba desde el 0 hasta el numero que desees, si es multiplo... el problema se concentra especificamente dentro del for, en printf en la parte de la segunda asignación de variable, especificamente, la secuencia del operador ternario, claro esta que como se imaginaran, otra vez, estoy colgado con esto... :xD

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int cont, valor, valend, end;
  6.    char s, n;
  7.    s = 's';
  8.    n = 'n';
  9.    cont = 0;
  10.    valend = 0;
  11.  
  12.    printf("Introducir entero\n");
  13.    scanf("%d", &valor);
  14.    printf("Introducir valor bucle end\n");
  15.    scanf("%d", &end);
  16.  
  17.    /* comprobando */
  18.  
  19.    for ( cont = 0; valend < end; valend++)
  20.    {
  21.        printf("Multiplo de %d: %c\n", valend, ((valor % valend == 0) ? s : n) );
  22.        }
  23.    while (getchar() != '\n');
  24.    getchar();
  25.    return 0;
  26. }
  27.  

se que es mucho pedir, pero si pudieran darme otra manito( a este paso los voy a tener que comprar manos ortopedicas a todos  :laugh:  :silbar:)...saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: leogtz en 3 Diciembre 2010, 02:02 am
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.    int cont, valor, valend, end;
  6.    char s, n;
  7.    s = 's';
  8.    n = 'n';
  9.    cont = 0;
  10.    valend = 1;
  11.  
  12.    printf("Introducir entero : ");
  13.    scanf("%d", &valor);
  14.    printf("Introducir valor bucle end : ");
  15.    scanf("%d", &end);
  16.  
  17.    /* comprobando */
  18.  
  19.    for ( cont = 0; valend <= end; valend++)
  20.    {
  21.        printf("Multiplo de %d: %c\n", valend, ((valend % valor == 0) ? s : n) );
  22.    }
  23.    while (getchar() != '\n');
  24.    getchar();
  25.    return 0;
  26. }
  27.  


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 3 Diciembre 2010, 23:10 pm
lo de <= ya lo tenia...trabajando en el codigo en unrato mas ayer jajaja, pero no me digas que solo estaba la división al reves :o... realmente sin palabras...  yo me concentre muchisimo en revisar la sintaxis por algun erro  se me paso eso..jajaj gracias..saludoss


Título: Re: Hola me sacan de una duda?[C]
Publicado por: leogtz en 4 Diciembre 2010, 02:20 am
Creo que valend debía ser inicializado a 1, no a cero.


Título: Re: Hola me sacan de una duda?[C]
Publicado por: flacc en 4 Diciembre 2010, 09:41 am
tambien me di cuenta de eso, la cosa ees que  5 pones 5 repeticiones aparecen 4 comprobaciones en pantalla, asi que tras terminar el for agregue otra mas y lo solucione, si alguien tiene otra solucion me vale...saludoss y gracias por todo... ahora me lio con las jodidas rectas y sus ecuaciones...