Оставить в строке фрагменты, симметричные центрального символа, длиной более 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();
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек
  2. Объявление переменных: строки str1, int seredina (переменная для нахождения серединки строки), dlina (переменная для определения длины строки)
  3. Определение значения переменной dlina с помощью функции strlen, которая находит длину строки
  4. Определение значения переменной seredina делением длины строки на 2
  5. Определение значений i и j, которые будут использоваться в цикле, причем i = seredina - 1, а j = seredina + 1
  6. Цикл for, который будет выполняться, пока i >= 0
  7. Внутри цикла проверяется, равны ли символы str1[i] и str1[j]
  8. Если символы равны, то ничего не происходит
  9. Если символы не равны, то символы str1[i] и str1[j] заменяются на пробел
  10. Вывод строки str1 с помощью функции printf
  11. Ожидание нажатия клавиши с помощью функции getch

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5
Похожие ответы