Výpočet vektorov ponorky v pascale

Delphi & Pascal (česká wiki)
Přejít na: navigace, hledání
Kategória: KMP (Klub mladých programátorov)

Autor: Ján Benkovič
web: www.tbteacher.host.sk

Program: Ponorka.pas
Súbor exe: Ponorka.exe

Ponorka sa pohybuje pod hladinou stojatej vody rýchlosťou v m/s. Jej čelná plocha S=5m^2 a tvarový súčiniteľ c=0.17.Pri pohybe musí ponorka prekonávať odpor vody Fv=Ro*v^2*c*S/2 newtonov, kde Ro=1000kg/m^3 je hustota vody. Naprogramovaná funkcia Fv(v) vyjadruje závislosť sily Fv od rýchlosti v (podprogram typu FUNCTION).

Zostavte program, ktorý
  • vytvorí vektor rýchlosti Vektor_v=(v[1],v[2],...,v[11]), kde v[i]=1+0.5(i-1), i=1,2,...,11 ;
  • k vektoru rýchlosti vypočíta zodpovedajúci vektor síl Vektor_F=(F[1],F[2],...,F[11])( F[i]=Fv(v[i]), použite pripravený podprogram) a vektor výkonov Vektor_P=(P[1],P[2],...,P[11]), kde P[i]=F[i].v[i].

Všetky tri vektory treba vypísať. V programe použite aspoň jeden podprogram typu PROCEDURE.
{ PONORKA.PAS                            Copyright (c) Jan Benkovic }
{ Ponorka sa pohybuje pod hladinou stojatej vody rychlostou         }
{ v m/s. Jej celna plocha S=5m^2 a tvarovy sucinitel c=0.17 .       }
{ Pri pohybe musi ponorka prekonavat odpor vody Fv=Ro*v^2*c*S/2     }
{ newtonov, kde Ro=1000kg/m^3 je hustota vody.                      }
{ Naprogramujte funkciu Fv(v) vujadrujucu zavislost sily Fv         }
{ od rychlosti v (podprogram typu FUNCTION).                        }
{   Zostavte program, ktory                                         }
{   a/ vytvori vektor rychlosti Vektor_v=(v[1],v[2],...,v[11]),     }
{      kde v[i]=1+0.5(i-1), i=1,2,...,11 ;                          }
{   b/ k vektoru rychlosti vypocita zodpovedajuci vektor sil        }
{      Vektor_F=(F[1],F[2],...,F[11])( F[i]=Fv(v[i]), pouzite       }
{      pripraveny podprogram)                                       }
{      a vektor vykonov Vektor_P=(P[1],P[2],...,P[11]), kde         }
{      P[i]=F[i].v[i].                                              }
{ Vsetky tri vektory treba vypisat. V programe pouzite aspon        }
{ jeden podprogram typu PROCEDURE.                                  }
{ ***************************************************************** }
{                                                                   }
{ Datum:26.11.2003                             http://www.trsek.com }
 
program Ponorka;
type vektor = array [1..11] of real;
var i,n : integer;
    v,F,P : vektor;
 
function Fv(vp:real):real;  {funkcia, ktora pocita odpor vody}
const S=5;
      Ro=1000;
      c=0.17;
begin
   Fv:=Ro*sqr(vp)/2*c*S;
end;
                                 {podprogram na vypis vektora}
procedure Vypis(m:integer;U:vektor);
var j:integer;
begin
  write('(');
  for j:= 1 to m do
     begin
        write(U[j]:3:1);
        if (j=m)then write(')')
                else write(', ');
     end;
end;
                            {podprogram na vytvorenie vektora}
procedure Vytvor(m:integer;var U:vektor);
var j:integer;
begin
  for j:=1 to m do
    U[j]:=1+0.5*(j-1);
end;
 
begin                           { hlavny program }
  writeln;writeln;
  n:=11;
  Vytvor(n,v);                  {vytvorenie vektora rychlosti}
  for i:=1 to n do
    begin
      F[i]:=Fv(v[i]);             {vypocet prvkov vektora sil}
                         {vypocet prvkov vektora vykonov v kW}
      P[i]:=F[i]*v[i]/1000;
    end;
                                {vypisy jednotlivych vektorov}
  write('Vektor_v='); Vypis(n,v); writeln('m/s');
  writeln;
  write('Vektor_F='); Vypis(n,F); writeln('N');
  writeln;
  write('Vektor_P='); Vypis(n,P); writeln('kW');
  readln;
end.