Recuperação

Recuperação

por Cristina Gomes Fernandes -
Número de respostas: 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
Em resposta à Cristina Gomes Fernandes

Re: Recuperação

por 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;
}
Em resposta à Fernando Fernandes Chaves

Re: Recuperação

por 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
Em resposta à Nilo Cesar Teixeira

Re: Recuperação

por 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!