Recuperação

Recuperação

by Cristina Gomes Fernandes -
Number of replies: 5
Os alunos que ficaram de Recuperação devem resolver pelo menos 21 dos problemas da lista disponível na página da disciplina, até dia 30 de julho (segunda), para serem aprovados na disciplina.

http://www.ime.usp.br/~cris/desafios/tarefas.html

Caso você tenha alguma dúvida, entre em contato com o Carlinhos ou comigo.

Bom trabalho...

Cris
In reply to Cristina Gomes Fernandes

Re: Recuperação

by Fernando Fernandes Chaves -
A todos,

Não sei mais o que fazer com o Dog and Gopher. Estou tentando passar esse problema desde o dia em que ele foi dado em sala, mas não sei o que está errado. Já tentei de tudo. Será que alguém consegue quebrar meu código? Ou, pelo menos, enxergar alguma possível fonte de erro?

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

long long int dist(long long int x, long long int y){   
    return (x*x)+(y*y);
}

int main(void){

    int holes, gopher;
    double dxd, dyd, dxg, dyg, dxh, dyh;
    long long int xd, yd, xg, yg, xh, yh, distg, distd;
    char lixo[1000];
   
    while(scanf("%d ", &holes)!=EOF){
   
        scanf("%lf %lf %lf %lf\n", &dxg, &dyg, &dxd, &dyd);
        gopher=0;
        xg=(long long int)(dxg*1000);
        yg=(long long int)(dyg*1000);
        xd=(long long int)(dxd*1000);
        yd=(long long int)(dyd*1000);
       
        while(holes>0&&!gopher){
            scanf("%lf %lf\n", &dxh, &dyh);
            xh=(long long int)(dxh*1000);
            yh=(long long int)(dyh*1000);
            distd=dist(xd-xh, yd-yh);
            distg=dist(xg-xh, yg-yh);
            if(distd>=4*distg)
                gopher=1;
            holes--;
        }
       
        while(holes>0){
            fgets(lixo, 900, stdin);
            holes--;
        }
       
        if(gopher)
            printf("The gopher can escape through the hole at (%.3lf,%.3lf).\n", dxh, dyh);
        else
            printf("The gopher cannot escape.\n");
   
    }

    return 0;
}
In reply to Fernando Fernandes Chaves

Re: Recuperação

by Nilo Cesar Teixeira -
Pq vc converteu pra long long int ? Não precisa.
Altera a sua função de distância para receber e retornar doubles.
E trabalha direto com os dxX nas chamadas de dist.
A sua verificacao com Dd >= 4 * Dg está igual ao meu q passou.

E vc pode dar uma arrumada nessa leitura de lixo aí, para ler todos os buracos primeiro e depois tentar um a um.

Abs,
Nilo
In reply to Nilo Cesar Teixeira

Re: Recuperação

by Fernando Fernandes Chaves -
Nilo,

MUITO OBRIGADO!

O long long era justamente porque eu já havia "tentado de tudo"... smile

Daí eu fui direto na leitura do lixo, que eu também suspeitava ser o problema já que foi a única coisa que eu não havia mudado desde o início.

E passei!

Obrigado pela ajuda!

Abraço!