(* wczytuję wartości x *)
x=Flatten@Import["https://ribes.if.uj.edu.pl/mathematica/zadania/x.dat"]

(* 
Poniższa funkcja ,,dane'' wczytuje wartości funkcji o numerze podanym jako argument;
napisana jest w postaci ,,pamiętajacej'', tj. po pierszym użyciu nie będzie kolejny raz pobierała danych z internetu 
*)
dane[enum_?IntegerQ]:=dane[enum]=Flatten@Import["https://ribes.if.uj.edu.pl/mathematica/zadania/f/f_"<>ToString[enum]<>".dat"]

dane[3]//Timing (* czas zależy od szybkości połączenia internetowego *)

dane[3]//Timing (* za drugim razem czas powinien być równy zero, ponieważ funkcja zapamiętała (zapisała w pamięci) wcześniej wczytane dane *)

(* Wyświetlamy wczytane dane aby zorientować się co do stopnia trudności zadania *)
Manipulate[ListPlot[Transpose[{x,dane[k]}],Joined->True,InterpolationOrder->0,PlotRange->{{0,Pi},{-1,1}}],{k,1,20,1}](* jeden ze sposobów wizualizacji tego typu danych *)

trapezy[f_?ListQ,x_?ListQ]:=Sum[0.5*(f[[ii]]+f[[ii+1]])*(x[[ii+1]]-x[[ii]]),{ii,1,Length[x]-1}]
(* funkcja obliczająca całkę metodą trapezów *)

trapezy[{0,1},{0,1}] (* sprawdzenie *)

trapezy[dane[3],x]

(* Wizualizacja wyników z użyciem ,,wyskakujących'' po najechaniu myszą etykiet *)
ListPlot[
Table[
Tooltip[Transpose[{x,dane[k]}],"Całka = "<>ToString@trapezy[dane[k],x]],
{k,1,20,1}]
,Joined->True,InterpolationOrder->1,PlotRange->{{0,Pi},{-1,1}}]