/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

por favor ayuda con un programa en c++

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
hipno_12



Registrado: 10 Oct 2007
Mensajes: 3

MensajePublicado: 10/10/2007 6:23 pm
Título: por favor ayuda con un programa en c++

el problema es que al ejecutarlo no hace la suma todo lo demas si y a la hora de pedir si desea volver a hacer una operacion se sale a pesar de que la condicion sea verdadera
/*calculadora simple*/
#include <stdio.h>
#include <conio.h>
main()
{

int a,b,d,oper;
float c;

printf("calculadora simple\n");
d==1;

printf("1suma\n");
printf("2resta\n");
printf("3multiplicacion\n");
printf("4division\n");
printf("¿que operacion quiere realizar? \n");
scanf("%d", &oper);
{
while(d==1)
{
if(oper==1)
{
printf("introduzca el primer numero \n");
scanf("%d", &a);
printf(" introduzca el segundo numero\n");
scanf("%d", &b);
c = a + b;
printf(" El resultado es: %f\n", c);
printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
scanf("%d",&d);
getch();
}
}

if (oper==2)
{
printf("introduzca el primer numero \n");
scanf("%d", &a);
printf("introduzca el segundo numero\n");
scanf("%d", &b);
c = a - b;
printf(" El resultado es: %f\n", c);
printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
scanf("%d",&d);
}
getch();


if (oper == 3)
{
printf("introduzca el primer numero \n");
scanf("%d", &a);
printf("introduzca el segundo numero\n");
scanf("%d", &b);
c = a * b;
printf(" El resultado es: %f\n", c);
printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
scanf("%d",&d);
}
getch();




if(oper==4)
{
printf("introduzca el primer numero \n");
scanf("%d", &a);
printf(" introduzca el segundo numero\n");
scanf("%d", &b);
c = a / b;
printf(" El resultado es:%.1f\n", c);
printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
scanf("%d",&d);
getch();

}
}
}
Volver arriba
Dirección AIM
Lycoris



Registrado: 10 Oct 2007
Mensajes: 2

MensajePublicado: 10/10/2007 7:29 pm
Título:

hola, mira yo tambien soy principiante en C !
llevo unos dias practicando, bueno espero que te sirva mi pequeña ayuda.

no cambie mucho tu programa para que puedas comprender tus errores.
Código:
// calculadora simple

#include <stdio.h>
#include <conio.h>
int main(){

int a,b,oper;
char d;
float c;
volver:
        printf("\n Calculadora simple\n");
d=0;
    do{
        printf("1.- Suma\n");
        printf("2.- Resta\n");
        printf("3.- Multiplicacion\n");
        printf("4.- Division\n");
        printf("\nQue operacion quiere realizar? :  ");
        fflush(stdin); // Limpia el Buffer
        scanf("%d", &oper);
    }while(oper< 1 || oper > 4);

    if(oper==1){

        printf("\nIntroduzca el primer numero:  ");
        scanf("%d", &a);
        printf("\nIntroduzca el segundo numero: ");
        scanf("%d", &b);
        c = a + b;
        printf(" El resultado es: %1.f\n", c);
        printf("\nDesea hacer otra opreracion presione? S/N: ");
        scanf("%s",&d);
    system("cls");
    }

    if(d=='s' || d=='S'){

    goto volver;

    }
    if(d=='n' || d=='N'){
        printf("\n Adios");
    }

    if (oper==2){

        printf("\nIntroduzca el primer numero:  ");
        scanf("%d", &a);
        printf("\nIntroduzca el segundo numero: ");
        scanf("%d", &b);
        c = a - b;
        printf(" El resultado es: %1.f\n", c);
        printf("\nDesea hacer otra opreracion presione? S/N: ");
        scanf("%s",&d);
    system("cls");
   
    }

    if(d=='s' || d=='S'){

    goto volver;
    }
    if(d=='n' || d=='N'){
   printf("\n Adios");
    }

    if (oper == 3)
    {
        printf("\nIntroduzca el primer numero:  ");
        scanf("%d", &a);
        printf("\nIntroduzca el segundo numero: ");
        scanf("%d", &b);
        c = a * b;
        printf(" El resultado es: %1.f\n", c);
        printf("\nDesea hacer otra opreracion presione? S/N: ");
        scanf("%s",&d);
    system("cls");
    }

    if(d=='s' || d=='S'){

    goto volver;
    }

    if(d=='n' || d=='N'){
    printf("\n Adios");
    }


    if(oper==4){

        printf("\nIntroduzca el primer numero:  ");
        scanf("%d", &a);
        printf("\nIntroduzca el segundo numero: ");
        scanf("%d", &b);
            c = a / b;
        printf(" El resultado es:%.2f\n", c);
        printf("\nDesea hacer otra opreracion presione? S/N: ");
        scanf("%s",&d);

        system("cls");

    }

    if(d=='s' || d=='S'){

    goto volver;
    }

    if(d=='n' || d=='N'){
        printf("\n Adios");
    }
    }


Puedo tener muchos errores igual !!!
Volver arriba
digies



Registrado: 18 Nov 2005
Mensajes: 176
Ubicación: Cono Sur

