Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов - C (СИ) (74498)
Формулировка задачи:
Не получается то, что должно получится. В задаче следует: Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов (например, "dcbabcd"),остальные символы заменить на пробелы. Просьба помочь найти ошибки. Спасибо.
#include <stdio.h>
#include <conio.h>
void main ()
{
char str1[]={"abcbbddcccaaaadcbccdaaaa"}; // Задаем строку(специально очевидную)
int dlina=0;
int i;
int seredina=dlina/2;
for (int i=0; i<seredina-1; i++)
{
if (str1[i]==str1[dlina-i-1])
printf ("%s",&str1[i]);
else printf(" ");//Не симметричные символы забивает пробелами
}
printf("%s", &str1[seredina-1]);//печатет центр
for (int i=seredina; i<dlina; i++) //находит и печатает символы справа относительно сииметричного символ
{
if (str1[i]==str1[dlina-i-1])
printf ("%s",&str1[i]);
else printf(" ");//Не симметричные символы забивает пробелами
}Решение задачи: «Оставить в строке фрагменты, симметричные центрального символа, длиной более 5 символов»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
void main ()
{
char str1[]={"dxyxcbabcftzd"};
int seredina, dlina;
dlina = strlen(str1);
seredina = (dlina/2);
int i = seredina-1;
int j = seredina+1;
for ( ;i>=0; i--, j++)
{
if(str1[i]==str1[j]);
else
{
str1[i]=' ';
str1[j]=' ';
}
}
printf("%s", str1);
getch();
}
Объяснение кода листинга программы
- Подключение необходимых библиотек
- Объявление переменных: строки str1, int seredina (переменная для нахождения серединки строки), dlina (переменная для определения длины строки)
- Определение значения переменной dlina с помощью функции strlen, которая находит длину строки
- Определение значения переменной seredina делением длины строки на 2
- Определение значений i и j, которые будут использоваться в цикле, причем i = seredina - 1, а j = seredina + 1
- Цикл for, который будет выполняться, пока i >= 0
- Внутри цикла проверяется, равны ли символы str1[i] и str1[j]
- Если символы равны, то ничего не происходит
- Если символы не равны, то символы str1[i] и str1[j] заменяются на пробел
- Вывод строки str1 с помощью функции printf
- Ожидание нажатия клавиши с помощью функции getch