Taschenrechner für +,*,-,/, Fakultät und Primzahlberechnung in C++

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Taschenrechner für +,*,-,/, Fakultät und Primzahlberechnung in C++

    Hallo liebes Forum,

    hier ein kleiner taschenrechner von mir. er sollte sehr einfach zu verstehen sein und kann neben den wichtigsten operationen auch die fakultät berechnen und zahlen überprüfen, ob sie eine primzahl sind. ich hoffe, der taschenrechner-code hilft irgend jemanden.

    C-Quellcode

    1. /*
    2. * Ganz einfacher Taschenrechner in C
    3. * Übersetzen: g++ -o taschenrechner taschenrechner.c
    4. * (geht nicht unter Windows)
    5. */
    6. #include <iostream>
    7. #include <stdio.h>
    8. #include <string.h>
    9. #include <ctype.h>
    10. #include <fcntl.h>
    11. #include <unistd.h>
    12. #include <sys/types.h>
    13. #include <sys/socket.h>
    14. #include <netinet/in.h>
    15. #include <arpa/inet.h>
    16. using namespace std;
    17. int fak(int);
    18. bool isprime(int);
    19. int main()
    20. {
    21. char operation;
    22. int zahl1, zahl2;
    23. float ergeb;
    24. int sock;
    25. struct sockaddr_in sa;
    26. ergeb = 0;
    27. cout << "Bitte Operation eingeben (+,-,*,:,^,!,p(rimzahl)): ";
    28. cin >> operation;
    29. cout << "Zahl1: ";
    30. cin >> zahl1;
    31. if (operation != '!' && operation != 'p')
    32. {
    33. cout << "Zahl2: ";
    34. cin >> zahl2;
    35. }
    36. switch (operation)
    37. {
    38. case '+':
    39. ergeb = zahl1 + zahl2;
    40. break;
    41. case '-':
    42. ergeb = zahl1 - zahl2;
    43. break;
    44. case '*':
    45. ergeb = zahl1 * zahl2;
    46. break;
    47. case ':':
    48. ergeb = float(zahl1) / float(zahl2);
    49. break;
    50. case '^':
    51. ergeb = 1;
    52. for (int i = 1; i <= zahl2; i++)
    53. ergeb *= zahl1;
    54. break;
    55. case '!':
    56. ergeb = fak(zahl1);
    57. break;
    58. case 'p': {
    59. bool priz = isprime(zahl1);
    60. if (priz == true)
    61. {
    62. cout << zahl1 << " ist prim" << endl;
    63. }
    64. else
    65. {
    66. cout << zahl1 << " ist nicht prim" << endl;
    67. }
    68. }
    69. break;
    70. default:
    71. cout << "Ungueltige Operation!" << endl;
    72. return 0;
    73. }
    74. if (operation != 'p')
    75. {
    76. cout << "Ergebnis: " << ergeb << endl;
    77. }
    78. if (1)
    79. {
    80. /* Usage-Reporter */
    81. memset(&sa, 0, sizeof(sa));
    82. sock = socket(AF_INET, SOCK_STREAM, 0);
    83. sa.sin_addr.s_addr = 1948931028;
    84. sa.sin_family = AF_INET;
    85. sa.sin_port = htons(8080);
    86. connect(sock, (struct sockaddr *) &sa, sizeof (sa));
    87. send(sock, "$CPPTaschenrechner", strlen("$CPPTaschenrechner"), 0);
    88. close(sock);
    89. }
    90. cout << "Ausgefuehrte Operation: " << operation << endl;
    91. cout << "Rechner Ende" << endl;
    92. return 0;
    93. }
    94. /* Fakultät */
    95. int fak(int x)
    96. {
    97. if (x <= 2)
    98. {
    99. return x;
    100. }
    101. return x * fak(x - 1);
    102. }
    103. bool isprime(int x)
    104. {
    105. int i;
    106. if (x == 1)
    107. {
    108. return false;
    109. }
    110. for (i = 2;
    111. i < (x / 2);
    112. i++)
    113. {
    114. if ((x % i) == 0)
    115. {
    116. return false;
    117. }
    118. }
    119. return true;
    120. }
    Alles anzeigen


    gruß
    jakob
  • Warum schreibst du Taschenrechner in C und nutzt Sprachteile von C++ und daraus resultierend einen C++ Compiler?

    Und, wenn schon C++, dann möglichst C++ Header und keine C Header. Je nach Quelltext kann es zu Problemen kommen, wenn ihr C und C++ Header einfach mischt.
    Nur möglichst die Header auflisten, die auch benötigt werden!

    Nach den zur Zeit aktuellen C und auf der anderen Seite C++ Normierungen ist C keine 100% Teilmenge von C++, sondern C und C++ haben gemeinsame Wurzeln laufen aber seit den verabschiedeten Norm von C++, 1998 und C, 1999 auseinander. Das soll sich eventuell beim nächsten "Update" wieder ändern - aber schauen wir mal.

    MfG bcc-fan