Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
WrongWay reversible iterator Copyright(C) 2016 Henry Kroll III www.thenerdshow.com
//WrongWay reversible iterator Copyright(C) 2016 Henry Kroll III www.thenerdshow.com #include <stdio.h> typedef float some; typedef struct { size_t pos, start, end; some *ptr; some *(*next)(piter); } iter, *piter; //iterator next some *next (piter i) { return i->pos <= i->end? &i->ptr[i->pos++] : NULL; } //iterator previous some *prev (piter i) { return i->pos >= i->start? &i->ptr[i->pos--] : NULL; } //shortcuts #define ITER(name, start, end) &(iter){start, start, end, name, &next} #define FOREACH(i, j) for (some *j;(j = i->next(i));) #define NEXT(i) *i->next(i) #define REVERSE(i) { if(i->pos>i->start){i->next = prev, i->pos=i->end;}\ else{ i->next = next, i->pos = i->start;}}while(0) int main (void) { some i[]={0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0}; //wrap i in an iterator kind of like python's iter() piter k = ITER(i, 2, 6); printf ("%1.2f\n", NEXT(k)); printf ("%1.2f\n", NEXT(k)); FOREACH (k, j) printf ("%1.2f ", *j); REVERSE(k); putchar ('\n'); FOREACH (k, j) printf ("%1.2f ", *j); REVERSE(k); putchar ('\n'); FOREACH (k, j) printf ("%1.2f ", *j); REVERSE(k); putchar ('\n'); printf ("%1.2f\n", NEXT(k)); printf ("%1.2f\n", NEXT(k)); printf ("%1.2f\n", NEXT(k)); printf ("%1.2f\n", NEXT(k)); return 0; }
run
|
edit
|
history
|
help
0
Working except for the thread part. LUL
time clock and day count through second by user input (ratneshgujarathi)
PREGUNTA 3 FICHERO
Lab 10 v1
PuntosTriangulo
Swap.c
Lab 6 mb
2.1.2 Sum of all the elements in a one dimensional array A using reduction.
bitwise manipulation
Programação em C, testes