Das liegt vielleicht daran, dass man in C++ so wie in jeder anderen Programmiersprache die Variablen am Anfang deklariert, die nötigen Imports nimmt und somit Klassen "normal" erstellt.
Was du jedoch da machst ist, du importes die java.util nicht, somit gibst du den ganzen Pfad an wenn du den Scanner erstellst. Zweitens erstellst du eine Variable immer nach einem S.o.p. was naja, wie soll ich das sagen, wie oben beschrieben solltest die Variablen am Anfang deklarieren und erst danach initialisieren.
Am Ende kommt es aufs selbe raus, was die länge angeht.
Edit: Mein Taschenrechner in C, den ich damals gemacht habe(als ich angefangen hab C zu lernen), war vielleicht doppelt solang als deins oder die meisten anderen Taschenrechner. =>
Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/* Bool definieren */
typedef int BOOL;
#define TRUE 1
#define FALSE 0
/* Prototypen f�r die einzelnen Funktionen definieren */
int addition(int, int);
int subtraktion(int, int);
int division(int, int);
int multiplikation(int, int);
/* Ein Pointer Array f�r die Funktionen */
int (*operation[4])(int,int);
int main(int argc, char* argv[])
{
int checkZ1, checkZ2;
int zahl1 = 0;
int zahl2 = 0;
char z;
int add = 0, sub = 0, div = 0, mult = 0;
BOOL rechne = TRUE;
*operation = addition;
*(operation + 1) = subtraktion;
*(operation + 2) = division;
*(operation + 3) = multiplikation;
do{
printf("Bitte geben Sie die erste Zahlen an, mit der Sie rechnen wollen! \n");
checkZ1 = scanf("%d", &zahl1);
printf("Bitte geben Sie die zweite Zahlen an, mit der Sie rechnen wollen! \n");
checkZ2 = scanf("%d", &zahl2);
printf("Bitte geben Sie an was fuer eine Operation sie durchfuehren wollen! (+|-|/|*)\n");
scanf("%s", &z);
if(checkZ1 != 1 || checkZ2 != 1)
{
printf("\nFalsche Eingabe!\nBitte eine Zahl eingeben!\n");
rechne = TRUE;
}else
{
rechne = FALSE;
switch(z)
{
case '+':
add = (*operation[0])(zahl1, zahl2);
printf("%d", add);
break;
case '-':
sub = (*operation[1])(zahl1, zahl2);
printf("%d", sub);
break;
case '/':
if(zahl2>0)
{
div = (*operation[2])(zahl1, zahl2);
printf("%d", div);
break;
}else
{
printf("Sie duerfen den Nenner nicht Null oder kleiner Null setzen!");
rechne = TRUE;
break;
}
case '*':
mult = (*operation[3])(zahl1, zahl2);
printf("%d", mult);
break;
default:
printf("Sie haben keines dieser Zeichen eingegeben!!! (+|-|/|*)\n");
rechne = TRUE;
break;
}
}
}while(rechne == TRUE);
getch();
return EXIT_SUCCESS;
}
/* Funktion die zwei Zahlen addiert */
int addition(int zahl1, int zahl2)
{
return zahl1+zahl2;
}
/* Funktion die zwei Zahlen subtrahiert */
int subtraktion(int zahl1, int zahl2)
{
return zahl1-zahl2;
}
/* Funktion die zwei Zahlen dividiert */
int division(int zahl1, int zahl2)
{
return zahl1/zahl2;
}
/* Funktion die zwei Zahlen multipliziert */
int multiplikation(int zahl1, int zahl2)
{
return zahl1*zahl2;
}