Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: PHAMTOM en 14 Julio 2010, 20:11 pm



Título: [ANSI C]Calculadora.
Publicado por: PHAMTOM en 14 Julio 2010, 20:11 pm
  • Suma
  • Resta
  • Multriplicacion
  • Divicion
  • Potencia
  • Pitagoras
Código:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
//Declaraciones de funciones
int pot(int base,int exponente)
{
int ret=1;
while(exponente--)
ret*=base;
return ret;
}
int calcular2(int h,int c)
{
    int k,catetox;
    h=h*h;
    c=c*c;
    k=h-c;
    catetox=sqrt(k);
    return catetox;
}
int calcular(int y,int x)
{
    int r;
    y=y*y;
    x=x*x;
    r=x+y;
    float hipotenusa=0;
    hipotenusa=sqrt(r);
    return hipotenusa;
}
int sumar(int x,int y)
    {
        int resultado;
        resultado = x+y;
        return resultado;
        }
        int restar(int x,int y)
        {
            int resultado;
            resultado = x-y;
            return resultado;
            }
             int Multriplicar(int x,int y)
        {
            int resultado;
            resultado = x*y;
            return resultado;
            }
              int Dividir(int x,int y)
        {
            int resultado;
            resultado = x/y;
            return resultado;
            }
/*Calculadora escrita en ANSI C PHAMTOM*/
int main()
{
    system("cls");
    char a;
    printf("\t");
    system("color 0b");
   

    // Delacaraciones :
                      int opt=0,opt1=0,opt2=0,cateto=0,cateto2=0,hipotenusa=0,p1=0,p2=0;
                     
   
                      //Menu :
                             printf("[+]Menu basico\n");
                      printf("1-Sumar\n");
                      printf("2-Restar\n");
                      printf("3-Multriplicar\n");
                      printf("4-Dividir\n");
                      printf("\n");
                      printf("[+]Pitagoras\n");
                      printf("5-Sacar Hipotenusa x\n");
                      printf("6-Sacar Cateto x\n");
                      printf("\n[+]Potencia");
                      printf("\n7-Potencia");
printf("\n\nN de opcion-> ");
//Operaciones
scanf("%d",&opt);
//Suma
if(opt==1)
{
          system("cls");
          printf("\tSumar\n\n\n");
          printf("Operando 1-> ");
          scanf("%d",&opt1);
          printf("Operando 2-> ");
          scanf("%d",&opt2);
           system("color 05");
          printf("\nEl resultado es -> %d",sumar(opt1,opt2));
          system("pause>nul");
          main();
}
//Resta
if(opt==2){
           system("cls");
          printf("\tRestar\n\n\n");
          printf("Operando 1-> ");
          scanf("%d",&opt1);
          printf("Operando 2-> ");
          scanf("%d",&opt2);
           system("color 05");
          printf("\nEl resultado es ->  %d",restar(opt1,opt2));
                  system("pause>nul");
                  main();
          }
          //Multriplicacion
          if(opt==3){
           system("cls");
          printf("\tMultriplicar\n\n\n");
          printf("Operando 1-> ");
          scanf("%d",&opt1);
          printf("Operando 2-> ");
          scanf("%d",&opt2);
           system("color 05");
          printf("\nEl resultado es ->  %d",Multriplicar(opt1,opt2));
          system("pause>nul");
          main();
          }
          //Divicion
               if(opt==4){
           system("cls");
          printf("\tDividir\n\n\n");
          printf("Operando 1-> ");
          scanf("%d",&opt1);
          printf("Operando 2-> ");
          scanf("%d",&opt2);
          system("color 05");
          printf("\nEl resultado es ->  %d",Dividir(opt1,opt2));
          system("pause>nul");
          main();
          }
          if(opt==5)
          {
                   
                       
                        system("cls");
                        printf("Calcular Hipotenusa ' x ' ");
                        printf("\n\nCateto 1 mide -> ");
                        scanf("%f",&cateto);
                        printf("\nCateto 2 mide -> ");
                        scanf("%f",&cateto2);
                        printf("\n\nLa hipotenusa mide %f",calcular(cateto,cateto2));
                        system("pause>nul");
                        main();
                    }
                    if(opt==6)
                    {
                              system("cls");
                                      printf("Calcular un Cateto ' x '");
                        printf("\n\nHipotenusa mide -> ");
                        scanf("%f",&hipotenusa);
                        printf("\nCateto Mide -> ");
                        scanf("%f",&cateto);
                        printf("\n\nEl cateto X mide ->%f",calcular2(hipotenusa,cateto));
                        system("pause>nul");
                        main();
                              }
    if(opt==7)
    {
            system("cls");
                                      printf("Potencia");
                        printf("\n\nBase -> ");
                        scanf("%d",&p1);
                        printf("\nExponente ");
                        scanf("%d",&p2);
                        printf("\n\nPotencia ->%d",pot(p1,p2));
                        system("pause>nul");
                        main(); 
              }
             

          if(opt>=8 || opt<=0)
          {
                   system("cls");
                   system("msg * Use 1,2,3,4,5,6");
                   main();
                    }
                    }


SALUDOS.


Título: Re: [ANSI C]Calculadora.
Publicado por: Eternal Idol en 14 Julio 2010, 20:40 pm
Por favor, si vas a seguir subiendo codigos ponelos todos en un solo hilo, gracias.


Título: Re: [ANSI C]Calculadora.
Publicado por: Horricreu en 14 Julio 2010, 21:20 pm
Estás utilizando funciones que no son standard. Si estás en Windows:

  • system("color") se puede cambiar por SetConsoleTextAttribute() (http://msdn.microsoft.com/en-us/library/ms686047(VS.85).aspx).
  • system("pause>nul") se puede cambiar por getchar() (http://www.cplusplus.com/reference/clibrary/cstdio/getchar/).

Otra cosa, pásate por acá (http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html).

Saludos :P


Título: Re: [ANSI C]Calculadora.
Publicado por: Gonzalo Leonardo en 14 Julio 2010, 23:13 pm
Lindo código. Buena recomendación la de Horricreu. Acostumbrarse a usar las librerías estándares.


Título: Re: [ANSI C]Calculadora.
Publicado por: .:BlackCoder:. en 15 Julio 2010, 00:12 am
Primero, cuando sacas la raiz de un numero lo mas seguro es que devuelva un numero decimal... Mosca en las funciones...

Segundo, algunos recomiendan usar la estructura switsh en vez de tantos if/else...

Me parecio ver, llamadas a main(), no me parecen correctas puedes trabajar de otras formas para no tener que hacerlo, creo que estas desviando mucho el flujo del programa...

Y, pes eso es todo lo que te puedo recomendar.

Saludos...