Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- #include <conio.h>
- #include <math.h>
- #define TFL 20
- #define TFC 20
- #define FREQ_DO 261
- #define FREQ_RE 293
- #define FREQ_MI 329
- #define FREQ_FA 349
- #define FREQ_SOL 392
- #define FREQ_LA 440
- #define FREQ_SI 493
- #define TEMPO 1000
- int menu(void);
- int menuPiano(void);
- int decToBin(int dec);
- int binToDec(int bin);
- int numPerf(int n);
- int difHora(int h1, int m1, int s1, int h2, int m2, int s2);
- void desenha(int x1, int y1, int x2, int y2);
- int fatorial(int n);
- void piano(void);
- int main(void)
- {
- int op, x1, y1, x2, y2, n, h1, m1, s1, h2, m2, s2;
- op = menu();
- while(op != 8)
- {
- switch(op)
- {
- case 1:
- printf("Digite o numero em decimal:\n");
- scanf("%d", &n);
- printf("%d = %d em binario\n", n, decToBin(n));
- break;
- case 2:
- printf("Digite o numero em binario:\n");
- scanf("%d", &n);
- printf("%d = %d em decimal\n", n, binToDec(n));
- break;
- case 3:
- printf("Digite o numero:\n");
- scanf("%d", &n);
- if(numPerf(n) == 1)
- printf("O numero e perfeito\n");
- else
- printf("O numero nao e perfeito\n");
- break;
- case 4:
- printf("Digite a primeira hora:\n");
- scanf("%d %d %d", &h1, &m1, &s1);
- printf("Digite a segunda hora:\n");
- scanf("%d %d %d", &h2, &m2, &s2);
- printf("Diferenca = %d\n", difHora(h1, m1, s1, h2, m2, s2));
- break;
- case 5:
- do
- {
- printf("Digite a linha inicial e a coluna inicial:\n");
- scanf("%d %d", &x1, &y1);
- }while(x1 < 1 || x1 > TFL || y1 < 1 || y1 > TFC);
- do
- {
- printf("Digite a linha final e a coluna final:\n");
- scanf("%d %d", &x2, &y2);
- }while(x2 < 1 || x2 > TFL || y2 < 1 || y2 > TFC);
- desenha(x1, y1, x2, y2);
- break;
- case 6:
- printf("Digite o numero:\n");
- scanf("%d", &n);
- printf("Fatorial de %d = %d\n", n, fatorial(n));
- break;
- case 7:
- piano();
- break;
- default:
- printf("Opcao invalida\n");
- }
- op = menu();
- }
- getch();
- return 0;
- }
- int menu(void)
- {
- int i;
- printf("1 - Converter decimal para binario\n");
- printf("2 - Converter binario para decimal\n");
- printf("3 - Descobrir se um numero e perfeito\n");
- printf("4 - Calcular a diferenca entre duas horas\n");
- printf("5 - Desenhar uma moldura na tela\n");
- printf("6 - Calcular fatorial\n");
- printf("7 - Usar piano\n");
- printf("8 - Sair\n");
- scanf("%d", &i);
- return i;
- }
- int menuPiano(void)
- {
- int i;
- printf("a - do\n");
- printf("s - re\n");
- printf("d - mi\n");
- printf("f - fa\n");
- printf("g - sol\n");
- printf("h - la\n");
- printf("j - si\n");
- i = getch();
- return i;
- }
- int decToBin(int dec)
- {
- int ret = 0, cont = 0;
- while(dec >= 1)
- {
- if(dec % 2 == 1)
- ret += pow(10, cont);
- cont++;
- dec /= 2;
- }
- return ret;
- }
- int binToDec(int bin)
- {
- int ret = 0, cont = 0;
- while(bin >= 1)
- {
- if(bin % 10 == 1)
- ret += pow(2, cont);
- cont++;
- bin /= 10;
- }
- return ret;
- }
- int numPerf(int n)
- {
- int ret, i, soma = 0;
- for(i = 1; i < n; i++)
- if(n % i == 0)
- soma += i;
- if(soma == n)
- ret = 1;
- else
- ret = 0;
- return ret;
- }
- int difHora(int h1, int m1, int s1, int h2, int m2, int s2)
- {
- //????
- return 0;
- }
- void desenha(int x1, int y1, int x2, int y2)
- {
- int l, c, mat[TFL][TFC];
- for(l = 0; l < TFL; l++)
- for(c = 0; c < TFC; c++)
- mat[l][c] = 0;
- for(c = y1 - 1; c < y2; c++)
- mat[x1 - 1][c] = 1;
- for(l = x1; l < x2 - 1; l++)
- {
- mat[l][y1 - 1] = 1;
- mat[l][y2 - 1] = 1;
- }
- for(c = y1 - 1; c < y2; c++)
- mat[x2 - 1][c] = 1;
- for(l = x1 - 1; l < x2; l++)
- {
- for(c = y1 - 1; c < y2; c++)
- {
- if(mat[l][c] == 1)
- printf("|");
- else
- printf(" ");
- }
- printf("\n");
- }
- printf("\n\n\n");
- }
- int fatorial(int n)
- {
- int fat = 1, i;
- for(i = n; i >= 1; i--)
- fat *= i;
- return fat;
- }
- void piano(void)
- {
- int op;
- op = menuPiano();
- while(op != 27)
- {
- switch(op)
- {
- case 97:
- Beep(FREQ_DO, TEMPO);
- break;
- case 115:
- Beep(FREQ_RE, TEMPO);
- break;
- case 100:
- Beep(FREQ_MI, TEMPO);
- break;
- case 102:
- Beep(FREQ_FA, TEMPO);
- break;
- case 103:
- Beep(FREQ_SOL, TEMPO);
- break;
- case 104:
- Beep(FREQ_LA, TEMPO);
- break;
- case 106:
- Beep(FREQ_SI, TEMPO);
- break;
- default:
- printf("Opcao invalida\n");
- }
- op = menuPiano();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment