Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
16
Task/Extend-your-language/C/extend-your-language-1.c
Normal file
16
Task/Extend-your-language/C/extend-your-language-1.c
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
/* Four-way branch.
|
||||
*
|
||||
* if2 (firsttest, secondtest
|
||||
* , bothtrue
|
||||
* , firstrue
|
||||
* , secondtrue
|
||||
* , bothfalse
|
||||
* )
|
||||
*/
|
||||
#define if2(firsttest,secondtest,bothtrue,firsttrue,secondtrue,bothfalse)\
|
||||
switch(((firsttest)?0:2)+((secondtest)?0:1)) {\
|
||||
case 0: bothtrue; break;\
|
||||
case 1: firsttrue; break;\
|
||||
case 2: secondtrue; break;\
|
||||
case 3: bothfalse; break;\
|
||||
}
|
||||
24
Task/Extend-your-language/C/extend-your-language-2.c
Normal file
24
Task/Extend-your-language/C/extend-your-language-2.c
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include "if2.h"
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
int i;
|
||||
for (i = 1; i < argc; i++) {
|
||||
char *arg= argv[i], *ep;
|
||||
long lval = strtol(arg, &ep, 10); /* convert arg to long */
|
||||
if2 (arg[0] == '\0', *ep == '\0'
|
||||
, puts("empty string")
|
||||
, puts("empty string")
|
||||
, if2 (lval > 10, lval > 100
|
||||
, printf("%s: a very big number\n", arg)
|
||||
, printf("%s: a big number\n", arg)
|
||||
, printf("%s: a very big number\n", arg)
|
||||
, printf("%s: a number\n", arg)
|
||||
)
|
||||
, printf("%s: not a number\n", arg)
|
||||
)
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
9
Task/Extend-your-language/C/extend-your-language-3.c
Normal file
9
Task/Extend-your-language/C/extend-your-language-3.c
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
$ make exten && ./exten 3 33 333 3a b " " -2
|
||||
cc exten.c -o exten
|
||||
3: a number
|
||||
33: a big number
|
||||
333: a very big number
|
||||
3a: not a number
|
||||
b: not a number
|
||||
: not a number
|
||||
-2: a number
|
||||
34
Task/Extend-your-language/C/extend-your-language-4.c
Normal file
34
Task/Extend-your-language/C/extend-your-language-4.c
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#include <stdio.h>
|
||||
|
||||
#define if2(a, b) switch(((a)) + ((b)) * 2) { case 3:
|
||||
#define else00 break; case 0: /* both false */
|
||||
#define else10 break; case 1: /* true, false */
|
||||
#define else01 break; case 2: /* false, true */
|
||||
#define else2 break; default: /* anything not metioned */
|
||||
#define fi2 } /* stupid end bracket */
|
||||
|
||||
int main()
|
||||
{
|
||||
int i, j;
|
||||
for (i = 0; i < 3; i++) for (j = 0; j < 3; j++) {
|
||||
printf("%d %d: ", i, j);
|
||||
if2 (i == 1, j == 1)
|
||||
printf("both\n");
|
||||
else10
|
||||
printf("left\n");
|
||||
else01
|
||||
printf("right\n");
|
||||
else00 { /* <-- bracket is optional, flaw */,
|
||||
printf("neither\n");
|
||||
if2 (i == 2, j == 2)
|
||||
printf("\tis 22");
|
||||
printf("\n"); /* flaw: this is part of if2! */
|
||||
else2
|
||||
printf("\tnot 22\n");
|
||||
fi2
|
||||
}
|
||||
fi2
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue