File: Stare vježbe/vjezbe08/48__kalkulator.c
/* 48__kalkulator.c ----- Primjer jednostavnog infix kalkulatora. Napomena: U kalkulatoru nije implementirano postivanje standardnih prioriteta matematickih operatora, pa se prioriteti moraju "rucno" definirati upotrebom zagrada. */ #include <stdio.h> float kalkulator(void) { char op, slijed; float odgovor, novi_broj; odgovor = 0; op ='+'; while ((op != '=' ) && (op != ')' )) { slijed = getchar(); if (slijed== '(') novi_broj = kalkulator(); else { /* Pomocu funkcije ungetc vracamo ucitani char natrag na "mjesto" od kuda je on bio uzet. (stdin predstavlja svojevrsno "spremiste" gdje se nalaze ulazni podaci koje je korisnik unio s tastature) */ ungetc(slijed, stdin); scanf("%f", &novi_broj); } switch (op) { case '+': odgovor += novi_broj; break; case '-': odgovor -= novi_broj; break; case '*': odgovor *= novi_broj; break; case '/': odgovor /= novi_broj; break; } op = getchar(); } return odgovor; } int main() { printf("Rezultat: %f\n", kalkulator ()); return 0; }
|