¿Porque se reinicia el programa?

Iniciado por skatres, 10 Noviembre 2011, 18:10 PM

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

skatres

Hola, pues en mi intento de seguir aprendiendo sobre este mundillo, sigo haciendo mis pequeños proyectos xD, bueno en este caso he querido hacer un programa en el que dando el usuario tres valores, se realice una operacion

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

int main()
{    int a,b,c,res;
        printf("Hola, ahora introduce una variable:");
        scanf("%i" ,&a);
        printf("Introduce un segundo valor:");
        scanf("%i" ,&b);         
        printf("No es por ser pesado, pero introduce un tercer valor:");
        scanf("%i" ,&c);
                      if(c==0)
                      {
                              printf("No se puede dividir entre 0\n");// Aquí es donde nose como hacerlo
                             
                              }
                             
       
        res=("%i+%i/%i",(a+b)/c);         
        printf("El resultado es %i\n",res);
       
        system("pause");
        return 0;
       
}



Todo me sale correcto, salvo la parte en la que debería de salir el mensaje de que no se puede dividir por 0. Perdonen si la duda es muy simple o tonta.

x64core

A mi si me sale la condicion if
pero lo que sucede es que estas dividiendo entre 0 deberia hacer en la condicion que si es 0 no lo incluya en la operacion
porque en los dos compiladores que tengo el programa se cuelga o da error en esa linea
que compilador usas?

тαптяα

Tienes un titulo muy raro, para el problema que presentas...

Primero, aprende lo que quieres hacer:

res=("(%i+%i)/%i",(a+b)/c);

Si no le pones parentesis, no te hace correctamente la operacion.

No necesitas conio.h (Aparte que NO SE DEBE usar..)

Y la parte que tu dices que no va, veamos..

pones que si c es igual a 0, muestre por pantalla un texto..

pero luego sigue ejecutandose toddo normalmente, lo que has de hacer, es meter la formula entre un condicional else

Saludos

skatres

Cita de: тαптяαпсє en 10 Noviembre 2011, 18:47 PM
Tienes un titulo muy raro, para el problema que presentas...

Primero, aprende lo que quieres hacer:

res=("(%i+%i)/%i",(a+b)/c);

Si no le pones parentesis, no te hace correctamente la operacion.

No necesitas conio.h (Aparte que NO SE DEBE usar..)

Y la parte que tu dices que no va, veamos..

pones que si c es igual a 0, muestre por pantalla un texto..

pero luego sigue ejecutandose toddo normalmente, lo que has de hacer, es meter la formula entre un condicional else

Saludos

Claro, ahora me sale, gracias!, ahora mi objetivo es que despues de que el programa te diga que no se puede dividir por 0, salga otra opcion para introducir otra vez el numero "c", llevo intentalo un buen rato pero no doi y con la solucion.

Este es el codigo resultante
#include <stdio.h>
#include <stdlib.h>

int main()
{    int a,b,c,res;
        printf("Hola, ahora introduce una variable:");
        scanf("%i" ,&a);
        printf("Introduce un segundo valor:");
        scanf("%i" ,&b);         
        printf("No es por ser pesado, pero introduce un tercer valor:");
        scanf("%i" ,&c);
                   
                 
                      if(c==0)
                      {
                              printf("No se puede dividir entre 0\n");
                              }       
                             
                              else//En teoria aqui el programa debería de preguntarme para introducir
                              {
                                   
                                   printf("Introduce un valor distinto de 0:");
                                   scanf("%i",&c);
                                 
                                   res=("(%i+%i)/%i",(a+b)/c);
                                           
                                   printf("El resultado es %i\n",res);
                               }
                               
                                 
                     
                     
                     
        system("pause");
        return res;
       
}

satu

Hola

El nuevo valor lo debes pedir cuando c es 0, no al contrario


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

int main()
{
    int a,b,c,res;
    printf("Hola, ahora introduce una variable: ");
    scanf("%i" ,&a);
    printf("Introduce un segundo valor: ");
    scanf("%i" ,&b);
    printf("No es por ser pesado, pero introduce un tercer valor: ");
    scanf("%i" ,&c);

    if(c==0)
        {
        printf("No se puede dividir entre 0\n");
        do
            {
            printf("Introduce un valor distinto de 0: ");
            scanf("%i",&c);
            }
        while(c == 0);
        }

    res=(a+b)/c;
    printf("El resultado es %i\n", res);

    printf("Presione Enter para salir.....");
    while(getchar()!='\n');
    getchar();
    return 0;
}


Saludos
Breakbeat como forma de vida

skatres

Cita de: satu en 10 Noviembre 2011, 21:44 PM
Hola

El nuevo valor lo debes pedir cuando c es 0, no al contrario


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

int main()
{
    int a,b,c,res;
    printf("Hola, ahora introduce una variable: ");
    scanf("%i" ,&a);
    printf("Introduce un segundo valor: ");
    scanf("%i" ,&b);
    printf("No es por ser pesado, pero introduce un tercer valor: ");
    scanf("%i" ,&c);

    if(c==0)
        {
        printf("No se puede dividir entre 0\n");
        do
            {
            printf("Introduce un valor distinto de 0: ");
            scanf("%i",&c);
            }
        while(c == 0);
        }

    res=(a+b)/c;
    printf("El resultado es %i\n", res);

    printf("Presione Enter para salir.....");
    while(getchar()!='\n');
    getchar();
    return 0;
}


Saludos

Perdon la tardanza, muchas gracias por responder!!!