Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- const char message[] = "Welcome to simple calculator!\n"; // Valor constante armazenado em ROM, ou seja, não pode ser alterado!
- void menu(void); //São cabeçalhos da função, não existe implementação( ex: int x;)
- void exit_system(void);
- float calc(int *args, char c) // Recebe vetor(ponteiro) e um caractere.
- {
- switch(c) /* São ramificações(condições), só entra no default se nenhum case for aceito! */
- {
- case '+':
- return args[0] + args[1];
- case '-':
- return args[0] - args[1];
- case '*':
- return args[0] * args[1];
- case '/':
- return *args / *(++args);
- case '%':
- return args[0] % args[1];
- default: // Ultima opção.
- printf("Please input a correct operator!\n"); menu(); //<- Acessa o metódo menu().
- }
- return 0;
- }
- void menu(void)
- {
- int value[2]; // Declara um vetor nulo de 2 posições.
- int x[2] = {4,3}; // Inicialização em massa! 4 está em x[0] e 3 em x[1].
- setbuf(stdout, NULL); // Limpa buffer de video.
- printf("Input two values:\n");
- scanf("%d%d", &value[0], &value[1]);
- fflush(stdin); // Limpa buffer de teclado
- char ch;
- printf("Please input a operator: (+, -, *, /, %):\t");
- ch = getchar();
- float result = calc(value, ch); // Enviando o endereço do vetor e o caracter da operação.
- puts("\n");
- printf("The result is: %.1f!\n", result);
- exit_system();
- }
- void exit_system(void)
- {
- char ch;
- fflush(stdin);
- printf("You wanna to exit system? (y/n)");
- ch = getchar();
- switch(ch)
- {
- case 'y':
- printf("Thanks to use the system!");
- Sleep(3000); // delay de 3 segundos.
- exit(1); // Sai do programa.
- case 'n': menu(); // Acessa o metódo.
- break;
- default: printf("Please input a correct option!");
- exit_system();
- break;
- }
- }
- void receive_value(int *x) // Aqui neste ponteiro vai ser armazenado o endereço 1000, pois essa variável é um apontador para inteiro.
- {
- *x += 7; // O simbolo (*) ela indica que você vai trabalhar no valor do endereço do ponteiro, não vai trabalhar no endereço.
- }
- int main(void)
- {
- /* printf("%s", message);
- puts("\n"); //Injeta uma string, caracter ou tags de impressão!
- menu(); */
- int x, *y, z; //Declarei 3 variaveis, y = ponteiro.
- x = 5; // Atribuição do valor 5 ao espaço de memória (variável) x.
- y = &x; // O ponteiro y está recebendo o endereço da variável x.
- z = *y; /* Lembre-se que (*y) está acessando o valor do endereço que está armazenado nela(ponteiro).
- e posteriomente atribuindo esse valor ao inteiro Z. */
- printf("%d", z); // Imprime o valor 5 que inicialmente estava em x.
- /*int var; // Endereço de var é 1000.
- var = 5; // Endereço 1000: [5];
- receive_value(&var); // Chama a função receive car e envia o endereço 1000
- printf("%d\n", var); */
- getch();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement