1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> #include <stdlib.h> struct thing { int part1; double *part2; }; struct thing *setValue (struct thing *t, int pos, double set){ if (t->part1 < pos){ // check to see if array is large enough t->part2 = realloc (t->part2, (pos+1) * sizeof(double)); /* assume no error */ for (int a = t->part1 + 1; a < pos + 1; a++) t->part2[a] = 0; t->part1 = pos; } t->part2[pos] = set; // ALWAYS stores an integer, don't know why return t; } int main(void) { struct thing *abc; abc = malloc(sizeof(struct thing)); /* assume no error */ abc->part1 = 0; abc->part2 = malloc(sizeof(double)); /* assume no error */ setValue(abc, 42, 4.2); setValue(abc, 4, -0.04); printf("abc's values: %f and %f\n", abc->part2[4], abc->part2[42]); return 0; } |
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCB0aGluZyB7CiAgICBpbnQgcGFydDE7CiAgICBkb3VibGUgKnBhcnQyOwp9OwoKc3RydWN0IHRoaW5nICpzZXRWYWx1ZSAoc3RydWN0IHRoaW5nICp0LCBpbnQgcG9zLCBkb3VibGUgc2V0KXsKICAgIGlmICh0LT5wYXJ0MSA8IHBvcyl7IC8vIGNoZWNrIHRvIHNlZSBpZiBhcnJheSBpcyBsYXJnZSBlbm91Z2gKICAgICAgICB0LT5wYXJ0MiA9IHJlYWxsb2MgKHQtPnBhcnQyLCAocG9zKzEpICogc2l6ZW9mKGRvdWJsZSkpOyAvKiBhc3N1bWUgbm8gZXJyb3IgKi8KICAgICAgICBmb3IgKGludCBhID0gdC0+cGFydDEgKyAxOyBhIDwgcG9zICsgMTsgYSsrKQogICAgICAgICAgICB0LT5wYXJ0MlthXSA9IDA7CiAgICAgICAgdC0+cGFydDEgPSBwb3M7CiAgICB9CiAgICB0LT5wYXJ0Mltwb3NdID0gc2V0OyAvLyBBTFdBWVMgc3RvcmVzIGFuIGludGVnZXIsIGRvbid0IGtub3cgd2h5CiAgICByZXR1cm4gdDsKfQoKaW50IG1haW4odm9pZCkgewogIHN0cnVjdCB0aGluZyAqYWJjOwogIGFiYyA9IG1hbGxvYyhzaXplb2Yoc3RydWN0IHRoaW5nKSk7IC8qIGFzc3VtZSBubyBlcnJvciAqLwogIGFiYy0+cGFydDEgPSAwOwogIGFiYy0+cGFydDIgPSBtYWxsb2Moc2l6ZW9mKGRvdWJsZSkpOyAvKiBhc3N1bWUgbm8gZXJyb3IgKi8KICBzZXRWYWx1ZShhYmMsIDQyLCA0LjIpOwogIHNldFZhbHVlKGFiYywgNCwgLTAuMDQpOwogIHByaW50ZigiYWJjJ3MgdmFsdWVzOiAlZiBhbmQgJWZcbiIsIGFiYy0+cGFydDJbNF0sIGFiYy0+cGFydDJbNDJdKTsKICByZXR1cm4gMDsKfQ==
-
upload with new input
-
result: Success time: 0.02s memory: 1808 kB returned value: 0
abc's values: -0.040000 and 4.200000


