MATLAB FFT Amplitude
Your code has some troubles, and perhaps also your theoretical understanding. Let me put here a mini summary of observing a practical sine wave and its frequency spectrum using FFT function of MATLAB / Octave.

Assume that there's a continuous-time ideal infinitely long sinusoidal wave with frequency $\Omega_0$ given as:

$$ x(t) = A \cos(\Omega_0 t) , \tag{1} $$

Let's sample this infinetely long signal within a finite duration of $[0 , T_s]$ using a sampling rate of $F_s$ or the sampling period of $T_s = \frac{1}{F_s}$, so that $t = nT_s$, and  we obtain $L$ samples of the signal :

$$ x_L[n] = x[n]w[n] = A \cos(\omega_0 n) ~~,~~n = 0,1,...,L-1 \tag{2}$$ 

where $\omega_0 = \Omega_0 T_s$ and $w[n]$ is a rectangular window, used to represent the finite duration of observation. 

$$ w[n] = \begin{cases} { 1 ~~~,~~~~ 0 \leq n \leq L-1 \\ 0 ~~~,~~~ ow }\end{cases} \tag{3}$$

DTFT (Discrete-time Fourier transform) modulation property can be used to analyse the frequency domain representation of $x_L[n]$ :

$$
X_L(e^{j\omega}) = \frac{1}{2\pi} X(e^{j\omega}) \star W(e^{j\omega})  \tag{4}
$$

where $W(e^{j\omega})$ is the DTFT of the rectangular window :

$$ 
W(e^{j\omega}) = e^{-j \omega (\frac{L-1}{2}) } \cdot  \frac{ \sin(\omega L /2)}{\sin(\omega/2)} \tag{5}
$$

A plot of this function is shown below :



Again we also we know that the DTFT of $x[n] = A\cos(\omega_0 n)$ is :
$$
X(e^{j\omega}) = A\pi \delta(\omega + \omega_0) + A\pi \delta(\omega - \omega_0)  \tag{6}
$$ 

Hence we see that the DTFT of the finite length observation $x_L[n]$ is

$$
X_L(e^{j\omega}) = \frac{A}{2} [ W(e^{j(\omega+\omega_0)}) +  W(e^{j(\omega-\omega_0)})] \tag{7}
$$

Now, when you take $M$-point FFT of the $L$-point sequence $x_L[n]$, then you are effectively calculating the $M$-point DFT (discrete Fourier transform) which is equal to $M$ uniform samples of DTFT $X_L(e^{j\omega})$  as given by

$$ 
X_L^M[k] = X_L(e^{j\omega})|_{w = \frac{2\pi}{M} k} ~~~, ~~~k = 0,1,...,M-1 \tag{8}
$$

which yields the complex frequency vector that you compute using FFT function:

$$ 
X_L^M[k] = \frac{A}{2} [ W(e^{j(\omega_k+\omega_0)}) +  W(e^{j(\omega_k-\omega_0)})]  ~~,~~k = 0,...,M-1 \tag{9}
$$

So with an M-point FFT of $x_L[n]$ we calculate the samples of the shifted versions of $W(e^{j\omega})$. 

An example plot of $|X_L^M[k]|$ for $L =  16$ , $M = 1024$, $A = 5$ and $\omega_0 = 0.2 \pi$ is shown.



Note that the peak values (which are $A \cdot L /2$ when $\omega_0$ meets some criterion, see below) are obtained for some $k=k_0$ and $k = M-k_0$. Consider the first peak (to the right of the plot here) and it can be shown that its value is

$$ |X_L^M[k_0]| = |0.5 A [  W(  \frac{2\pi}{M} k_0 - w_0) +  W(  \frac{2\pi}{M} k_0 + w_0) ]| \tag{10}
$$

Where the integer DFT index $k_0$ is found to be $k_0 = \text{round}( \frac{M \omega_0}{2\pi} )$. So the peak value of the spectrum is in general not equal to $0.5 A \cdot L$ which you are expecting, which would only be the case when 

$$  \frac{2\pi}{M} k_0  =  w_0 \tag{11}$$ for some integer $k_0$ which requires that $\frac{M \omega_0}{2\pi}$ is also an integer, or equivalently

$$ \omega_0 = \frac{ 2\pi }{M}k_0 \tag{12}$$ ,in that special case $|X_L^M[k_0]| = 0.5 A L$ will happen. Otherwise, you will have two complex numbers added and their magnitude is computed.

Note that by selecting $M = L$ when $\omega_0$ meets the criterion (i.e, $ \frac{M \omega_0}{2\pi}$ is an integer), then one can get what is an illusion of lollipop plot indicating only two nonzero samples at the frequencies of $\pm \omega_0$ with magnitude 0.5 $A \cdot L $ and all zeros. But this is a conseqeunce of frequency sampling and not to be taken unnecessarily into too far conclusions.

Here is a MATLAB / OCTAVE code to produce the results

clc; clear all; close all

% Define the sampling grid  
Fs = 1000;             % sampling frequency in Hz
Ts = 1/Fs;             % sampling period in seconds

ti = 0;                % initial time (s)
tf = .15;               % final time   (s)
t =  ti :Ts : tf;  % sampling time index t = n*Ts

L = length(t);          % number of samples in x[n] = A*sin(2*pi*f0*n*Ts)
M = L;                  % Number of DFT points to be computed

% Define the sampled signal
A = 0.5;               % amplitude of sine wave

% Signal Frequency Type-1 :
%f0 = 100;              % sine wave frequency in Hz.
%w0 = 2*pi*f0*Ts;        % set an arbitrary frequency
%x = A*cos(w0*[0:L-1]);   % Sine wave sampled at Fs.

% Signal Frequency Type-2:
w0 = 2*pi/M*floor(L/3); % set a special frequency so that DFT PEAK = A/2            
x = A*cos(w0*[0:L-1]);   % Sine wave sampled at Fs.


% Calculate DFT of x[n] using FFT function
k0 = ( M*w0/(2*pi));


figure,stem(linspace(-pi,pi,M),fftshift(abs(fft(x,M))/L))
title(['Magnitude of X_L^M[k] for L=',num2str(L),' , M=', num2str(M),...
      ' , A=',num2str(A),' , \omega_0 =', num2str(w0), ' , k_0 = ' num2str(k0)]);
grid on