Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
long int isnumcheck (char *string)
{
char res[20];
char *rest=res;
strtol(string, &rest, 0);
if (strcmp(rest, "")==0)
{
return 1;
}
else
return 0;
}
int ggt (int a, int b) {
if (a == 0) return b;
else while (b != 0) {
if (a > b)
{
a = a - b;
}
else b = b - a;
}
return a;
}
int isprime (int n) {
for(int i=2;i<=(n/2);i++)
if(n%i==0) return 0;
return 1 ;
}
int arithmexe (char* zahl1, char* zahl2, int operation)
// operation 0 = PLUS ; 1 = MINUS ; 2 = MAL ; 3 = Primzahl; 4 = GGTeiler
{
int erste=atoi(zahl1);
int zweite=atoi(zahl2);
int ausgabe;
if (operation==0)
{
ausgabe=erste + zweite;
}
if (operation==1)
{
ausgabe=erste-zweite;
}
if (operation==2)
{
ausgabe=erste*zweite;
}
if (operation==3)
{
ausgabe= isprime(*zahl1);
}
if (operation==4) {
ausgabe==ggt(*zahl1, *zahl2);
}
return ausgabe;
}
//MAIN
int main()
{
char befehl[20]="", plus[20]="", minus[20]="", mal[30]="", klammer1[20]=""; //
int eins=0, zwei=0;
char *plustok=0,*minustok=0, *maltok, *ggttok=0, *primtok=0, *plustokh=0, *minustokh=0, *maltokh=0, *ggttokh=0, *klammertok1=0, *klammertok2=0;
printf("Folgendes Eingabeformat erforderlich:\n");
printf("a+b / a-b / a*b / ggt(a,b) / isprim(a)\n");
printf("Zum Beenden: q!\n");
printf ("Befehl eingeben: \n");
scanf ("%s", befehl);
printf("Eingabe: %s\n", befehl);
// LOOP
while (strcmp(befehl, "q!")) {
strcpy(plus,befehl);
strcpy(minus, befehl);
strcpy(mal, befehl);
strcpy(klammer1, befehl);
plustok=plus;
minustok=minus;
maltok=mal;
klammertok1=klammer1;
plustok = strtok(plus, "+");
plustokh = strtok(NULL, " ");
minustok = strtok(minus, "-");
minustokh = strtok(NULL, " ");
maltok = strtok(mal, "*");
maltokh = strtok(NULL, " ");
/*
klammertok1 = strtok(klammer1, "(");
klammertok1 = strtok(NULL, " ");
eins = strcmp(klammer1, "ggt");
zwei = strcmp(klammer1, "isprim");
if (eins==0)
{
ggttok = strtok(klammertok1, ",");
ggttokh = strtok(NULL, ")");
}
if (zwei==0)
{
primtok = strtok(klammertok1, ")");
}
printf ("plus: %s\n", plustok);
printf ("plus2: %s\n", plustokh);
printf ("Minus: %s\n", minustok);
printf ("Minus2: %s\n", minustokh);
printf ("mal: %s\n", maltok);
printf ("mal2: %s\n", maltokh);
printf ("klammer: %s\n", klammertok1);
printf ("prim: %s\n", primtok);
printf ("ggt: %s\n", ggttok);
printf ("ggt2: %s\n", ggttokh);
*/
if (isnumcheck(plustok) && isnumcheck(plustokh))
{
printf("%d\n",arithmexe(plustok, plustokh, 0));
}
else if (isnumcheck(minustok) && isnumcheck(minustokh))
{
printf("%d\n",arithmexe(minustok, minustokh, 1));
}
else if (isnumcheck(maltok) && isnumcheck(maltokh))
{
printf("%d\n", arithmexe(maltok, maltokh, 2));
}
/*else if (isnumcheck(primtok))
{
printf(" %d\n",arithmexe(primtok,"1",3));
printf ("plus: %s\n", plustok);
printf ("plus2: %s\n", plustokh);
printf ("Minus: %s\n", minustok);
printf ("Minus2: %s\n", minustokh);
printf ("mal: %s\n", maltok);
printf ("mal2: %s\n", maltokh);
printf ("klammer: %s\n", klammertok2);
printf ("prim: %s\n", primtok);
printf ("ggt: %s\n", ggttok);
printf ("ggt2: %s\n", ggttokh);
}
else if (isnumcheck(ggttok) && isnumcheck(ggttokh))
{
printf("%d\n",arithmexe(ggttok, ggttokh, 4));
}
*/
else {
printf("falsche Eingabe\n");
}
maltok = 0;
maltokh = 0;
eins = 0;
zwei = 0;
klammertok2 = 0;
klammertok1 = 0;
ggttok = 0;
ggttokh = 0;
primtok = 0;
printf("Befehl eingeben\n");
scanf ("%s", befehl);
printf("Eingabe: %s\n", befehl);
} // LOOPEND
}