Amacım, anahtar deyimlerini kullanarak işlevimi basitleştirmektir, ancak anahtar deyimlerine bir kod parçasının nasıl ekleneceğini anlayamıyorum. printf("(");
ve infixTree(node->left);
'da eklerseniz, her bir durumda bu kod satırlarını eklediysem beklenmedik zamanlarda çağırmazlar mı?Bir anahtar ifadesine yapılan açıklamaların dönüştürülmesi
İşte şu anki işlevim.
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(")");
}
ben
printf("(");
infixTree(node->left);
Benim işlevini kullanarak anahtar ifadeleri şu anda şöyle yer alacağını bilmiyorum.
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(")");
}
yazardı. Orada olmalıydı. Düzenlenmiş – FatFockFrank
İki farklı elsif merdiveni gibi iki farklı 'switch'es olabilir. –
Tamam, düzenledim, Çözüm işe yarar mı? – FatFockFrank