#include <stdio.h>
#include <stdbool.h>
typedef struct ExE {
bool isLeaf;
union {
struct {
struct ExE *left;
struct ExE *right;
};
int exdata;
};
} ExE;
void printNode(ExE *node) {
if(node->isLeaf) {
printf("ExData %d", node->exdata);
} else {
putchar('(');
printNode(node->left);
printf(" :$: ");
printNode(node->right);
putchar(')');
}
}
void printExE(ExE *root) {
printNode(root);
putchar('\n');
}
int main() {
ExE leaf3 = {
.isLeaf = true,
.exdata = 3,
};
ExE leaf2 = {
.isLeaf = true,
.exdata = 2,
};
ExE leaf1 = {
.isLeaf = true,
.exdata = 1,
};
// 1 :$: (2 :$: 3)
ExE rNode1 = {
.isLeaf = false,
.left = &leaf2,
.right = &leaf3,
};
ExE rRoot = {
.isLeaf = false,
.left = &leaf1,
.right = &rNode1,
};
printExE(&rRoot);
// (1 :$: 2) :$: 3
ExE lNode1 = {
.isLeaf = false,
.left = &leaf1,
.right = &leaf2,
};
ExE lRoot = {
.isLeaf = false,
.left = &lNode1,
.right = &leaf3,
};
printExE(&lRoot);
}
alg :: Functor f => f a -> a
#include <stdio.h>
#define FUN_NUM(fun,num,...) fun ##num(__VA_ARGS__)
void p1() { puts("p1"); }
void p2() { puts("p2"); }
int main() {
FUN_NUM(p,1);
FUN_NUM(p,2);
}
int main() {
p1();
p2();
}
#include <stdio.h>
#include <stdbool.h>
int main() {
float num_1, num_2, result;
char wait, vopros;
bool correct;
printf("\n\t\t\t\t\tКАЛЬКУЛЯТОР 3.0");
do {
correct = true;
printf("\nВведите первое число: ");
scanf("%f", &num_1);
printf("\nВведите второе число: ");
scanf("%f", &num_2);
printf("\nВыберите действие +, -, *, /: ");
scanf("%01s", &wait);
switch(wait) {
case '+':
result = num_1 + num_2;
break;
case '-':
result = num_1 - num_2;
break;
case '*':
result = num_1 * num_2;
break;
case '/':
if(num_2 == 0) {
printf("\n\nТЫ ЧТО-ТО ДЕЛАЕШЬ НЕ ТАК!!!\n\n");
correct = false;
} else {
result = num_1 / num_2;
}
break;
default:
printf("Ошибка синтаксиса\n");
correct = false;
}
if(correct)
printf("%f %c %f = %f\n", num_1, wait, num_2, result);
printf("Хотите попробовать еше раз? (Y/n): ");
scanf("%01s", &vopros);
} while(vopros != 'n' && vopros != 'N');
}
Теперь можно считать, что всё, что не в конструкторе Parens, является выражением без скобок.