MensajePublicado: 11/10/2007 6:35 am
Título:

Hola

Si eres principiante en C, te convendría no utilizar librerías no estándar hasta que no manejes con un poco más de soltura el lenguaje.
Viendo un poco tu código hay un error en el d==1, esto es una comparación y no una asignación.
Una versión estándar sería:
Código:

/*calculadora simple*/

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

int main(void)
{
    int a,b,d,oper;
    float c;
    do
    {
        printf("calculadora simple\n");
        d=1;
        printf("1suma\n");
        printf("2resta\n");
        printf("3multiplicacion\n");
        printf("4division\n");
        printf("que operacion quiere realizar \n");
        scanf("%d", &oper);
        if(oper==1)
        {
            printf("introduzca el primer numero \n");
            scanf("%d", &a);
            printf(" introduzca el segundo numero\n");
            scanf("%d", &b);
            c = a + b;
            printf(" El resultado es: %f\n", c);
            printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
            scanf("%d",&d);
            system("CLS");
        }
        else if (oper==2)
        {
            printf("introduzca el primer numero \n");
            scanf("%d", &a);
            printf("introduzca el segundo numero\n");
            scanf("%d", &b);
            c = a - b;
            printf(" El resultado es: %f\n", c);
            printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
            scanf("%d",&d);
            system("CLS");
        }
        else if (oper == 3)
        {
            printf("introduzca el primer numero \n");
            scanf("%d", &a);
            printf("introduzca el segundo numero\n");
            scanf("%d", &b);
            c = a * b;
            printf(" El resultado es: %f\n", c);
            printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
            scanf("%d",&d);
            system("CLS");
        }
        else
        {
            printf("introduzca el primer numero \n");
            scanf("%d", &a);
            printf(" introduzca el segundo numero\n");
            scanf("%d", &b);
            c = a / b;
            printf(" El resultado es:%.1f\n", c);
            printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
            scanf("%d",&d);
            system("CLS");
        }
    }
    while(d==1);
    system("PAUSE");
    return EXIT_SUCCESS;
}



Un saludo
Volver arriba
rir3760



Registrado: 01 Oct 2004
Mensajes: 3588
Ubicación: Mexico

MensajePublicado: 11/10/2007 8:57 am
Título:

Otra modificacion que ayudaria a reducir significativamente el tamaño del programa es eliminar la peticion de los dos numeros en cada caso.

Debido a que todas las operaciones requieren de dos operandos es mas sencillo primero pedir estos y solo despues realizar la operacion (cuidandose de que el divisor no sea cero en el caso de la division):

Caso similar con la pregunta sobre si continuar o no. El codigo de digies quedaria reducido a:
Código:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
   int a, b, d, oper;
   
   do {
      printf("calculadora simple\n");
      printf("1suma\n");
      printf("2resta\n");
      printf("3multiplicacion\n");
      printf("4division\n");
     
      printf("que operacion quiere realizar \n");
      scanf("%d", &oper);
     
      d = 1;
      printf("introduzca el primer numero \n");
      scanf("%d", &a);
      printf(" introduzca el segundo numero\n");
      scanf("%d", &b);
     
      if (oper == 1)
         printf(" El resultado es: %d\n", a + b);
      else if (oper == 2)
         printf(" El resultado es: %d\n", a - b);
      else if (oper == 3)
         printf(" El resultado es: %d\n", a * b);
      else if (oper == 4 && b != 0)
         printf(" El resultado es:%.1f\n", (double) a / b);
     
      printf("si desea hacer otra opreracion presione\n1)si\n2)no\n:");
      scanf("%d", &d);
      system("CLS");
     
   } while (d == 1);
   
   system("PAUSE");
   return EXIT_SUCCESS;
}


Tambien se podrian agregar algunos detallitos mas como la validacion del valor de retorno de funciones como scanf pero supongo que eso ya seria una exageracion de mi parte.

Un saludo
_________________
The capacity to learn is a gift;
The ability to learn is a skill;
The willingness to learn is a choice.
--
Rebec of Ginaz
Volver arriba
hipno_12



Registrado: 10 Oct 2007
Mensajes: 3

MensajePublicado: 11/10/2007 1:55 pm
Título: hola

gracias por ayudarme solo tengo una pregunta si quisiera que en la 4 que es la divison al poner 0/ cualquier numero como es un error que me pida volver a introducir los numeros com se pondria
Volver arriba
Dirección AIM
digies



Registrado: 18 Nov 2005
Mensajes: 176
Ubicación: Cono Sur

MensajePublicado: 11/10/2007 3:08 pm
Título:

Si no quieres que el dividendo sea 0 simplemente colocas && a!=0 en el else-if:
Código:
else if (oper==4 && b!=0 && a!=0)

Pero lo más importante de todo es que el divisor no sea cero tal como lo hizo rir3760 en su código.

Un saludo
Volver arriba
hipno_12



Registrado: 10 Oct 2007
Mensajes: 3

MensajePublicado: 12/10/2007 6:55 am
Título: hola de nuevo

como es una tarea como seria si en lugar de <stdlib.h> fuera con <conio.h>
Volver arriba
Dirección AIM
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com