% Autor: Adam Nowak    
% Przedmiot: Informatyka i Programowanie
% Kierunek: IChiP S1   Rok akad.: 2014/15   Sem.: 2   
clc, clear
fprintf('Program oblicza wartoœæ e^x na podstawie rozwiniêcia w szereg potêgowy - dzia³ania iteracyjne\n') 
fprintf('dla danego x z zadan¹ dok³adnoœci¹ eps (zero numeryczne).\n\nPodaj wartoœci:\n'); 
xp=input('xp='); xk=input('xk='); delx=input('delx='); eps=input('eps=');
odp=' ';
while (odp~='t')&&(odp~='n')
  odp=input('\nCzy zapisaæ dane w pliku?\n t - tak \n n - nie \n','s');
  if odp=='t'
    plik=input('Podaj nazwê pliku: ','s');
    dane(1)=xp; dane(2)=xk; dane(3)=delx; dane(4)=eps; dane=dane';
    save(plik,'dane','-ascii');
    fprintf('Dane zapisano w pliku "%s".\n',plik)
  end
end
odp=' ';
while (odp~='t')&&(odp~='n')
  odp=input('\nCzy odczytaæ dane z pliku?\n t - tak \n n - nie \n','s');
  if odp=='t'
    err=0;
    try
      plik=input('Podaj nazwê pliku: ','s');
      dane=load(plik);
      xp=dane(1); xk=dane(2); delx=dane(3); eps=dane(4);
      fprintf('\nDane:\nxp=%12.3f\nxk=%12.3f\ndelx=%10.3f\neps=%11.3e\n',xp,xk,delx,eps)
    catch
      err=1; odp='-';
    end
    if err==1 fprintf('\nB³¹d odczytu pliku""%s""\n',plik); end
  end
end
nazwa=input('\nPodaj nazwê pliku wyników: ','s');
plik=fopen(nazwa,'w');
fprintf(plik,'Program oblicza wartoœæ e^x na podstawie rozwiniêcia w szereg potêgowy - dzia³ania iteracyjne\r\n'); 
fprintf(plik,'dla danego x z zadan¹ dok³adnoœci¹ eps (zero numeryczne).\r\n\r\n'); 
clc, fprintf('Dane:\nxp=%12.3f\nxk=%12.3f\ndelx=%10.3f\neps=%11.3e\n',xp,xk,delx,eps)
fprintf(plik,'Dane:\r\nxp=%12.3f\r\nxk=%12.3f\r\ndelx=%10.3f\r\neps=%11.3e\r\n',xp,xk,delx,eps); 
for k=1:21 fprintf(' '); end; for k=1:21 fprintf(plik,' '); end
fprintf('Tabela wyników\n'); fprintf(plik,'Tabela wyników\r\n');
for k=1:57 fprintf('-'); end; for k=1:57 fprintf(plik,'-'); end
fprintf('\n%5s %12s %12s %12s %12s\n','Lp','x','e^x','e^x dok³.','b³¹d [%]');
fprintf(plik,'\r\n%5s %12s %12s %12s %12s\r\n','Lp','x','e^x','e^x dok³.','b³¹d [%]');
for k=1:57 fprintf('-'); end; for k=1:57 fprintf(plik,'-'); end
fprintf('\n'), fprintf(plik,'\n'); 
i=1; x(i)=xp; xnast=x(1);
while xnast<=xk
  x(i)=xnast;
  snast=1; s(i)=0; k=0;
  while snast>eps
    s(i)=s(i)+snast;
    k=k+1;
    snast=snast*x(i)/k;
  end
  exteo=exp(x(i));
  error=100*abs(s(i)-exteo)/exteo;
  fprintf('%5d %12.2f %12.3e %12.3e %12.3e\n',i,x(i),s(i),exteo,error);
  fprintf(plik,'%5d %12.2f %12.3e %12.3e %12.3e\r\n',i,x(i),s(i),exteo,error);
  xnast=x(i)+delx;
  i=i+1;
end
for k=1:57 fprintf('-'); end; for k=1:57 fprintf(plik,'-'); end
fprintf('\n'), fprintf(plik,'\n'); 
fclose(plik);
clf,plot(x,s,'bo-.')
title('y=e^x'),xlabel('x [-]'),ylabel('e^x [-]')