Advertisement
Guest User

L7-Ex7

a guest
May 20th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.27 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. struct Fracao {
  4.     int numer, denom;
  5.     double result;
  6. };
  7.  
  8. int main() {
  9.     int n, i, j, k, cont = 0, menor = 0, aux1, aux2;
  10.     double calc = 0.0, aux = 0.0;
  11.     struct Fracao farey[200];
  12.    
  13.     scanf("%d", &n);
  14.  
  15.     if (n == 0) {
  16.         printf("0/1");
  17.     } else if (n == 1) {
  18.         printf("0/1\n1/1"); //resposta padrão
  19.     } else {
  20.         for (i = 1; i <= n; i++) {
  21.             for (j = 1; j <= n; j++) {
  22.                 calc = (i * 1.0) / j; // conversão p/ decimal
  23.                 if (calc < 1) {
  24.                     farey[cont].numer = i;
  25.                     farey[cont].denom = j;
  26.                     farey[cont].result = calc;
  27.                     //printf("%d/%d ", farey[cont].numer,
  28.                     //    farey[cont].denom);
  29.                     //printf("%f\n", farey[cont].result);
  30.                     cont++;
  31.                 }
  32.                
  33.             }
  34.         }
  35.         for (i = 0; i < cont; i++) {
  36.             for (j = i+1; j < cont;) {
  37.                 if (farey[j].result == farey[i].result) {
  38.                     for (k = j; k < cont; k++) {
  39.                         farey[k].numer = farey[k+1].numer;
  40.                         farey[k].denom = farey[k+1].denom;
  41.                         farey[k].result = farey[k+1].result;
  42.                     }
  43.                     cont--;
  44.                 } else {
  45.                     j++;    
  46.                 }
  47.             }
  48.         }
  49.         for (i = 0; i < cont; i++) {
  50.             for (j = 0; j < cont; j++) {
  51.                 if (farey[i].result < farey[j].result) {
  52.                     aux1 = farey[i].numer;
  53.                     aux2 = farey[i].denom;
  54.                     aux = farey[i].result;
  55.                    
  56.                     farey[i].numer = farey[j].numer;
  57.                     farey[i].denom = farey[j].denom;
  58.                     farey[i].result = farey[j].result;
  59.                    
  60.                     farey[j].numer = aux1;
  61.                     farey[j].denom = aux2;
  62.                     farey[j].result = aux;
  63.                 }
  64.             }  
  65.         }
  66.         printf("0/1\n");
  67.         for (i = 0; i < cont; i++) {
  68.             printf("%d/%d\n", farey[i].numer, farey[i].denom);
  69.         }
  70.         printf("1/1\n");
  71.     }
  72.     return 0;
  73. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement