Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- \documentclass[12pt,a4paper]{article}
- \usepackage{amsmath,amssymb}
- \usepackage[utf8]{inputenc}
- \usepackage[OT4]{fontenc}
- %\usepackage[T1]{fontenc}
- \usepackage[polish]{babel}
- \selectlanguage{polish}
- \usepackage{indentfirst}
- \usepackage[dvips]{graphicx}
- \usepackage{tabularx}
- \usepackage{color}
- \usepackage{hyperref}
- \usepackage{fancyhdr}
- \usepackage{listings}
- \usepackage{booktabs}
- \usepackage{ifpdf}
- \usepackage{mathtext} % polskie znaki w trybie matematycznym
- %\makeindex % utworzenie skorowidza (w dokumencie pdf)
- \usepackage{lmodern}
- %\usepackage[osf]{libertine}
- \usepackage{filecontents}
- \usepackage{tikz}
- \usetikzlibrary{arrows}
- \newcounter{nextYear}
- \setcounter{nextYear}{\the\year}
- \stepcounter{nextYear}
- % rozszerzenie nieco strony
- %\setlength{\topmargin}{-1cm} \setlength{\textheight}{24.5cm}
- %\setlength{\textwidth}{17cm} \addtolength{\hoffset}{-1.5cm}
- %\setlength{\parindent}{0.5cm} \setlength{\footskip}{2cm}
- %\linespread{1.2} % odstep pomiedzy wierszami
- \ifpdf
- \DeclareGraphicsRule{*}{mps}{*}{}
- \fi
- \newcommand{\tl}[1]{\textbf{#1}}
- \pagestyle{fancy}
- \renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}}
- \fancyhf{} % usuwanie bieżących ustawień
- \fancyhead[LE,RO]{\small\bfseries\thepage}
- \fancyhead[LO]{\small\bfseries\rightmark}
- \fancyhead[RE]{\small\bfseries\leftmark}
- \renewcommand{\headrulewidth}{0.5pt}
- \renewcommand{\footrulewidth}{0pt}
- \addtolength{\headheight}{0.5pt} % pionowy odstęp na kreskę
- \fancypagestyle{plain}{%
- \fancyhead{} % usuń p. górne na stronach pozbawionych numeracji
- \renewcommand{\headrulewidth}{0pt} % pozioma kreska
- }
- % ustawienia listingu programow
- %\lstset{ language=C++,
- % numbers=left,
- % numberstyle=\tiny,
- % stepnumber=1,
- % numbersep=5pt,
- % stringstyle=\ttfamily,
- % showstringspaces=false,
- % tabsize=4
- % }
- \lstset{%
- language=C++,%
- commentstyle=\textit,%
- identifierstyle=\textsf,%
- keywordstyle=\sffamily\bfseries, %
- %captionpos=b,%
- tabsize=3,%
- frame=lines,%
- numbers=left,%
- numberstyle=\tiny,%
- numbersep=5pt,%
- breaklines=true,%
- morekeywords={pWezel,Wezel,string,ref,params_result,string},%
- escapeinside={(*@}{@*)},%
- %basicstyle=\footnotesize,%
- %keywords={double,int,for,if,return,vector,matrix,void,public,class,string,%
- %float,sizeof,char,FILE,while,do,const}
- }
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % mala zmiana sposobu wyswietlania notek bocznych
- \let\oldmarginpar\marginpar
- \renewcommand\marginpar[1]{%
- {\linespread{0.85}\normalfont\scriptsize%
- % \oldmarginpar[\vspace{-1.5ex}\raggedleft\scriptsize\color{black}\textsf{#1}]% left pages
- % {\vspace{-1.5ex}\raggedright\scriptsize\color{black}\textsf{#1}}% right pades
- \oldmarginpar[\hspace{1cm}\begin{minipage}{3cm}\raggedleft\scriptsize\color{black}\textsf{#1}\end{minipage}]% left pages
- {\hspace{0cm}\begin{minipage}{3cm}\raggedright\scriptsize\color{black}\textsf{#1}\end{minipage}}% right pages
- }%
- }
- % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
- \begin{document}
- \frenchspacing
- \thispagestyle{empty}
- \begin{center}
- {\Large\sf Politechnika Śląska w Gliwicach % Alma Mater
- Wydział Automatyki, Elektroniki i Informatyki
- }
- \vfill
- \includegraphics[width=0.30\textwidth]{polsl.jpg}
- \vfill\vfill
- {\Huge\sffamily\bfseries Podstawy Programowania Komputerów} \\
- \vfill\vfill
- {\LARGE\sf Loty}
- \vfill \vfill\vfill\vfill
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \begin{tabular}{ll}
- \toprule
- autor & Natalia Cheba \\
- prowadzący & dr inż. Adam Gudyś \\
- rok akademicki & 2018/2019 \\
- kierunek & informatyka \\
- rodzaj studiów & SSI \\
- semestr & 1 \\
- termin laboratorium / ćwiczeń & poniedziałek, 10:15 -- 11:45 \\
- grupa & 1 \\
- sekcja & 1 \\
- termin oddania sprawozdania & \the\year-01-19 \\
- data oddania sprawozdania & \the\year-01-12 \\
- \bottomrule & \\
- \end{tabular}
- \end{center}
- %%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \cleardoublepage
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \section{Treść zadania}
- Korzystając z dynamicznych struktur danych napisać program, który przygotowuje listy pasażerów. Pasażerowie mogą rezerwować bilety na różne loty w różnych biurach i przez internet. Wszystkie rezerwacje są zapisywane w biurze centralnym. Mają one następującą postać: \newline \newline
- {\small\sf
- (symbol lotu) (lotnisko startowe) (data lotu) (nazwisko pasażera) (nr miejsca)
- } \newline \newline
- Przykładowy plik z rezerwacjami:
- \newline
- \texttt{KR54R Katowice 2011-12-13 Jaworek 33} \newline
- \texttt{TY340 London 2012-02-03 Hastings 2} \newline
- \texttt{TY340 London 2012-02-03 Poirot 23} \newline
- \texttt{KR54R Katowice 2011-12-13 Matianek 02} \newline
- \texttt{TY340 London 2012-02-03 Holmes 11} \newline
- \texttt{KR54R Katowice 2011-12-13 Lopez 12} \newline
- \texttt{TY340 London 2012-02-03 Lemon 43} \newline
- \texttt{KR54R Katowice 2011-12-13 Chavez 43} \newline
- Na podstawie pliku z rezerwacjami należy stworzyć plik z listą pasażerów dla każdego lotu. Każda lista jest tworzona w odrębnym pliku. Nazwą pliku jest symbol lotu. W pliku umieszczona jest nazwa lotniska i data. W kolejnych liniach umieszczone są numery siedzeń i nazwiska pasażerów, posortowane wg numerów.Dla powyższego pliku zostaną utworzone pliki: \texttt{KR54R.txt} i
- \texttt{TY340.txt}. \newline
- Plik \texttt{KR54R.txt}: \newline \newline
- \texttt{symbol lotu: KR54R} \newline
- \texttt{lotnisko: \hspace{0.46cm} Katowice} \newline
- \texttt{data lotu: \hspace{0.23cm} 2011-12-13} \newline
- \newline
- \texttt{lista pasazerow:} \newline
- \texttt{02 Matianek} \newline
- \texttt{11 Lopez} \newline
- \texttt{33 Jaworek} \newline
- \texttt{43 Chavez} \newline
- \texttt{liczba rezerwacji: 4}. \newline \newline
- Program uruchamiany jest z linii poleceń z wykorzystaniem następującego przełącznika: \texttt{-i plik wejsciowy z rezerwacjami}.
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \section{Analiza zadania}
- Program przedstawia problem sortowania lotów z pliku wejściowego oraz przydzielanie do odpowiednich lotów pasażerów w sposób posortowany według miejsc.
- \subsection{Struktury danych}
- W programie wykorzystano drzewo binarne i listę jednokierunkową. Lista przechowuje parametry lotu tj. identyfikator lotu, lotnisko startowe oraz datę lotu, natomiast drzewo posiada wszystkie informacje dotyczące pasażerów tj. nazwisko pasażera i numer miejsca. Wybranie takiej zagnieżdżonej struktury danych (lista drzew) powoduje szybkie sortowanie danych.
- \subsection{Algorytmy}
- Program pobiera z pliku wejściowego wszystkie parametry lotu przeszukując czy lot o podanych parametrach istnieje. Jeżeli istnieje, program dopisuje pasażera do listy pasażerów dla konkretnego lotu. Jeżeli lot, który pobrał program nie znajduje się w liście lotów, program dodaje nową listę.
- \section{Specyfikacja zewnętrzna}
- Program jest uruchamiany z linii poleceń. Przy wywoływaniu programu możliwe jest użycie przełączników \texttt{-i}.
- Po wykorzystaniu przełącznika \texttt{-i} należy przekazać do programu nazwę pliku wejściowego. Instrukcja
- \begin{verbatim}
- podaj dobre argumenty
- \end{verbatim}
- jest wyświetlana w przypadku podania niepoprawnych danych.
- \newline
- Przykładowe wywołania programu:
- \begin{verbatim}
- start Loty.exe -i ".../Loty.txt"
- \end{verbatim}
- Program tworzy i zapisuje spis pasażerów w pliku tekstowym. Plik tekstowy dla każdego lotu jest nazwany jego symbolem lotu.
- \includegraphics[width=0.30\textwidth]{1.png}
- \newline \newline \newline
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- W przypadku podania pliku, który nie istnieje wyświetlana jest instrukcja
- \begin{verbatim}
- plik nie istnieje
- \end{verbatim}
- \includegraphics[width=0.90\textwidth]{3.png}
- W przypadku podania pliku, który jest pusty wyświetlana jest instrukcja
- \begin{verbatim}
- Plik jest pusty
- \end{verbatim}
- \includegraphics[width=0.90\textwidth]{4.png}
- \section{Testowanie}
- Program został przetestowany na różnego rodzaju plikach: pustych i nie istniejących. Obydwa przypadki powodują zgłoszenie błędu : Plik jest pusty lub Plik nie istnieje. Dodatkowo sprawdzony został pod kątem wprowadzenia złego przełącznika. W przypadku podania błędnego pojawia się komunikat "podaj dobre argumenty". W przypadku podania błednych danych : złe lotnisko, złe nazwisko, zły numer miejsca, zła data, program działa i nie uwzględnia podania błędnych informacji. Program został przetestowany też dla dużej ilości danych ponad 1,5Mb i kilku bajtów. Program działał trochę wolniej dla dużej ilości danych. Program został sprawdzony pod kątem wycieków pamięci tak, aby nie dopuścić do ani jednego wycieku.
- \section{Wnioski}
- Program Loty jest programem ciekawym, ponieważ wymaga znajomości drzew i list. Szczególnie trudne w tym projekcie okazało się porównywanie pól związanych z parametrami lotu. Najbardziej wymagające okazało się podzielenie plików na .h i .cpp. Dodatkowo dużym problemem stanowiły przełączniki. Pomimo wielu trudności projekt okazał się doskonałą okazją do poznania wielu ciekawych nowych funkcji i konstrukcji.
- %\begin{figure}[t]
- %\centering
- %\includegraphics{graf/rysunek.1}
- %\caption{Opis rysunku znajduje się pod nim.}
- %\label{fig:rysunek}
- %\end{figure}
- \end{document}
- % Koniec wieńczy dzieło.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement