Advertisement
utroz

Fumec Calc 0.1

Aug 17th, 2011
121
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.61 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <windows.h>
  4.  
  5. const char message[] = "Welcome to simple calculator!\n"; // Valor constante armazenado em ROM, ou seja, não pode ser alterado!
  6.  
  7. void menu(void); //São cabeçalhos da função, não existe implementação( ex: int x;)
  8. void exit_system(void);
  9.  
  10. float calc(int *args, char c) // Recebe vetor(ponteiro) e um caractere.
  11. {
  12.     switch(c)  /* São ramificações(condições), só entra no default se nenhum case for aceito! */
  13.     {
  14.              case '+':
  15.                        return args[0] + args[1];
  16.              case '-':
  17.                        return args[0] - args[1];
  18.              case '*':
  19.                        return args[0] * args[1];
  20.              case '/':
  21.                        return *args / *(++args);
  22.              case '%':
  23.                        return args[0] % args[1];
  24.              default: // Ultima opção.
  25.                       printf("Please input a correct operator!\n"); menu(); //<- Acessa o metódo menu().
  26.     }
  27.     return 0;
  28. }
  29.  
  30. void menu(void)
  31. {
  32.     int value[2]; // Declara um vetor nulo de 2 posições.
  33.    
  34.     int x[2] = {4,3}; // Inicialização em massa! 4 está em x[0] e 3 em x[1].
  35.    
  36.     setbuf(stdout, NULL); // Limpa buffer de video.
  37.     printf("Input two values:\n");
  38.     scanf("%d%d", &value[0], &value[1]);
  39.    
  40.     fflush(stdin);  // Limpa buffer de teclado
  41.    
  42.     char ch;
  43.     printf("Please input a operator: (+, -, *, /, %):\t");
  44.     ch = getchar();
  45.        
  46.     float result = calc(value, ch); // Enviando o endereço do vetor e o caracter da operação.
  47.     puts("\n");
  48.     printf("The result is: %.1f!\n", result);
  49.    
  50.     exit_system();
  51. }  
  52.  
  53. void exit_system(void)
  54. {      
  55.      char ch;
  56.      
  57.      fflush(stdin);
  58.      
  59.      printf("You wanna to exit system? (y/n)");
  60.      ch = getchar();
  61.      
  62.      switch(ch)          
  63.      {
  64.                case 'y':                          
  65.                          printf("Thanks to use the system!");                        
  66.                          Sleep(3000); // delay de 3 segundos.
  67.                
  68.                          exit(1); // Sai do programa.
  69.                          
  70.                case 'n': menu(); // Acessa o metódo.
  71.                          break;
  72.                          
  73.                default: printf("Please input a correct option!");
  74.                         exit_system();
  75.                         break;
  76.                
  77.      }    
  78.  
  79. }
  80.  
  81. void receive_value(int *x) // Aqui neste ponteiro vai ser armazenado o endereço 1000, pois essa variável é um apontador para inteiro.
  82. {
  83.      *x += 7; // O simbolo (*) ela indica que você vai trabalhar no valor do endereço do ponteiro, não vai trabalhar no endereço.
  84.      
  85. }  
  86.  
  87.  
  88. int main(void)
  89. {    
  90.     /* printf("%s", message);
  91.     puts("\n"); //Injeta uma string, caracter ou tags de impressão!
  92.     menu(); */
  93.    
  94.     int x, *y, z; //Declarei 3 variaveis, y = ponteiro.
  95.    
  96.     x = 5; // Atribuição do valor 5 ao espaço de memória (variável) x.
  97.    
  98.     y = &x; // O ponteiro y está recebendo o endereço da variável x.
  99.    
  100.     z = *y; /* Lembre-se que (*y) está acessando o valor do endereço que está armazenado nela(ponteiro).    
  101.                e posteriomente atribuindo esse valor ao inteiro Z. */
  102.    
  103.     printf("%d", z); // Imprime o valor 5 que inicialmente estava em x.
  104.    
  105.    
  106.     /*int var; // Endereço de var é 1000.
  107.    
  108.     var  = 5; // Endereço 1000: [5];
  109.    
  110.     receive_value(&var); // Chama a função receive car e envia o endereço 1000
  111.    
  112.     printf("%d\n", var); */
  113.    
  114.     getch();
  115.     return 0;
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement