Bem-vindo: Qua, 27 de Novembro 2024, 12:38 Pesquisa avançada
Rogergalvao (22-09-2013, 0:31) escreveu:Então o intuito do programa é achar o primeiro ponto onde o barco pode passar , para que ele passe a profundidade tem que ser >= C+0.1, não entendi como o seu programa acha a primeira distância em que o barco passa.
double K=0.0, X=-1.0;
int conta=0;
for(i=0; i<L; i++)
{
K = ((C+0.1) - P[i]) / (P[i+1] - P[i]);
printf("[%d]\t%f\n", conta, K);
if(K>=0 && K<=1)
{
if(X==-1.0)
{
X = i + K;
}
else if(conta < (X+W) && (X+conta) < L)
{
conta++;
}
else if(conta >= (X+W) && (X+conta) < L)
{
break;
}
else
{
X = -1.0;
conta = 0;
}
}
else
{
X = -1.0;
conta = 0;
}
}
printf("%.6f\n", X);
if(X==-1.0)
{
X = i + K;
}
else if(conta < (X+W) && (X+conta) < L)
{
conta++;
}
else if(conta >= (X+W) && (X+conta) < L)
{
break;
}
i-1: 0 <= K <= 1 → X = (i-1) + K
i: K<0 ou K>1 → X = -1.0
Rogergalvao (22-09-2013, 16:59) escreveu:Então Luis, entendi o seu raciocínio mas parece que não esta funcionando adequadamente, veja as seguintes execuções corretas:
Entrada 4 2 9 (L,W,C) Saída correta: 0.193617
47 39 9 (vetores profundidade)
Entrada: 17 1 25
47 49 3 38 23 13 31 6 46 20 42 44 48 19 50 22 Saída correta: 0.534043
Por exemplo para L=2,W=1,C=1 e profundidade = 3 , a saída correta seria 0.366667
[conta] K
Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes