% Autor: Adam Nowak
% Przedmiot: Informatyka i Programowanie
% Kierunek: IChiP S1   Rok akad.: 2014/15   Sem.: 2
function main
clc, clf, clear, close all
koniec=false; xp=NaN;
fprintf(['Program tablicuje  wartoœci funkcji: y1(x)=x^2  y2(x)=x^3  y3(x)=e^x\n' ...
    'dla x w zakresie <xp;xk> z krokiem delx oraz oblicza sumê ka¿dej z funkcji.\n']);
while koniec==false
    if Czy('\nCzy odczytaæ dane z pliku? (t - tak, n - nie)\n')
        plik=input('Podaj nazwê pliku: ','s');
        f=fopen(plik,'r');
        if f>-1
            dane=fscanf(f,'%g %g %g');
            xp=dane(1); xk=dane(2); delx=dane(3);
            fclose(f);
            fprintf('\nOdczytane dane:\nxp=%g\nxk=%g\ndelx=%g\n',xp,xk,delx)
            koniec=true;
        else
            if Czy('\nBlad odczytu pliku! Kontynuowac? (t - tak, n - nie)\n')==false koniec=true; end
        end
    else
        fprintf('Podaj wartosci danych:\n')
        xp=input('xp='); xk=input('xk='); delx=input('delx=');
        if Czy('\nCzy zapisaæ dane do pliku? (t - tak, n - nie)\n')
            plik=input('Podaj nazwê pliku: ','s');
            f=fopen(plik,'w');
            fprintf(f,'%g %g %g',xp,xk,delx);
            fclose(f);
            fprintf('Dane zapisano w pliku "%s".\n',plik)
        end
    end
end
if isnan(xp)==false
    if Czy('\nCzy zapisaæ wyniki do pliku? (t - tak, n - nie)\n')
        plik=input('Podaj nazwê pliku dla wynikow: ','s');
        f=fopen(plik,'w');
        zapis=true;
        fprintf(f,['Program tablicuje  wartoœci funkcji: y1(x)=x^2  y2(x)=x^3  y3(x)=e^x\r\n' ...
            'dla x w zakresie <xp;xk> z krokiem delx oraz oblicza sumê ka¿dej z funkcji.\r\n']);
        fprintf(f,'\r\nDane:\r\nxp=%12.3f\r\nxk=%12.3f\r\ndelx=%10.3f\r\n',xp,xk,delx);
    else
        zapis=false;
    end
    clc
    fprintf('\nTabela wyników\n');
    fprintf('\n%5s %12s %12s %15s %12s\n','Lp','x','x^2','x^3','sin(x)');
    if zapis
        fprintf(f,'\r\nTabela wyników\r\n');
        fprintf(f,'\r\n%5s %12s %12s %15s %12s\r\n','Lp','x','x^2','x^3','sin(x)');
    end
    i=1; x(i)=xp; xnast=x(1);
    s1=0; s2=0; s3=0;
    while xnast<=xk
        x(i)=xnast;
        y1(i)=x(i)^2; y2(i)=x(i)^3; y3(i)=sin(x(i));
        s1=s1+y1(i); s2=s2+y2(i); s3=s3+y3(i);
        fprintf('%5d %12.3f %12.3f %15.3f %12.3f\n',i,x(i),y1(i),y2(i),y3(i));
        if zapis fprintf(f,'%5d %12.3f %12.3f %15.3f %12.3f\r\n',i,x(i),y1(i),y2(i),y3(i)); end
        xnast=x(i)+delx;
        i=i+1;
    end
    fprintf('\n%5s %25.3f %15.3f %12.3f\n','SUMA',s1,s2,s3);
    if zapis
        fprintf(f,'\r\n%5s %25.3f %15.3f %12.3f\r\n','SUMA',s1,s2,s3);
        fclose(f);
        fprintf('\nDane zapisano w pliku "%s".\n',plik)
    end
    clf, subplot(1,3,1), plot(x,y1,'m--')
    xlabel ('x [-]'), ylabel ('y1 [-]'), legend('y1=x^2')
    subplot(1,3,2), plot(x,y2,'ro-.')
    xlabel ('x [-]'), ylabel ('y2 [-]'), legend('y2=x^3')
    subplot(1,3,3), plot(x,y3,'k-')
    xlabel ('x [-]'), ylabel ('y3 [-]'), legend('y3=sin(x)')
end
fprintf('KONIEC')

function out=Czy(s)
odp=' ';
while odp~='T'&&odp~='N'
    odp=upper(input(s,'s'));
end
if odp=='T'
    out=true;
else
    out=false;
end

