\documentclass[a4paper,12pt]{article}

% Nina Kerčmar PRAKTICNA MATEMATIKA - 2. letnik

\usepackage[latin2]{inputenc}

\title{Vaje 24}
\author{Nina Kerčmar}
\date{11.5.1998}

\begin{document}

\maketitle

\section*{Kalkulator}


Napisali bomo program za kalkulator z več natančnim računanjem. Vsak
kalkulator za svoje delovanje potrebuje operacije.

Naše operacije so:
%
\begin{itemize}
\item S-seštevanje
\item O-odštevanje
\item V-vpis
\item I-izpis
\item M-množenje
\item D-ostanek
\item K-količnik
\end{itemize}
%
Za lažje razumevanje si oglej sklade in njihove lastnosti.

Oglejmo si primer:
%
\[
   (((10+3)*14) \ ((7 - 13) \% 5))
\]
%
\begin{itemize}
\item V 10
\item V 3
\item S
\item V 14
\item M
\item V 7
\item V 13
\item O
\item V 5
\item D
\item K
\item I
\end{itemize}

Za izdelavo kalkulatorja potrebujemo:
%
\begin{itemize}
\item računalniške operacije v C++
\item sklad predmetov iz razreda celih števil
\item testni modul
\end{itemize}
%
Naš program:
%
{\tt
\begin{verbatim}
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "../../code/Sklad/Skladi.h"

/* ------------------------------------------------------------- */
/* -------------------------------------[ glavni program ]------ */
/* ------------------------------------------------------------- */
int main( void ) {
  Sklad<int> mojSklad;
  int zacStev1, zacStev2;

  char vrstica [250];              /* vrstica z morebitnimi parm. */

  while ( !feof(stdin) ) {         /* vsako vrstico obdelamo */
    scanf("%s", vrstica);
    switch (vrstica[0]) {          /* prvi znak vrstice je ukaz */
    case 'S':                      /* sestevanje stevil */
      zacStev1 = mojSklad.Zlozi();
      zacStev2 = mojSklad.Zlozi();
      mojSklad.Nalozi(zacStev2+zacStev1);
    break;
    case 'O':                      /* odstevanje stevil */
      zacStev1 = mojSklad.Zlozi();
      zacStev2 = mojSklad.Zlozi();
      mojSklad.Nalozi(zacStev2-zacStev1);
    break;
    case 'M':                      /* mnozenje stevil */
      zacStev1 = mojSklad.Zlozi();
      zacStev2 = mojSklad.Zlozi();
      mojSklad.Nalozi(zacStev2*zacStev1);
    break;
    case 'D':                      /* deljenje stevil - ostanek */
      zacStev1 = mojSklad.Zlozi();
      zacStev2 = mojSklad.Zlozi();
      mojSklad.Nalozi(zacStev2 % zacStev1);
    break;
    case 'K':                      /* deljenje stevil - kolicnik */
      zacStev1 = mojSklad.Zlozi();
      zacStev2 = mojSklad.Zlozi();
      mojSklad.Nalozi(zacStev2 / zacStev1);
    break;
    case 'V':                      /* vpis novega stevila */
      mojSklad.Nalozi(atoi (&(vrstica[1])));
    break;
    case 'I':                      /* izpisemo zadnje stevilo */
      printf("%d\n", mojSklad.Zlozi());
    break;
    }; /* switch */
  } /* while */
  return 0;
} /* main */
\end{verbatim}
}

\end{document}



