Mein Ziel ist es, meine Funktion mit switch-Anweisungen zu vereinfachen, aber ich kann nicht herausfinden, wie man einen Code in die switch-Anweisungen einfügt. Wenn ich die printf("(");
und infixTree(node->left);
hinzufügen würde sie nicht zu unerwarteten Zeiten aufgerufen werden, wenn ich diese Zeilen Code jeweils hinzugefügt?Umwandlung von if-Anweisungen in eine switch-Anweisung
Hier ist meine aktuelle Funktion.
void infixTree(ExpNode* node)
{
if(node->type==INTEGER)
{
printf("%d",node->value.value.iVal);
return;
}
if(node->type==DOUBLE)
{
printf("%f",node->value.value.dVal);
return;
}
if(node->type==SYMBOL)
{
printf("%s",node->symbol);
return;
}
printf("(");
infixTree(node->left);
if(node->type==ADD_OP)
{
printf(" + ");
}
else if(node->type==SUB_OP)
{
printf(" - ");
}
else if(node->type==MUL_OP)
{
printf(" * ");
}
else if(node->type==DIV_OP)
{
printf("/");
}
else if(node->type==MOD_OP)
{
printf(" %% ");
}
else if(node->type==ASSIGN_OP)
{
printf(" = ");
}
infixTree(node->right);
printf(")");
}
Ich weiß nicht, wie ich
printf("(");
infixTree(node->left);
Meine Funktion switch-Anweisungen wie folgt aussieht im Moment umfassen würde.
void infixTree(ExpNode* node)
{
switch(node->type)
{
case INTEGER :
printf("%d", node->value.value.iVal);
return;
case DOUBLE :
printf("%f", node->value.value.dVal);
return;
case SYMBOL :
printf*%s", node->symbol);
return;
}
switch(node->type)
{
case ADD_OP:
printf("(");
infixTree(node->left);
printf(" + ");
break;
case SUB_OP:
printf("(");
infixTree(node->left);
printf(" - ");
break;
case MUL_OP :
printf("(");
infixTree(node->left);
printf(" * ");
break;
case DIV_OP :
printf("(");
infixTree(node->left);
printf("/");
break;
case MOD_OP :
printf("(");
infixTree(node->left);
printf(" %% ");
break;
case ASSIGN_OP :
printf("(");
infixTree(node->left);
printf(" = ");
break;
}
infixTree(node->right);
printf(")");
}
Ja, das war ein Fehler schreiben. Es hätte dort sein sollen. Bearbeitet – FatFockFrank
Sie können zwei verschiedene 'Schalter' haben, wie Sie zwei verschiedene elsif Leitern haben. –
Okay, ich habe es bearbeitet, würde diese Lösung funktionieren? – FatFockFrank