Hack x Crack - Comunidad de Seguridad informática

Programación => C / C++ => Mensaje iniciado por: 3hy! en Diciembre 18, 2011, 07:14:44 pm

Título: [C] Calculadora anti trolls en las divisiones
Publicado por: 3hy! en Diciembre 18, 2011, 07:14:44 pm
Bueno, llevaba tiempo sin aportar nada, resulta que estaba aburrido y bueno, me puse a coddear un poco y como estudié hace nada las funciones me puse a hacer una calc con funciones y anti trolls que ponen 0 en el segundo número de las divisiones, así que espero que os guste, es complejo y simple a la vez, desde la última vez que miré el reloj, ha pasado media hora y en ese momento llevaba medio code echo xD
Consta de 105 líneas de código.

Código: C
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int suma(int num1, int num2){
  5.     int sum=num1+num2;
  6.     return sum;
  7. }
  8.  
  9. int resta(int num1, int num2){
  10.     int res=num1-num2;
  11.     return res;
  12. }
  13.  
  14. int multiplicacion(int num1, int num2){
  15.     int multi=num1*num2;
  16.     return multi;
  17. }
  18.  
  19. int division(int num1, int num2){
  20.     int div=num1/num2;
  21.     return div;
  22. }
  23.  
  24. int cuadrado(numero){
  25.     int cuad=numero*numero;
  26.     return cuad;
  27. }
  28.  
  29. int main(void){
  30.  
  31. int opcion=0, tope=0, numero1, numero2, resultado, intentos=0;
  32.  
  33. printf("Calculator\n\nby 3hy! - Press ENTER to continue.\n");
  34. system("clear");
  35. while(tope <= 200){
  36. printf("Try an option:\n1 - Number + Number\n2 - Number - Number\n3 - Multiplication\n4 - Division\n5 - Number^2\n6 - Exit\n\n > ");
  37. scanf("%d", &opcion);
  38. system("clear");
  39. switch(opcion){
  40. case 1:     printf("Number one: ");
  41.             scanf("%d",&numero1);
  42.             printf("\nNumber two: ");
  43.             scanf("%d",&numero2);
  44.                 resultado=suma(numero1, numero2);
  45.                 printf("%d + %d = %d\n\n",numero1,numero2,resultado);
  46.             getchar();
  47.         break;
  48.  
  49. case 2:     printf("Number one: ");
  50.             scanf("%d",&numero1);
  51.             printf("\nNumber two: ");
  52.             scanf("%d",&numero2);
  53.                 resultado=resta(numero1, numero2);
  54.                 printf("%d - %d = %d\n\n",numero1,numero2,resultado);
  55.             getchar();
  56.        break;
  57. case 3:     printf("Number one: ");
  58.             scanf("%d",&numero1);
  59.             printf("\nNumber two: ");
  60.             scanf("%d",&numero2);
  61.                 resultado=multiplicacion(numero1, numero2);
  62.                 printf("%d x %d = %d\n\n",numero1,numero2,resultado);
  63.             getchar();
  64.        break;
  65. case 4: printf("Number one: ");
  66.             scanf("%d",&numero1);
  67.             printf("\nNumber two: ");
  68.             scanf("%d",&numero2);
  69.                 if(numero2==0){
  70.                     printf("No valid number, try again.\Number 2: ");
  71.                     scanf("%d",&numero2);
  72.                     if(numero2==0){
  73.                         printf("\nSTOP TROLLING ME, SO FUCKIN' TROLL. I'LL SHUTDOWN YOUR COMPUTER, SHIT!!");
  74.                         system("halt");
  75.                     }
  76.                           else{
  77.                 resultado=division(numero1, numero2);
  78.                 printf("%d / %d = %d\n\n",numero1,numero2,resultado);
  79.                 getchar();
  80.                 }
  81.                 }
  82.                 else{
  83.                 resultado=division(numero1, numero2);
  84.                 printf("%d / %d = %d\n\n",numero1,numero2,resultado);
  85.                 getchar();
  86.                 }
  87.         break;
  88. case 5: printf("Number: ");
  89.             scanf("%d",&numero1);
  90.                 resultado=cuadrado(numero1);
  91.                 printf("%d^2 = %d\n\n",numero1,resultado);
  92.             getchar();
  93.         break;
  94. case 6: exit(0);
  95. default: printf("No disponible\n\n");
  96.         getchar();
  97.         system("clear");
  98.         break;
  99. }
  100. tope++;
  101. }
  102. return 0;
  103. }
  104.  
