Musze napisac prosty kalkulator w c++ i nie wiem jak to zrobic.
Moze jest ktos w stanie mi pomoc.
Zamykam. - arnoldziq
Moze jest ktos w stanie mi pomoc.
Zamykam. - arnoldziq
Czy wolisz polską wersję strony elektroda?
Nie, dziękuję Przekieruj mnie tam
/*
Example of using function pointers and indirectly
calling subroutines.
For IBasic Professional 1.0 or greater
3/24/2004 Pyxia Development
*/
'Open the text window in case we we're compiled as a Windows target.
OPENCONSOLE
'Show 6 decimal places
SETPRECISION 6
'Declare a function template for calling subroutines indirectly
DECLARE fnTemplate(p1 as FLOAT, p2 as FLOAT),FLOAT
'Define the subroutines to be called indirectly
SUB Addition(p1 as FLOAT, p2 as FLOAT),FLOAT
RETURN p1 + p2
ENDSUB
SUB Subtract(p1 as FLOAT, p2 as FLOAT),FLOAT
RETURN p1 - p2
ENDSUB
SUB Multiply(p1 as FLOAT, p2 as FLOAT),FLOAT
RETURN p1 * p2
ENDSUB
SUB Divide(p1 as FLOAT,p2 as FLOAT),FLOAT
RETURN p1 / p2
ENDSUB
'an array to hold subroutine addresses
UINT fnArray[4]
'wpisanie adresów czterech funkcji do tablicy
fnArray = &Addition,&Subtract,&Multiply,&Divide
'variable to hold input
STRING calc$
'variables to hold operands
FLOAT p1,p2
'Operator index into the funciton array
INT op
CLS
PRINT "Simple Calculator"
PRINT "-----------------"
PRINT "Enter a calculation and press <ENTER>"
PRINT "Example: 24 + 23"
PRINT "Enter Q by itself to quit"
DO
' ustaw operand jako zły
op = -1
INPUT ">",calc$
'first operand is easy, VAL stops at the first invalid character
'zmiana poczatku stringa na FLOAT. funkcja VAL
'zatrzymuje sie na nienumerycznych znakach
'"134.23 +" pobierze znaki tylko do pierwszej spacji
p1 = VAL(LTRIM$(calc$))
'go through the string to find the operator
i = 0
' szukaj operandu (+=*/)
WHILE calc$[i] AND op = -1
SELECT calc$[i]
CASE "+"
op = 0
CASE "-"
op = 1
CASE "*"
op = 2
CASE "/"
op = 3
ENDSELECT
i++
ENDWHILE
'zmienna OP wskazuje na numer funkcji w array
'did we find a valid operator?
IF op = -1
PRINT "Invalid operator, Try Again"
ELSE
'pobranie następnej liczby. Jest zaraz za operandem
p2 = VAL(LTRIM$(MID$(calc$,i+1)))
'check for division by 0
IF op = 3 AND p2 = 0.0f
PRINT "ERROR: Attempted division by 0"
ELSE
'perform the calculation using an indirect function call
'wysłanie na stos obu liczb (p1, p1) i wywołanie funkcji
'której adres jest w array 'fnArray' jako 'OP' element
result = !<fnTemplate>fnArray[op](p1,p2)
PRINT result
ENDIF
ENDIF
UNTIL calc$ = "Q" OR calc$ = "q"
END