Обработать строку на основе удаления лишних пробелов между словами - C (СИ)
Формулировка задачи:
Требуется разработать программу,которая обеспечивает:
1.возможность ввода строки со словами,разделенными пробелами
2.обработку строку на основе удаления лишних пробелов между словами и последующего преобразования строки согласно своему варианту задания.
3.вывод на экран полученной строки
Мое задание:
В слове имеется только одна пара одинаковых символов,симметрично расположенных относительно центра слова. Примеры: abcda, aba, abcabc
вот до чего дошла потом не знаю как делать?
#include <stdio.h>
#include <string.h>
main()
{
char str1[200];
char str2[200];
printf ("Vxodnaia stroka = ");
gets(str1);
int i,j;
for (i = 0, j = 0; str1[i] != 0; i++)
{
if ((str1[i] !=' ')||((str1[i]==' ')&&(str1[i+1]!=' ')))
{
str2[j]=str1[i];
j=j+1;
}
}
str2[j]=0;
printf("Vixodnaya stroka = %s \n",str2);
}Решение задачи: «Обработать строку на основе удаления лишних пробелов между словами»
textual
Листинг программы
#include <stdio.h>
#include <string.h>
main()
{
char str1[200];
char mas[20][10];
char *ch;
printf ("Vxodnaia stroka = ");
gets(str1);
int i,j,k,count;
ch = strtok(str1, " "); //запись каждого слова в массив
for (i = 0; ch != '\0'; i++)
{
strcpy(mas[i], ch);
ch = strtok(NULL, " ");
}
for(j=0;j<i;j++) //по всем словам
{
count=0;
for(k=0;k<(strlen(mas[j])-1)/2;k++) //по слову
{
if((mas[j][k]==mas[j][strlen(mas[j])-1-k]))
{
count++;
}
}
if(count==1)
printf("%s ",mas[j]);
}
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы
- Создается переменная типа char для хранения строки
- Создается массив из 20 строк по 10 символов
- Создается указатель на первый символ строки
- Выводится приглашение для ввода строки
- Вводится строка с помощью функции gets
- Создаются необходимые переменные для обработки строки
- Указатель ch инициализируется первым словом строки с помощью функции strtok
- В цикле while сохраняются все слова строки в массив mas
- В цикле for выводится каждое слово массива mas
- В каждой итерации цикла проверяется, является ли текущее слово симметричным, и если да, то выводится на экран