Jump to content

Recommended Posts

Posted (edited)

Boa tarde,

Estou a fazer um programa que consiste em determinar ao fim de quanto tempo um determinado tanque deixa de escoar agua, tendo este mesmo tanque uma abertura.

A minha duvida está na parte dos calculos, ou seja eu tenho de usar uma formula até à abertura do tanque e outra para depois. esta formula tem potencias e tenho de chamar um procedimento POTENCIA para dentro de um outro.

Não estou a conseguir formular o procedimento potencia e pô-lo dentro de outro com a formula de calculo para H1 ou H2, sendo H1 até a abertura do tanque e H2 depois dessa abertura.

Procedure Q_1 (Var Q:Matriz3; Lc:real; H1,H2:Matriz; i,n:integer);
begin

     {VolumedaFatia:= AreaTanque*(H2/40)}

    {H1[0]:=H1[0];H2[0]:=H2[0]

    for i:=1 to 40 do                                                                             b é o expoente
                                                                                                  a é a base
    if H1[i-1]>=0 then  caudal1(H1[i-1],H2[i-2],Lc,Q[i])


                     else  cauldal2(H2[i-1],Lc,Q[i])

                                                                                           H1[]:=H1[i-1]-H1[i]
END;
Procedure Caudal1 (var Q:matrizCaudal;H1:MatrizAlturas1;H2:MatrizAlturas2)

 Q1:=(2/3)*u*Lc*sqrt(2g)*((H2^(3/2))-(H1^(3/2)))

 begin
  P1:=H1;
  P2:=H2;
  potencia(3/2,P1,P2)
  Q1:=(2/3)*u*Lc*sqrt(2g)*((H2^(3/2))-(H1^(3/2)))
 end;

Procedure Caudal2 (H2:MatrizAlturas2;3/2:real)
 Q2:= 1.83*Lc*H2^(3/2)

 begin
  P2:= H2^(3/2);
  potencia(3/2,P2)
  Q2:=1.83*Lc*P2
 end;

Procedure Tempos (Var TempoParcial,TempoTotal:Matriz1; Q:matriz3)

            TempoParcial[i]:=volume/Q[i]                                                                    

            for i:=1 to 40 do                                                              
            TempoTotal[i]:=TempoTotal[i-1]+TempoParcial[i];

Procedure Potencia(b:real;var a:real);                                                      
    b:=3/2;
    a:=H1                                                                                      
    begin                                                                                      
       if a>0 then a:=exp(b*ln(a))                                                            
       else a:=0        

EStou mesmo enrascada, e a desesperar com isto

Agradecia uma ajudinha

Obrigado

Rita 🙂

Edited by thoga31
GeSHi
Posted

Bem-vinda ao P@P.

As dúvidas devem ser colocadas no quadro correspondente à dúvida ou à linguagem, o quadro "Sugestões, Críticas ou Dúvidas relativas ao P@P" é, como o nome indica, para sugestões, críticas e dúvidas acerca do fórum em si.

Explica melhor os cálculos que tens de realizar e onde estás a ter dúvidas. É em implementação ou em é em termos matemáticos?

Atenção: o teu código está todo dentro de comentários. É suposto?

Cumprimentos.

Knowledge is free!

Posted

Boa tarde,

sou novata nisto e daí ter postado em varios sitios diferentes, as minhas desculpas.

os calculos estao como comentarios porque como essa parte nao funciona era para conseguir rodar o programa à mesma.

O programa consiste em determinar ao fim de quanto tempo um determinado tanque deixa de escoar agua e determinar tambem por metode iterativo o momento em que ocorre a trnsiçao entre o primeiro momento H1 (sendo este, até a agua chegar a abertura do tanque) e H2(estando a agua abaixo do limite da abertura)..

as formulas para estes dois momentos estão nos procedimentos Caudal1 e caudal2, depois de calculados serao guardados no array Q.

tenho de ter em atenção que o decrescimo da agua é constante.

como as formulas de calculo tem potencias foi pedido um procedimento POTENCIA para ser chamado dentro do procedimento Caudal1 e caudal 2.

caso nao esteja muito explicita a minha explicação envio em anexo os requisitos do programa.

A entidade gestora de uma barragem pretende um programa de cálculo automático que lhe

permita controlar os tempos de abertura da comporta garantindo que o nível de água na barragem

não ultrapassa a cota de segurança previamente estabelecida.

Como modelo exploratório

considera-se a utilização de

um reservatório prismático,

rectangular vertical, com uma

comporta na parede lateral,

conforme indicado na figura,

em relação ao qual se

pretende obter o tempo que o

nível da água demora a atingir

o bordo inferior da comporta.

2. OBJECTIVO

Desenvolver uma aplicação

em Pascal que permita:

1. Determinar o tempo ao fim do qual o tanque deixa de escoar água;

2. Determinar, por método iterativo, o momento em que ocorre a transição entre o primeiro e

o segundo tipo de escoamento, concretamente entre a situação 1 (H1>0) e a situação 2

(H1=0);

3. Escrever para ficheiro de texto, a informação necessária para, recorrendo ao Excel,

elaborar os gráficos que traduzem a visualização gráfica dos caudais em função do tempo;

3. PRESSUPOSTOS

Na elaboração do programa serão considerados os seguintes pressupostos:

1. Variáveis independentes:

• Área do tanque;

• Altura de água acima do Bordo Superior da comporta;

• Altura de água acima do Bordo Inferior da comporta

• Largura da comporta

2. A largura da comporta não pode ser superior a 2 m nem inferior a 5 cm

3. O decréscimo de H2O deve ser constante e igual a 1/40 de H2

4. Algoritmos associados ao escoamento

• Situação 1 (H1>0)

2

3

μ. .

2. g .

2/

1/

• Situação 2 (H1≤0)

1,83 . .

2/

Em que:

• Q – Caudal (m3/s)

• μ – Coeficiente de vazão (±=0,6)

• Lc – Largura da comporta (m)

• G – Aceleração da gravidade (m/s2)

• H1 – Altura de água acima do bordo superior da comporta

• H2 – Altura de água acima do bordo superior da comporta

Os algoritmos apresentados são expressões simplificadas e apenas são aplicados para água.

4. METODOLOGIA

Cada grupo deverá analisar a metodologia adequada à resolução do problema. Sugere-se no

entanto especial atenção para os seguintes aspetos:

4.1 Análise do problema

Identificando:

• Objetivo

• Elementos de Input

• Elementos de Output

• Algoritmos

4.2 Pseudocódigo

Descrição de forma hierarquizada das etapas a realizar tendo em vista a tradução do algoritmo.

4.3 Utilização de variáveis de fácil identificação

É obrigatória a utilização das variáveis identificadas em seguida1:

• H1 – Altura de água acima do bordo superior da comporta

• H2 – Altura de água acima do bordo superior da comporta

• Lc – Largura da comporta

• AreaTanque – Área do Tanque

• Delta_H2 – Decréscimo constante de H20

• Q – Caudal

• TempoParcial – Tempo parcial

• TempoTotal – Tempo total

Algumas das variáveis poderão sofrer ajustamentos decorrentes da utilização de “arrays” uni ou

bidimensionais.

4.4 Escrita legível do programa

Para permitir que facilmente se identifiquem as tarefas bem como as estruturas utilizadas e

respetiva abrangência.

Embora a indentação tenha um papel meramente estético, recomenda-se a sua utilização por

forma a permitir uma leitura do código fonte muito mais fácil (“read-friendly”).

4.5 Utilização de comentários

Recomenda-se a utilização de comentários ao longo do programa, nomeadamente no que

respeita à identificação das variáveis e procedimentos.

4.6 Utilização de procedimentos

Em especial para situações de tarefas individualizadas, sendo de utilização obrigatória os

seguintes:

• Écran de Apresentação (Moldura)

• “Password” de acesso ao Programa (Password)

• Registo e validação de inputs através do teclado (LerDadosTeclado)

• Ler dados a partir de ficheiro (LerDadosFicheiro)

• Visualização de resultados no ecrã (ResultadosEcran)

• Escrita de resultados em Ficheiro (EscreverResultadosFicheiro)

• Escrita de dados para gráfico (EscreverDadosFicheiroParaGrafico)

Obrigado pel'atenção aguardo atenciosamente uma resposta

Rita

Posted

Bom, eu não vou ler o enunciado, é extremamente extenso, além de que também tenho vida.

Posto isto, volto a perguntar: qual é a tua dúvida em específico? É em código ou é na implementação em Pascal? Em qualquer dos casos, indica os pontos onde estás a sentir dificuldades.

Knowledge is free!

Posted

A minha grande dúvida é no código.

é em por os resultados que me dão depois para os arrays respectivos, em chamar o procedure Potencia para dentro dos procedimentos caudal1 e caudal2 e dado o resultado envia los para o array Q_1.

Obrigado pel'atenção

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.