[ Foro de C ]

duda con if

30-Oct-2010 21:03
Diego Fernndez
2 Respuestas

He estado practicando con if y al hacer un programa he tenido un problema:


#include<stdio.h>
int num1;
int num2;
int prod;
main()
{
printf("Introduce un numero\n");
scanf("%d \n",&num1);
if (num1==0) printf("Cualquier numero multiplicado por 0 es 0\n");
if (num1!=0) printf("Introduzca otro numero\n");
if (num1!=0) scanf("%d \n",&num2);
if (num2==0) printf("Cualquier numero multiplicado por 0 da 0\n");
if (num2!=0) printf("el resultado de %d por %d es :\n",num1,num2);
prod = num1 * num2;
if (num2!=0) printf("%d \n",prod);
getchar();
}

Lo reescribí pero sigue funcionando mal :

#include<stdio.h>
#include<windows.h>
int num1;
int num2;
int prod;
main()
{
printf("Introduzca un numero\n");
scanf("%d \n",&num1);
if (num1==0) printf("Cualquier numero multiplicado por 0 es 0\n");
if (num1!=0)
{
printf("Introduzca otro numero\n");
scanf("%d \n",&num2);
if (num2==0) printf("Cualquier numero multiplicado por 0 da 0\n");
if (num2!=0)
{
printf("el resultado de %d por %d es :\n",num1,num2);
prod = num1 * num2;
printf("%d \n",prod);
}
}
getchar();
system("PAUSE");
}

Esto es lo que pasa:
"
Introduzca un numero
num1
num2
Introduzca otro numero
num3
el resultado de num1 por num2 es :
num1 * num2
"

Por qué pasa esto?


30-Oct-2010 22:17
Nacho Cabanes (+32)

¿Has probado a quitar los espacios y los "\n" de los "scanf", indicando que quieres leer sólo un número entero?:

scanf("%d",&num1);

en vez de

scanf("%d \n",&num1);

también podrías usar "else" en vez de repetir "if" opuestos, pero eso no debería afectar al funcionamiento, simplemente acorta el programa y lo hace un poco más rápido:

if (num1==0) printf("Cualquier numero multiplicado por 0 es 0\n");
else
{

en lugar de

if (num1==0) printf("Cualquier numero multiplicado por 0 es 0\n");
if (num1!=0)
{


31-Oct-2010 00:35
Diego Fernndez

Quité los espacios y ya funciona.
Gracias






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)