function t=tokens_puste(l,sep)
  lpuste=''
  if part(l,1)==sep then
    lpuste=lpuste+'*'
  end
  for n=1:(length(l)-1) do
    lpuste=lpuste+part(l,n);
    if part(l,n:n+1)==sep+sep then
      lpuste=lpuste+'*'
    end
  end
  lpuste=lpuste+part(l,$)
  if part(l,$)==sep then
    lpuste=lpuste+'*'
  end
  t=tokens(lpuste,sep)
endfunction

function [naglowki,dane]=wczytaj_oc(nazwa_pliku)
  sep=','
  f=mopen(nazwa_pliku,'r')
  l=stripblanks(mgetl(f,1))
  lt=tokens_puste(l,sep)
  lb_probek=strtod(lt(2))
  lb_przebiegow=(size(lt,"r"))/6
  for i=1:lb_przebiegow do
    d((i-1)*2+1)=strtod(lt((i-1)*6+4))
    d((i-1)*2+2)=strtod(lt((i-1)*6+5))
    naglowki(1,(i-1)*2+1)=""
    naglowki(1,(i-1)*2+2)=""
  end
  dane=d'
  wiersz=1
  while meof(f)==0 do
    wiersz=wiersz+1
    l=stripblanks(mgetl(f,1))
    if isempty(l)==%f then
      lt=tokens_puste(l,sep)
      for i=1:lb_przebiegow do
        d((i-1)*2+1)=strtod(lt((i-1)*6+4))
        d((i-1)*2+2)=strtod(lt((i-1)*6+5))
        ust=lt((i-1)*6+2)
        select wiersz
        case 7 then
          naglowki((i-1)*2+2)=ust
        case 8 then
          naglowki((i-1)*2+2)=naglowki((i-1)*2+2)+"/"+ust
        case 11 then
          naglowki((i-1)*2+1)="Time/"+ust
        end
      end
      dane(wiersz,:)=d'
    end
  end
  mclose(f)
endfunction

function [naglowki,dane]=dodaj_moc(naglowki,dane,nr_przeb_i,nr_przeb_u)
  maxcol=size(dane,"c")
  t=dane(:,(nr_przeb_i-1)*2+1)
  i=dane(:,(nr_przeb_i-1)*2+2)
  u=dane(:,(nr_przeb_u-1)*2+2)
  dane=[dane,t,i.*u]
  naglowki=[naglowki,naglowki((nr_przeb_i-1)*2+1),"("+naglowki((nr_przeb_i-1)*2+2)+")*("+naglowki((nr_przeb_u-1)*2+2)+")"]
endfunction

function wykresl_dane(naglowki,dane,nr_przebiegow)
  lb_przebiegow=length(nr_przebiegow)
  for i=1:lb_przebiegow do
    danew(:,(i-1)*2+1)=dane(:,(nr_przebiegow(i)-1)*2+1)
    danew(:,(i-1)*2+2)=dane(:,(nr_przebiegow(i)-1)*2+2)
    naglw((i-1)*2+1)=naglowki((nr_przebiegow(i)-1)*2+1)
    naglw((i-1)*2+2)=naglowki((nr_przebiegow(i)-1)*2+2)
  end
  legenda_x=naglw(1)
  for i=1:lb_przebiegow do
    zakres(i)=round(log10(max(abs(danew(:,(i-1)*2+2)))))
    nagl=naglw((i-1)*2+2)
    if i==1 then
      legenda_y="Y1"
    else
      legenda_y=legenda_y+"; Y"+sprintf("%d",i)
      if zakres(i)~=zakres(1) then
        skala=zakres(1)-zakres(i)
        danew(:,(i-1)*2+2)=danew(:,(i-1)*2+2)*10^skala
        if abs(skala)<=4 then
          if skala>0 then
            legenda_y=legenda_y+"*"+sprintf("%d",10^skala)
          else
            legenda_y=legenda_y+"/"+sprintf("%d",10^(-skala))
            //legenda_y=legenda_y+"*"+sprintf("%."+sprintf("%d",abs(skala))+"f",10^skala)
          end
        else
          if skala>0 then
            legenda_y=legenda_y+"*"+"10^"+sprintf("%d",skala)
          else
            legenda_y=legenda_y+"/"+"10^"+sprintf("%d",-skala)
          end
        end
      end
    end
    legenda(i)=naglw((i-1)*2+2)
  end
  clf()
  for i=1:lb_przebiegow do
    plot(danew(:,(i-1)*2+1),danew(:,(i-1)*2+2))
    przebieg=gce()
    przebieg.children(1).foreground=i+1
  end
  xtitle("",legenda_x,legenda_y)
  legend(legenda)
  wykr=gca()
  wykr.box="on"
  wykr.grid=[0,0,-1]
endfunction

function ty=t_dla_y(dane,nr_przebiegu,y)
  dy=dane(:,(nr_przebiegu-1)*2+2)
  t=dane(:,(nr_przebiegu-1)*2+1)
  imax=size(dy,"r")
  i=1
  if dy(1)>y then
    while i<=imax & dy(i)>y do
      i=i+1
    end
  else
    while i<=imax & dy(i)<y do
      i=i+1
    end
  end
  if i>imax then
    ty=%inf
  else
    ty=t(i)
  end
endfunction

function przebieg=eks_przebieg(dane,nr)
  przebieg=dane(:,(nr-1)*2+1:(nr-1)*2+2)
endfunction

function wykresl_prady(dane,opis1,opis2)
  clf()
  plot(dane(:,1),dane(:,2))
  przebieg=gce()
  przebieg.children(1).foreground=2
  plot(dane(:,3),dane(:,4))
  przebieg=gce()
  przebieg.children(1).foreground=3
  xtitle("","t/s","i/A")
  legend([opis1,opis2])
endfunction
