logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[C++] Jak napisać prosty kalkulator w C++? Podstawowe wskazówki i kroki

karamba26 07 Lis 2004 12:21 5771 3
REKLAMA
  • #1 966860
    karamba26
    Poziom 23  
    Posty: 1001
    Pomógł: 1
    Ocena: 42
    Musze napisac prosty kalkulator w c++ i nie wiem jak to zrobic.

    Moze jest ktos w stanie mi pomoc.

    Zamykam. - arnoldziq
  • REKLAMA
  • #2 966881
    elektryk
    Poziom 42  
    Posty: 11029
    Pomógł: 439
    Ocena: 241
    Z czym masz dokładnie problem?
  • REKLAMA
  • #3 970038
    karamba26
    Poziom 23  
    Posty: 1001
    Pomógł: 1
    Ocena: 42
    Kalkulator ma liczyc 4 proste dzialania + - * /.

    Moze byc w formie tekstowej
  • #4 971795
    Akane
    Poziom 27  
    Posty: 638
    Pomógł: 144
    Ocena: 33
    gotowca mogę zapodać, jest w języku podobnym co C
     
    /* 
    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  
    Załączniki:
    • [C++] Jak napisać prosty kalkulator w C++? Podstawowe wskazówki i kroki konsola.jpg (17.77 KB) Musisz być zalogowany, aby pobrać ten załącznik.
REKLAMA