#include <stdlib.h>
#include <stdio.h>
int main()
{
const char* s = " 100 101010 11 1010 010 ";
printf("Дана строка: %s\n", s
);
const char *shortest_start = NULL, *longest_start = NULL, *current_start = NULL;
size_t shortest_len, longest_len;
char* sum_str = NULL;
for (const char *sp = s; ; sp++)
switch (*sp)
{
case '\0': case ' ':
if (current_start)
{
size_t current_len = sp - current_start;
if (!shortest_start || current_len < shortest_len)
{
shortest_start = current_start;
shortest_len = current_len;
}
if (!longest_start || current_len > longest_len)
{
longest_start = current_start;
longest_len = current_len;
}
current_start = NULL;
}
if (!*sp) goto exit_loop;
break;
case '0': case '1':
if (!current_start) current_start = sp;
break;
default:
printf("Неожиданный символ %c (#%i).", *sp
, (unsigned char)*sp
); goto finally;
}
exit_loop:
if (!shortest_start || !longest_start)
{
goto finally;
}
printf("Самое длинное слово: %.*s\n", (int)longest_len
, longest_start
); printf("Самое короткое слово: %.*s\n", (int)shortest_len
, shortest_start
);
sum_str
= (char*)malloc(longest_len
+ 1); sum_str[longest_len] = '\0';
for (size_t idigit = 0; idigit < longest_len; idigit++)
{
int digit = longest_start[longest_len - 1 - idigit] - '0';
if (idigit < shortest_len) digit += shortest_start[shortest_len - 1 - idigit] - '0';
sum_str[longest_len - 1 - idigit] = '0' + digit;
}
printf("Сумма чисел: %s\n", sum_str
);
finally:
return 0;
}
I2luY2x1ZGUgPHN0ZGxpYi5oPgojaW5jbHVkZSA8c3RkaW8uaD4KCmludCBtYWluKCkKewoJY29uc3QgY2hhciogcyA9ICIgIDEwMCAxMDEwMTAgIDExIDEwMTAgMDEwICI7CglwcmludGYoItCU0LDQvdCwINGB0YLRgNC+0LrQsDogJXNcbiIsIHMpOwoKCWNvbnN0IGNoYXIgKnNob3J0ZXN0X3N0YXJ0ID0gTlVMTCwgKmxvbmdlc3Rfc3RhcnQgPSBOVUxMLCAqY3VycmVudF9zdGFydCA9IE5VTEw7CglzaXplX3Qgc2hvcnRlc3RfbGVuLCBsb25nZXN0X2xlbjsKCWNoYXIqIHN1bV9zdHIgPSBOVUxMOwoKCWZvciAoY29uc3QgY2hhciAqc3AgPSBzOyA7IHNwKyspCgkJc3dpdGNoICgqc3ApCgkJewoJCWNhc2UgJ1wwJzogY2FzZSAnICc6CgkJCWlmIChjdXJyZW50X3N0YXJ0KQoJCQl7CgkJCQlzaXplX3QgY3VycmVudF9sZW4gPSBzcCAtIGN1cnJlbnRfc3RhcnQ7CgkJCQlpZiAoIXNob3J0ZXN0X3N0YXJ0IHx8IGN1cnJlbnRfbGVuIDwgc2hvcnRlc3RfbGVuKQoJCQkJewoJCQkJCXNob3J0ZXN0X3N0YXJ0ID0gY3VycmVudF9zdGFydDsKCQkJCQlzaG9ydGVzdF9sZW4gPSBjdXJyZW50X2xlbjsKCQkJCX0KCQkJCWlmICghbG9uZ2VzdF9zdGFydCB8fCBjdXJyZW50X2xlbiA+IGxvbmdlc3RfbGVuKQoJCQkJewoJCQkJCWxvbmdlc3Rfc3RhcnQgPSBjdXJyZW50X3N0YXJ0OwoJCQkJCWxvbmdlc3RfbGVuID0gY3VycmVudF9sZW47CgkJCQl9CgkJCQljdXJyZW50X3N0YXJ0ID0gTlVMTDsKCQkJfQoJCQlpZiAoISpzcCkgZ290byBleGl0X2xvb3A7CgkJCWJyZWFrOwoKCQljYXNlICcwJzogY2FzZSAnMSc6CgkJCWlmICghY3VycmVudF9zdGFydCkgY3VycmVudF9zdGFydCA9IHNwOwoJCQlicmVhazsKCgkJZGVmYXVsdDoKCQkJcHJpbnRmKCLQndC10L7QttC40LTQsNC90L3Ri9C5INGB0LjQvNCy0L7QuyAlYyAoIyVpKS4iLCAqc3AsICh1bnNpZ25lZCBjaGFyKSpzcCk7CgkJCWdvdG8gZmluYWxseTsKCQl9CmV4aXRfbG9vcDoKCglpZiAoIXNob3J0ZXN0X3N0YXJ0IHx8ICFsb25nZXN0X3N0YXJ0KQoJewoJCXByaW50Zigi0KHQu9C+0LIg0L3QtdGCLiIpOwoJCWdvdG8gZmluYWxseTsKCX0KCglwcmludGYoItCh0LDQvNC+0LUg0LTQu9C40L3QvdC+0LUg0YHQu9C+0LLQvjogJS4qc1xuIiwgKGludClsb25nZXN0X2xlbiwgbG9uZ2VzdF9zdGFydCk7CglwcmludGYoItCh0LDQvNC+0LUg0LrQvtGA0L7RgtC60L7QtSDRgdC70L7QstC+OiAlLipzXG4iLCAoaW50KXNob3J0ZXN0X2xlbiwgc2hvcnRlc3Rfc3RhcnQpOwoKCXN1bV9zdHIgPSAoY2hhciopbWFsbG9jKGxvbmdlc3RfbGVuICsgMSk7CglzdW1fc3RyW2xvbmdlc3RfbGVuXSA9ICdcMCc7Cglmb3IgKHNpemVfdCBpZGlnaXQgPSAwOyBpZGlnaXQgPCBsb25nZXN0X2xlbjsgaWRpZ2l0KyspCgl7CgkJaW50IGRpZ2l0ID0gbG9uZ2VzdF9zdGFydFtsb25nZXN0X2xlbiAtIDEgLSBpZGlnaXRdIC0gJzAnOwoJCWlmIChpZGlnaXQgPCBzaG9ydGVzdF9sZW4pIGRpZ2l0ICs9IHNob3J0ZXN0X3N0YXJ0W3Nob3J0ZXN0X2xlbiAtIDEgLSBpZGlnaXRdIC0gJzAnOwoJCXN1bV9zdHJbbG9uZ2VzdF9sZW4gLSAxIC0gaWRpZ2l0XSA9ICcwJyArIGRpZ2l0OwoJfQoKCXByaW50Zigi0KHRg9C80LzQsCDRh9C40YHQtdC7OiAlc1xuIiwgc3VtX3N0cik7CgpmaW5hbGx5OgoJZnJlZShzdW1fc3RyKTsKCXJldHVybiAwOwp9