Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rhyu

Vetores

Recommended Posts

To precisando de ajuda pra resolver um problema em C, é mais ou menos assim;

 

Suponha que eu tenha um barco e queira navegar através de um rio de largura L, e o meu barco tem largura "Lb" , para que ele navegue a profundidade do rio deve ser no minímo H+1,onde H é o calado do navio.

Eu recebo como entrada L-1 valores de profundidade do rio da margem esquerda para á direita, ou seja se o rio tem 5 metros de largura, eu recebo um vetor com 4 valores, os quais representam a profundidade do rio a cada 1 metro.

Como eu faço para descobrir o primeiro ponto a partir da margem esquerda em que o barco pode navegar?

A largura Lb e o calado H do barco são dados como entrada também.

Obs: para calcular a profundidade entre um metro e outro , tem uma fórmula que é dada.

 

A questão é que não estou conseguindo pensar em um modo efetivo para resolver.

user_online.gifreport.gif

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Enunciado completo pra ficar mais claro

 

Sabendo que a largura em metros de um rio navegável é dada por um valor inteiro L. Os técnicos em navegação fizeram um perfil do leito do rio medindo sua profundidade a cada metro, a partir da margem esquerda. Assim, por exemplo, no i-ésimo metro, a profundidade do rio é dada por um valor inteiro não negativo P(i), sendo que nas margens esquerda e direita as profundidades são P(0) e P(L), respectivamente, ambas com valor nulo (ou seja, P(0) = P(L) = 0).

As seguintes hipóteses são consideradas neste exercício:

O perfil do leito do rio não muda ao longo do trecho navegável, e
entre duas medidas consecutivas de profundidade P(i) e P(i+1), pode-se considerar que a profundidade varia linearmente entre estes dois valores. Assim, se K é um valor real no intervalo [0,1], o valor da profundidade no metro (i+K) considerado a partir da margem esquerda, será dado por P(i) + K*(P(i+1)-P(i)).
No seu dia a dia, os técnicos se deparam com o seguinte problema. Um navio de largura W e calado (profundidade máxima a partir da superfície) C pretende navegar pelo rio. Os técnicos precisam determinar se existe uma distância segura de navegação, a contar da margem esquerda, que permite que o navio navegue pelo rio. A resposta dada pelo técnicos ao capitão do navio é um valor real (double) X tal que:

X é igual a -1.000000 se o navio não pode navegar pelo rio (nota: supõe-se aqui que o calado do navio é o mesmo ao longo de toda a sua largura), e
X é o menor valor positivo (distância da margem esquerda) que o navio pode navegar com segurança. Isso ocorre se, no trecho que vai de [X, X+W] a profundidade do rio é sempre maior ou igual a C + 0.1.

Entrada: duas linhas com valores inteiros separados por um espaço em branco entre eles. Na primeira linha são dados L, no intervalo (fechado) [2, 50], W e C, no intervalo (fechado) [1, 25]. Na segunda linha, são dados L-1 valores correspondentes às profundidades a 1, 2, ..., L-1 metros da margem esquerda (lembre-se que as profundidades nas duas margens são nulas).

Saída: um valor double, impresso com seis casas decimais, correspondendo à posição X mais à esquerda na qual o navio pode navegar ou ao valor -1.000000, quando o calado do navio não permite que ele navegue pelo rio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.