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 uma palavra ?
Massacrante.
Nilo_CellBE@UNICAMP
Massacrante.
Nilo_CellBE@UNICAMP
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;
}
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;
}
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
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
Nilo,
MUITO OBRIGADO!
O long long era justamente porque eu já havia "tentado de tudo"...
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!
MUITO OBRIGADO!
O long long era justamente porque eu já havia "tentado de tudo"...

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!
D nada cara! Se deixar, certos exercícios podem consumir a gente...
Abs,
Nilo
Abs,
Nilo