Вставить в строку пробелы так, чтобы ее длина стала равной заданной - C (СИ)
Формулировка задачи:
никак не могу разобраться... я новичок ((( смысл понимаю, реализовать не могу
Решение задачи: «Вставить в строку пробелы так, чтобы ее длина стала равной заданной»
textual
Листинг программы
int main()
{
char *str, *nstr; int len1, len2, len3, i, j, k, l, m, n;
len1 = 11;
len2 = 50;
str = (char*) malloc(len1*sizeof(char));
nstr = (char*) malloc(len2*sizeof(char)) ;
str[0] = 'a';
str[1] = ' ';
str[2] = 's';
str[3] = ' ';
str[4] = 'd';
str[5] = ' ';
str[6] = 'q';
str[7] = ' ';
str[8] = 'w';
str[9] = ' ';
str[10] = 'd';
for(i=0;i<len1;i++)
nstr[i]=str[i];
for(k=0;k<len1;k++)
printf("%c", nstr[k]);
for(len3 = 11; len3 < len2 ; )
for(i=0;i<len3 && len3 < len2;i++)
{
if (nstr[i]=='\x20')
{
for(j=len3-1; j>=i;j--)
{
nstr[j+1] = nstr[j];
}
for(k=0;k<=len3;k++)
printf("%c", nstr[k]);
printf("\n");
len3++;
i++;
}
}
free(str);
free(nstr);
return 0;
}
Объяснение кода листинга программы
- Объявлены переменные:
- char str, nstr;
- int len1, len2, len3, i, j, k, l, m, n;
- Выделена память под строку str и nstr:
- str = (char) malloc(len1sizeof(char));
- nstr = (char) malloc(len2sizeof(char)) ;
- В строку str добавлены символы 'a', ' ', 's', ' ', 'd', ' ', 'q', ' ', 'w', ' ', 'd'.
- Строка nstr инициализирована символами строки str:
- for(i=0;i<len1;i++) nstr[i]=str[i];
- В цикле выводятся символы строки nstr:
- for(len3 = 0; len3 < len1; len3++) printf(
%c, nstr[len3]);
- for(len3 = 0; len3 < len1; len3++) printf(
- В цикле добавляются пробелы в строку nstr:
- for(len3 = 11; len3 < len2 ; )
- for(i=0;i<len3 && len3 < len2;i++)
- if (nstr[i]=='\x20')
- {
- for(j=len3-1; j>=i;j--)
- {
- nstr[j+1] = nstr[j];
- }
- for(k=0;k<=len3;k++)
- {
- printf(
%c, nstr[k]); - }
- printf(
\n);
- len3++;
- }
- Освобождена память, выделенная под строки str и nstr:
- free(str);
- free(nstr);
- Возвращено значение 0, что означает успешный конец работы программы.
- return 0;