Hola me sacan de una duda?[C]

Iniciado por flacc, 28 Noviembre 2010, 03:15 AM

0 Miembros y 1 Visitante están viendo este tema.

flacc

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:

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:

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
(( (valor % 2) == 0) && ( (valor % 5) == 0) )) hace lo que nesecito?... a mi me da que no pero queria consultarlo con ustedes...saludoss

Beakman

Código (c++) [Seleccionar]

if( numero%2 == 0 && numero%5 ==0 )
cout << "El numero es divisible por 2 Y 5";

Esta bien, eso. Te dice si es divisible por ambos, 2 y 5.
Por ejemplo 10

flacc

#2
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

Beakman

Para comparar valores booleanos.
para && tiene que ser verdadero si o si, todas las partes.
para || solo se necesita uno en verdadero.
Código (c++) [Seleccionar]

bool var1,var2;

(...)

if( var1 && var2 )
cout << "Ambas son verdaderas" << endl;
else
{
cout << "Puede que solo una este en falso" << endl;
cout << "O puede que las dos esten en falso" << endl;
}


if( var1 || var2 )
cout << "Una o dos en verdadero" << endl;
else
cout << "Ninguna de las 2 esta en verdadero" << endl;

if( !var1 || !var2 )
cout << "Una o dos en falso" << endl;
else
cout << "Las dos estan en verdadero" << endl;


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.

flacc

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

Superplay

Cita de: qily 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 (c++) [Seleccionar]

bool var1,var2;

(...)

if( var1 && var2 )
cout << "Ambas son verdaderas" << endl;
else
{
cout << "Puede que solo una este en falso" << endl;
cout << "O puede que las dos esten en falso" << endl;
}


if( var1 || var2 )
cout << "Una o dos en verdadero" << endl;
else
cout << "Ninguna de las 2 esta en verdadero" << endl;

if( !var1 || !var2 )
cout << "Una o dos en falso" << endl;
else
cout << "Las dos estan en verdadero" << endl;


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.


"Nací siendo un virus" By Windows.
Este mensaje no es por ofender, yo uso Windows también, simplemente... es broma ;)

Akai

Volviendo al tema del post:

Cita de: mini_nauta en 29 Noviembre 2010, 12:19 PM
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

flacc

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

flacc

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:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int valor;
  printf("introduzca un numero\n");
  scanf("%d", valor);
  /* comprobar si es multiplo de 2*/
  if (valor % 2 == 0)
  {
            printf("Multiplo de 2: si\n");
            }
  else {
       printf("Multiplo de 2: no\n");
       }
       
  /* comprobar si el multiplo de 5*/
  if (valor % 5 == 0)
  {
            printf("Multiplo de 5: si\n");
            }
  else {
       printf("Multiplo de 5: no\n");
       }
  return 0;
}


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

leogtz

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int valor;
  printf("introduzca un numero\n");
  scanf("%d", valor);
  /* comprobar si es multiplo de 2*/
  if (valor % 2 == 0)
  {
            printf("Multiplo de 2: si\n");
            }
  else {
       printf("Multiplo de 2: no\n");
       }

  /* comprobar si el multiplo de 5*/
  if (valor % 5 == 0)
  {
            printf("Multiplo de 5: si\n");
            }
  else {
       printf("Multiplo de 5: no\n");
       }
  while(getchar() != '\n');
  getchar();
  return 0;
}
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com