\documentclass[a4paper,11pt]{article}

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{xcolor}

\renewcommand\familydefault{\sfdefault}
\usepackage{tgheros}
\usepackage[defaultmono]{droidsansmono}

\usepackage{amsmath,amssymb,amsthm,textcomp}
\usepackage{enumerate}
\usepackage{multicol}
\usepackage{tikz}

\usepackage{geometry}
\geometry{left=25mm,right=25mm,%
bindingoffset=0mm, top=20mm,bottom=20mm}

% Image path
\graphicspath{{images/}}

\linespread{1.3}

\newcommand{\linia}{\rule{\linewidth}{0.5pt}}

% custom theorems if needed
\newtheoremstyle{mytheor}
    {1ex}{1ex}{\normalfont}{0pt}{\scshape}{.}{1ex}
    {{\thmname{#1 }}{\thmnumber{#2}}{\thmnote{ (#3)}}}

\theoremstyle{mytheor}
\newtheorem{defi}{Definition}

% my own titles
\makeatletter
\renewcommand{\maketitle}{
\begin{center}
\vspace{2ex}
{\huge \textsc{\@title}}
\vspace{1ex}
\\
\linia\\
\@author \hfill \@date
\vspace{4ex}
\end{center}
}
\makeatother
%%%

% custom footers and headers
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{}
\chead{}
\rhead{}
\lfoot{CSC 1109 Lab 11}
\cfoot{}
\rfoot{Page \thepage}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
%

% code listing settings
\usepackage{listings}
\lstset{
    language=python,
    basicstyle=\ttfamily\small,
    aboveskip={1.0\baselineskip},
    belowskip={1.0\baselineskip},
    columns=fixed,
    extendedchars=true,
    breaklines=true,
    tabsize=4,
    prebreak=\raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},
    frame=lines,
    showtabs=false,
    showspaces=false,
    showstringspaces=false,
    keywordstyle=\color[rgb]{0.627,0.126,0.941},
    commentstyle=\color[rgb]{0.133,0.545,0.133},
    stringstyle=\color[rgb]{01,0,0},
    numbers=left,
    numberstyle=\small,
    stepnumber=1,
    numbersep=10pt,
    captionpos=t,
    escapeinside={\%*}{*)}
}

%%%----------%%%----------%%%----------%%%----------%%%

\begin{document}

\title{CSC 1109 Lab 11}

\author{Woon Jun Wei, 2200624}

\date{\today}

\maketitle

\section*{Question 1}
\begin{lstlisting}[label={list:calculator},caption=calculator.py]
class calculator:
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def adder(self):
        print("The sum is: " + str(self.x + self.y))
        return self.x + self.y

    def subtractor(self):
        print("The difference is: " + str(self.x - self.y))
        return self.x - self.y

    def multiplier(self):
        print("The multiplication is: " + str(self.x * self.y))
        return self.x * self.y

    def divider(self):
        print("The quotient is: " + str(self.x / self.y))
        return self.x / self.y

    def clear(self):
        self.x = 0
        self.y = 0
        print("Numbers are reset to be zero")
        return self.x, self.y


if __name__ == "__main__":
    x = int(input("Enter the first number: "))
    y = int(input("Enter the second number: "))
    calc = calculator(x, y)
    calc.adder()
    calc.subtractor()
    calc.multiplier()
    calc.divider()
    calc.clear()
\end{lstlisting}
\begin{lstlisting}[label={list:calculator_output},caption=calculator.py output]
# Output 1
Enter the first number: 10
Enter the second number: 5
The sum is: 15
The difference is: 5
The multiplication is: 50
The quotient is: 2.0
Numbers are reset to be zero

# Output 2
Enter the first number: 100
Enter the second number: 5
The sum is: 105
The difference is: 95
The multiplication is: 500
The quotient is: 20.0
Numbers are reset to be zero
\end{lstlisting}


\end{document}
