next up previous
Next: About this document Up: Vaje 24 Previous: Vaje 24

Kalkulator

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

Naše operacije so:

Za lažje razumevanje si oglej sklade in njihove lastnosti.

Oglejmo si primer:

displaymath18

Za izdelavo kalkulatorja potrebujemo:

Naš program:
#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 */



Andrej Brodnik (Andy)
Thu Jun 11 12:29:25 MET DST 1998