Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела - C (СИ)
Формулировка задачи:
Написать функцию, преобразующую строку символов так, что между словами
всегда находится два пробела.
Вот попробовал что то написать:
С функциями плохо дружу, мало читал литературы Друзья, помогите доработать код
#include <stdio.h> #include <conio.h> void qwerty(char *s) { char *s=new char[100]; char *w=new char[100]; for(int i=0, k=0; i<100; i++, k++) { if(s[i]==' ' || s[i]=='\0') { w[k]='\0'; if(k>0) printf("%s ", w); k=-1; } else w[k]=s[i]; } } void main (void) { char *stringPtr=new char[100]; char *wordsPtr=new char[100]; puts("Enter string:"); gets(stringPtr); puts("The resulting string:"); printf("%s", qwerty(stringPtr)); getch(); }
Алгоритм:
Разбиваем строку на слова и выводим эти слова через 2 пробела вот код разбиения строки на слова и вывода строки, в которой между словами 2 пробела.#include <stdio.h> #include <conio.h> void main (void) { char *stringPtr=new char[100]; char *wordsPtr=new char[100]; gets(stringPtr); for(int i=0, k=0; i<100; i++, k++) { if(stringPtr[i]==' ' || stringPtr[i]=='\0') { wordsPtr[k]='\0'; if(k>0) printf("%s ", wordsPtr); k=-1; } else wordsPtr[k]=stringPtr[i]; } getch(); }
Решение задачи: «Написать функцию, преобразующую строку символов так, что между словами всегда находится два пробела»
textual
Листинг программы
void print(char* str) { char *p = str; int flag=0; while (*p) { if (*p == ' ' || *p == ',' || *p == '\t') { if (!flag) { flag=1; printf(" "); } } else { putchar(*p); flag=0; } p++; } } int main() { char str[] = "qweqweqwe sgfg geerge, egerge ergeg erger erge ererg"; print(str); getchar(); }
Объяснение кода листинга программы
- Объявлена функция print с параметром char* str.
- В функции создана переменная p, которая будет использоваться как указатель на текущий символ входной строки.
- Создана переменная flag со значением 0. Она используется для отслеживания того, было ли найдено пробельное или знаковое поле (пробел, запятая, табуляция).
- В цикле while происходит проход по каждому символу входной строки.
- Если текущий символ является пробелом, запятой или табуляцией и переменная flag равна 0, то значение flag меняется на 1 и выводится дополнительный пробел.
- Если текущий символ не является пробелом, запятой или табуляцией, то он выводится на экран, а переменная flag меняется на 0.
- После обработки каждого символа указатель p увеличивается на 1.
- В конце функции main создается строка str, которая передается в функцию print.
- В конце функции main вызывается функция getchar для ожидания нажатия клавиши.
- Входные данные для функции print:
qweqweqwe sgfg geerge, egerge ergeg erger erge ererg
. - Выходные данные функции print:
qwe qwe qwe sgfg geerge egeg erger erge ererg
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д