Jvsierra

Chamadas das funções

Aug 16th, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.93 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <conio.h>
  4. #include <math.h>
  5.  
  6. #define TFL 20
  7. #define TFC 20
  8. #define FREQ_DO 261
  9. #define FREQ_RE 293
  10. #define FREQ_MI 329
  11. #define FREQ_FA 349
  12. #define FREQ_SOL 392
  13. #define FREQ_LA 440
  14. #define FREQ_SI 493
  15. #define TEMPO 1000
  16.  
  17. int menu(void);
  18. int menuPiano(void);
  19. int decToBin(int dec);
  20. int binToDec(int bin);
  21. int numPerf(int n);
  22. int difHora(int h1, int m1, int s1, int h2, int m2, int s2);
  23. void desenha(int x1, int y1, int x2, int y2);
  24. int fatorial(int n);
  25. void piano(void);
  26.  
  27. int main(void)
  28. {
  29.     int op, x1, y1, x2, y2, n, h1, m1, s1, h2, m2, s2;
  30.    
  31.     op = menu();
  32.    
  33.     while(op != 8)
  34.     {
  35.         switch(op)
  36.         {
  37.             case 1:
  38.                 printf("Digite o numero em decimal:\n");
  39.                 scanf("%d", &n);
  40.                
  41.                 printf("%d = %d em binario\n", n, decToBin(n));
  42.             break;
  43.             case 2:
  44.                 printf("Digite o numero em binario:\n");
  45.                 scanf("%d", &n);
  46.                
  47.                 printf("%d = %d em decimal\n", n, binToDec(n));
  48.             break;
  49.             case 3:
  50.                 printf("Digite o numero:\n");
  51.                 scanf("%d", &n);
  52.                
  53.                 if(numPerf(n) == 1)
  54.                     printf("O numero e perfeito\n");
  55.                 else
  56.                     printf("O numero nao e perfeito\n");
  57.             break;
  58.             case 4:
  59.                 printf("Digite a primeira hora:\n");
  60.                 scanf("%d %d %d", &h1, &m1, &s1);
  61.                
  62.                 printf("Digite a segunda hora:\n");
  63.                 scanf("%d %d %d", &h2, &m2, &s2);
  64.                
  65.                 printf("Diferenca = %d\n", difHora(h1, m1, s1, h2, m2, s2));
  66.             break;
  67.             case 5:
  68.                 do
  69.                 {
  70.                     printf("Digite a linha inicial e a coluna inicial:\n");
  71.                     scanf("%d %d", &x1, &y1);
  72.                 }while(x1 < 1 || x1 > TFL || y1 < 1 || y1 > TFC);
  73.                
  74.                 do
  75.                 {
  76.                     printf("Digite a linha final e a coluna final:\n");
  77.                     scanf("%d %d", &x2, &y2);
  78.                 }while(x2 < 1 || x2 > TFL || y2 < 1 || y2 > TFC);
  79.                
  80.                 desenha(x1, y1, x2, y2);
  81.             break;
  82.             case 6:
  83.                 printf("Digite o numero:\n");
  84.                 scanf("%d", &n);
  85.                
  86.                 printf("Fatorial de %d = %d\n", n, fatorial(n));
  87.             break;
  88.             case 7:
  89.                 piano();
  90.             break;
  91.             default:
  92.                 printf("Opcao invalida\n");
  93.         }
  94.         op = menu();
  95.     }
  96.    
  97.     getch();
  98.     return 0;
  99. }
  100.  
  101. int menu(void)
  102. {
  103.     int i;
  104.    
  105.     printf("1 - Converter decimal para binario\n");
  106.     printf("2 - Converter binario para decimal\n");
  107.     printf("3 - Descobrir se um numero e perfeito\n");
  108.     printf("4 - Calcular a diferenca entre duas horas\n");
  109.     printf("5 - Desenhar uma moldura na tela\n");
  110.     printf("6 - Calcular fatorial\n");
  111.     printf("7 - Usar piano\n");
  112.     printf("8 - Sair\n");
  113.     scanf("%d", &i);
  114.    
  115.     return i;
  116. }
  117.  
  118. int menuPiano(void)
  119. {
  120.     int i;
  121.    
  122.     printf("a - do\n");
  123.     printf("s - re\n");
  124.     printf("d - mi\n");
  125.     printf("f - fa\n");
  126.     printf("g - sol\n");
  127.     printf("h - la\n");
  128.     printf("j - si\n");
  129.     i = getch();
  130.    
  131.     return i;
  132. }
  133.  
  134. int decToBin(int dec)
  135. {
  136.     int ret = 0, cont = 0;
  137.    
  138.     while(dec >= 1)
  139.     {
  140.         if(dec % 2 == 1)
  141.             ret += pow(10, cont);
  142.            
  143.         cont++;
  144.         dec /= 2;
  145.     }
  146.    
  147.     return ret;
  148. }
  149.  
  150. int binToDec(int bin)
  151. {
  152.     int ret = 0, cont = 0;
  153.    
  154.     while(bin >= 1)
  155.     {
  156.         if(bin % 10 == 1)
  157.             ret += pow(2, cont);
  158.            
  159.         cont++;
  160.         bin /= 10;
  161.     }
  162.    
  163.     return ret;
  164. }
  165.  
  166. int numPerf(int n)
  167. {
  168.     int ret, i, soma = 0;
  169.    
  170.     for(i = 1; i < n; i++)
  171.         if(n % i == 0)
  172.             soma += i;
  173.            
  174.     if(soma == n)
  175.         ret = 1;
  176.     else
  177.         ret = 0;
  178.        
  179.     return ret;
  180. }
  181.  
  182. int difHora(int h1, int m1, int s1, int h2, int m2, int s2)
  183. {
  184.     //????
  185.    
  186.     return 0;
  187. }
  188.  
  189. void desenha(int x1, int y1, int x2, int y2)
  190. {
  191.     int l, c, mat[TFL][TFC];
  192.    
  193.     for(l = 0; l < TFL; l++)
  194.         for(c = 0; c < TFC; c++)
  195.             mat[l][c] = 0;
  196.    
  197.     for(c = y1 - 1; c < y2; c++)
  198.         mat[x1 - 1][c] = 1;
  199.        
  200.     for(l = x1; l < x2 - 1; l++)  
  201.     {
  202.         mat[l][y1 - 1] = 1;
  203.         mat[l][y2 - 1] = 1;
  204.     }
  205.    
  206.     for(c = y1 - 1; c < y2; c++)
  207.         mat[x2 - 1][c] = 1;
  208.        
  209.     for(l = x1 - 1; l < x2; l++)
  210.     {
  211.         for(c = y1 - 1; c < y2; c++)
  212.         {
  213.             if(mat[l][c] == 1)
  214.                 printf("|");
  215.             else
  216.                 printf(" ");
  217.         }
  218.    
  219.         printf("\n");  
  220.     }  
  221.    
  222.     printf("\n\n\n");
  223. }
  224.  
  225. int fatorial(int n)
  226. {
  227.     int fat = 1, i;
  228.    
  229.     for(i = n; i >= 1; i--)
  230.         fat *= i;
  231.        
  232.     return fat;
  233. }
  234.  
  235. void piano(void)
  236. {
  237.     int op;
  238.    
  239.     op = menuPiano();
  240.    
  241.     while(op != 27)
  242.     {
  243.         switch(op)
  244.         {
  245.             case 97:
  246.                 Beep(FREQ_DO, TEMPO);
  247.             break;
  248.             case 115:
  249.                 Beep(FREQ_RE, TEMPO);
  250.             break;
  251.             case 100:
  252.                 Beep(FREQ_MI, TEMPO);
  253.             break;
  254.             case 102:
  255.                 Beep(FREQ_FA, TEMPO);
  256.             break;
  257.             case 103:
  258.                 Beep(FREQ_SOL, TEMPO);
  259.             break;
  260.             case 104:
  261.                 Beep(FREQ_LA, TEMPO);
  262.             break;
  263.             case 106:
  264.                 Beep(FREQ_SI, TEMPO);
  265.             break;
  266.             default:
  267.                 printf("Opcao invalida\n");
  268.         }
  269.        
  270.         op = menuPiano();
  271.     }
  272. }
Advertisement
Add Comment
Please, Sign In to add comment