Calculadora de canos e cisternas grátis online
Dois canos que enchem um tanque em 4 e 6 horas o enchem juntos em 2,4 horas. Informe quanto tempo cada entrada leva para encher o tanque e cada ralo para esvaziá-lo e receba a vazão líquida, o tempo necessário e o status. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Tubos de enchimento (horas cada um, sozinho)
- 4, 6
- Ritmo líquido (fração do tanque por hora)
- 0,4166666667
- Horas para encher
- 2,4
- Status
- Enchendo
Taxa líquida de enchimento para tanques com canos de entrada e saídas de drenagem, devolvendo as horas para encher ou esvaziar. Grátis, determinística e privada no seu navegador.
Como funcionam os problemas de torneiras e reservatórios
Esses problemas clássicos tratam o tanque cheio como uma unidade de trabalho. Um cano que o encheria sozinho em H horas acrescenta 1/H do tanque a cada hora, e um ralo que o esvaziaria em H horas retira 1/H a cada hora. A soma de todas essas vazões com sinal dá a vazão líquida. Com entradas de 4 e 6 horas, a vazão líquida é de cerca de 0,4166666667 do tanque por hora, e um dividido por essa vazão dá 2,4 horas para encher. Uma vazão líquida negativa indica que o tanque está esvaziando, e a mesma divisão dá as horas até ele secar.
Como ler o resultado e a armadilha clássica
O status mostra de imediato se o tanque está enchendo, esvaziando ou parado, o que acontece quando entrada e saída se anulam. Só aparece o tempo que faz sentido: as horas para encher quando enche e as horas para esvaziar quando esvazia. A armadilha clássica é somar ou tirar a média dos tempos, por exemplo tratar 4 e 6 horas como 10 ou 5; somam-se as vazões, não os tempos. Informe todas as entradas e todos os ralos do problema e mantenha os tempos na mesma unidade.
Entradas e saídas
Um número isolado é aceite e envolvido como lista de um elemento por comodidade. Pelo menos um dos dois campos deve estar presente com pelo menos uma entrada; um pedido vazio é rejeitado no início. As mensagens de erro usam subcadeias estáveis em inglês para o arnês de testes.
As entradas são validadas antes de qualquer aritmética. As saídas numéricas usam arredondamento documentado para estabilidade entre execuções e canais.
Casos de uso
Trabalhos e exames
Verifique problemas quantitativos clássicos com respostas estáveis e reproduzíveis.
Automatização
Chame a mesma função pura a partir de scripts sem instalar folha de cálculo nem CAS.
Perguntas frequentes
É grátis?
Sim. O nível A corre por completo no seu navegador sem conta.
Os resultados são estáveis?
Sim. A matemática determinística e os exemplos dourados fixam o contrato.
Como um ralo entra na conta?
Como uma vazão negativa. Um ralo que esvaziaria o tanque cheio em H horas tira 1/H do tanque por hora, e entra com sinal de menos junto com as entradas para formar a vazão líquida.
O que significa o tanque estar parado?
Que o que entra e o que sai se compensam: a vazão líquida é praticamente zero e o nível não avança em nenhum sentido. Nesse caso não há tempo de encher nem de esvaziar para mostrar.
Por que somar as vazões e não as horas?
Porque cada cano contribui com uma fração do tanque por hora, e essas frações se somam. Somar ou tirar a média das horas, como tratar 4 e 6 como 10 ou 5, dá resposta errada; o certo é 2,4 horas.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/math/pipes-cisterns \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"fill_hours":[1],"empty_hours":[1]}'const res = await fetch("https://api.kit.forhosting.com/math/pipes-cisterns", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"fill_hours": [
1
],
"empty_hours": [
1
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/pipes-cisterns",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"fill_hours": [
1
],
"empty_hours": [
1
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/pipes-cisterns", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"fill_hours":[1],"empty_hours":[1]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"fill_hours":[1],"empty_hours":[1]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/pipes-cisterns", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"fill_hours": [
1
],
"empty_hours": [
1
]
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.pipes_cisterns",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Sem conta. A API parte de US$ 0,002.
Como o modelo funciona
Os problemas clássicos de canos e cisternas tratam o tanque cheio como uma unidade de trabalho. Cada cano de entrada que encheria sozinho o tanque em H horas contribui com uma taxa positiva de um sobre H frações de tanque por hora. Cada saída que esvaziaria o mesmo tanque cheio em H horas contribui com uma taxa negativa de um sobre H. A taxa líquida com sinal decide o resultado: positiva significa que o tanque está a encher, negativa que está a esvaziar, e uma taxa quase nula indica paragem sem progresso. Pode listar várias entradas em fill_hours e várias saídas em empty_hours; o resolvedor soma cada recíproco. Quando a taxa líquida é positiva, hours_to_fill é um dividido por essa taxa; quando é negativa, hours_to_empty é um sobre o valor absoluto. Esta aritmética pura é totalmente determinística e corre grátis no navegador com a mesma função pura do caminho API. As entradas são validadas antes de qualquer cálculo para que tipos incorretos e valores fora de intervalo se tornem erros invalid_input claros em vez de NaN silenciosos.
Entradas e saídas
Forneça fill_hours e empty_hours como matrizes de números positivos, ou omita um lado se só houver entradas ou só saídas. Em caso de sucesso a carga útil inclui sempre net_rate_per_hour, hours_to_fill, hours_to_empty e status para que os clientes liguem métricas de interface sem adivinhar nomes de campo. status é filling, emptying ou stalled. hours_to_fill é null quando o tanque não está a encher; hours_to_empty é null quando não está a esvaziar. A implementação é totalmente determinística e corre grátis no navegador com a mesma função pura do caminho API.
Casos limite e restrições
Reveja os exemplos dourados para os caminhos de sucesso canónicos e o caminho de erro para um tempo de enchimento não positivo. A implementação é totalmente determinística e corre grátis no navegador. Cada valor de horas deve ser um número finito estritamente maior que zero; zero, negativos ou não numéricos falham com invalid_input. Taxas opostas iguais devolvem status stalled com net_rate_per_hour zero e ambos os campos de horas em null, sem dividir por zero. Valores intermédios enormes que ultrapassem IEEE-754 tornam-se erro de fora de intervalo em vez de campos nulos.
Casos de integração
Demonstrações didáticas
Mostre exemplos resolvidos com fixtures dourados que coincidem com o widget grátis e a API.
Perguntas técnicas
Chama a rede?
Não. O motor parse mantém tudo no dispositivo no widget gratuito.
E se a entrada for inválida?
Recebe invalid_input com uma mensagem clara em inglês.
Quem é o autor desta capacidade?
abuela no atelier KIT da ForHosting.