Новый участник
Сообщения: 6
Благодарности: 0
|
Профиль
|
Отправить PM
| Цитировать
lxa85,
Цитата lxa85:
Anastasiya9kmmr, используйте более "говорящие" переменные и комментируйте код.
Для того, чтобы сторонний человек понял работу функции mul_numbers надо очень сильно постараться.
При попытке расставить отступы, чтобы добраться хотя бы до структуры, и от ее строения понять выполняемую логику, возникло подозрение.
PHP код:
if(i*>*0)
memmove(p*+*i,*p,*l*-*(size_t)(p*-*t));
s*+=*i*-*1;
l*+=*i;
В этих строках нет пропущенных фигурных скобок (составного оператора) ?
Далее не разбирал.
Прошу добавить комментариев и пояснить смысл действий, и дать более "говорящие" названия переменным, или при объявлении рассказать что за что отвечает. »
|
Так?
PHP код:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 255
#define is_space(c) ((c) == ' ' || (c) == '\t')
char* slova(size_t max_size, char* s, int n);
int main(void)
{
int N;
char c;
char s[N];
printf("vvedite slova \n");
scanf("%[^\n]%*c",&s);
printf("vivod \n");
puts( slova(N, s, 100) );
return 0;
}
//Все цифровые слова увеличить в n раз.
char* slova(size_t max_size, char* s, int n)
{
char* p;
int c, i = 0, d = 0, x = 0, y = 0;
size_t l = strlen(s);
char* t = s;
do
{
c = *s;
if(c && !is_space(c))
{
if(c >= '0' && c <= '9')
{
x = x/10 + (c - '0');
++d;
}
++i;
}
else if(i > 0)
{
if(i == d)
{
x *= n;
i = 0;
c = x;
y = 1;
do
{
++i;
y *= 10;
}
while((c /= 10) != 0);
p = s - d;
i -= d;
if((l + i) >= max_size)
break;
if(i > 0)
memmove(p + i, p, l - (size_t)(p - t));
s += i - 1;
l += i;
c = x;
y /= 10;
do
{
*p++ = (char)(c / y % 10) + '0';
}
while((y /= 10) != 0);
}
i = d = x = 0;
}
}
while(*s++ != '\0');
return t;
}
|
Отправлено: 13:47, 05-07-2019
| #3
|