*nota: Puse un poco de System, intenté usarlo lo menos posible, pero no sabía como limpiar pantalla sin usar conio.h, esta es la única forma que se me ocurrió.
Cualquier observación y crítica constructiva es bien recibida. Sobre el inglés, no le presté mucha atención así que si hay algún fallo es normal ya que lo traducí desde el castellano  xD
Saludos,
3hy!
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: Death Smile en Diciembre 18, 2011, 07:19:52 pm
lol vaya code, lo usare para mis calculos cuanticos :D
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: 3hy! en Diciembre 18, 2011, 07:21:51 pm
¿Cálculos cuánticos? Creo que tendrás que explicarme qué son... xD Si eso me das alguna clase por Skype xD
¡Saludos!
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: Libereco en Diciembre 18, 2011, 08:38:55 pm
No está mal, todo sea aportar. Gracias.
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: Shama| en Diciembre 19, 2011, 12:13:38 am
Critica constructiva :) aunque, no se si estare en lo cierto ya que solo he codeado un "hola mundo" :P
Enves de utilizar int, que es solo para numeros enteros, podrias utilizar double o float, que es para francciones y al momento de imprimir utlizar %g, para dedondearlo y quitarle los ceros demas.
eso seria, yo támbien espero codear una calculadora en un tiempito mas :P

Saludos !!
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: LoboOscuro en Diciembre 19, 2011, 03:35:38 am
Estas programando en linux?

podrias usar exec() en lugar de system().

Esa calculadora es medio agresiva, no lo puedo usar asi, si necesito dividirlo por cero y me apaga la PC, no, no lo puedo usar. Quiero reportarlo en la lista de bugs, donde lo puedo encontrar en el sitio oficial? No puede ser que cada vez que quiera dividirlo a 0 me reinicie la maquina, esto no va, no funca. Ya me reinicio 5 veces!! No voy a usarlo mas. :(
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: 3hy! en Diciembre 19, 2011, 10:35:54 am
Critica constructiva :) aunque, no se si estare en lo cierto ya que solo he codeado un "hola mundo" :P
Enves de utilizar int, que es solo para numeros enteros, podrias utilizar double o float, que es para francciones y al momento de imprimir utlizar %g, para dedondearlo y quitarle los ceros demas.
eso seria, yo támbien espero codear una calculadora en un tiempito mas :P

Saludos !!
Pues la verdad, tienes razón, podría poner decimales con float, aunque así ya me gusta, Ni float ni Double es para fracciones, Double es para más números que int y float, para decimales (Separados con un punto).
Ahora que lo pienso, me falta poner el resto de la división, luego lo implemento.
Estas programando en linux?

podrias usar exec() en lugar de system().

Esa calculadora es medio agresiva, no lo puedo usar asi, si necesito dividirlo por cero y me apaga la PC, no, no lo puedo usar. Quiero reportarlo en la lista de bugs, donde lo puedo encontrar en el sitio oficial? No puede ser que cada vez que quiera dividirlo a 0 me reinicie la maquina, esto no va, no funca. Ya me reinicio 5 veces!! No voy a usarlo mas. :(
Estoy programando desde linux, efectivamente. Sobre exec no escuché... me pondré a investigar xD! No es agresiva, es anti trolls, la división por 0 no se puede hacer, supongo que lo dirás en cachondeo xD
¡Saludos y gracias por comentar! :D
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: mrobles en Diciembre 19, 2011, 11:09:32 am
De las 109 lineas solo son utiles 40 o asi, el resto se podia haber evitado  :P
PD: ami me gusta trollear tambien xD
Título: Re:[C] Calculadora anti trolls en las divisiones
Publicado por: 3hy! en Diciembre 20, 2011, 11:24:17 am
Era para practicar funciones, Mrobles xD
¡Saludos!