aboutsummaryrefslogtreecommitdiff
path: root/doc/tests/fontes/formiga-yes.c
blob: 7640d75e80ddd4523b9901a9406d0623e93b4548 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
/* Copyright 2002 Maratona de Programacao do IME-USP -- cef@ime.usp.br (written by S.G.Tavares)
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

FILE *in, *out;

long mdc(long a, long b){
  long i, mdca=1;
  for(i=2; ((i<=a) && (i<=b)) ; i++)
			      if ((!(a%i)) && (!(b%i))) mdca = i;
  return mdca;
}


int main(){
  long x, y, i, j, k;
  char p1[8];
  double db1;
  int dh, dv;
  in = stdin;
  out = stdout;

  while(42){
    fscanf(in, "%ld%ld\n", &x, &y);
    if (!x || !y) break;
    fscanf(in, "%s\n", &p1[0]);
    if (p1[0]=='N') {
      dh = 0;
      dv = 0;
    }
    else if (p1[0]=='S') {
      dh = 1;
      dv = 1;
    }
    else if (p1[0]=='L') {
      dh = 1;
      dv = 0;
    }
    else {
      dh = 0;
      dv = 1;
    }
    for (i=x, j=y; ((!(i%2)) && (!(j%2))); i /= 2, j /= 2 );
    if (i%2) dh = !dh;
    if (j%2) dv = !dv;
    k = mdc(x, y);
    db1 = 100.0/(double)k;
    i = floor(100.0/(double)k);
    if (db1-(double)i > 0.5) i++;

    j = x/k + y/k -2;
    fprintf(out, "%3ld%%%10ld", i, j);
    if (dh){
      if (dv) fprintf(out, " Sul\n");
      else fprintf(out, " Leste\n");
    }
    else {
      if (dv) fprintf(out, " Oeste\n");
      else fprintf(out, " Norte\n");
    }
  }
                    
  return 0;
}