Pascal działania na tablicach - pomocy


(Mat1as) #1

witam

Muszę rozwiązać zadanie :

Znajdź sumę tych elementów pamiętanych w tablicy, których wartości są większe od -x i jednocześnie są mniejsze od +x. Zastosuj pętlę for. (Funkcja o argumentach: T-tablica, X-zadana wartość logiczna).

Coś pokombinowałem, ale nie działa - proszę o sprawdzenie przez kogoś kto ma o tym pojęcie bo ja już się pogubiłem i nie wiem co mam dalej robić. Pod spodem wklejam ten program.

czekam na pomoc z góry dzięki mat1as

{program TabDemo;

uses crt;


type Tab = array [0..14] of Integer;



procedure PokTab(var T:Tab; P:Boolean);



 var I:Integer;

 begin


  for I:=Low(T)to High(T) do

  if P then Write (T[I]:8)

  else writeln(T[I]:4);

  writeln;

  end;



  function suma(var T:Tab):Integer;

    var I,x,licznik:integer;


    begin

    licznik:=0;

    for I:=Low(T) to High(T) do

    if(T[I]-x) then licznik:=licznik+T[I];

    suma:=licznik;









 const T:Tab=(-3,2,-7,5,7,-4,-8,2,1,0,9,-11,-13,-6,5);


 var wynik:integer;




 begin

 clrscr;

 Poktab(T);

 wynik:=suma(T);

 write('suma element˘w ktore sa wieksze od -x i jednoczesnie mniejsze od x:',wynik);

 readln;


 end.



}

(rozwalkompa) #2

Coś ten kod zawiły i nie rozumiem, co robisz w niektórych miejscach :slight_smile:

Ja by to zrobił jakoś tak:

VAR

T:ARRAY[0..14] of integer;

i,suma,x:integer;

BEGIN

for i:=0 to 13 do read(T[i]);

readln(T[14]); {wpisujesz tablicę, kończąc linijkę ENTERem}

readln(x); {czytasz x}

suma:=0;

for i:=0 to 14 do

 begin

 if (T[i]>-x) and (T[i]
 end;

writeln(suma);

readln;

END.

jak nie o to chodzi, to napisz


(Gina Gina) #3

Twój własny kod, nieco zmodyfikowany, można dodać jeszcze wprowadzanie danych

i przedziału jak kolega rozwalkompa :wink:

Kompilacja dla TP7 w okienku poniżej lub bardziej czytelnie: http://wklej.org/id/4ceb6a8941

program TabDemo;

uses crt;

type 

  Tab = array [0..14] of Integer;


procedure PokTab(var T:Tab; P:Boolean);

var 

  I:Integer;

begin

  for I:=Low(T)to High(T) do

    if P then 

      Write (T[I]:8)

    else 

      writeln(T[I]:4);

  writeln;

end;


function suma(var T:Tab; x: integer):Integer; (* uzupełniono!*)

var 

  I,licznik:integer;

begin

  licznik:=0;

  for I:=Low(T) to High(T) do

    if(T[I]-x) then 

      licznik:=licznik+T[I];

  suma:=licznik;

end; (* uzupełniono! *)


const 

  T:Tab=(-3,2,-7,5,7,-4,-8,2,1,0,9,-11,-13,-6,5);

var 

  wynik,Xp:integer;


begin

  clrscr;

  Xp:=5;

  Poktab(T,true); (* uzupełniono!, ew. false *)

  wynik:=suma(T,Xp); (* uzupełniono!*)

  write('Suma element˘w ktore sa wieksze od ',

         -Xp,' i jednoczesnie mniejsze od ',Xp,': ',wynik); (* zmodyfikowano! s*)

  readln;

end.