Оставить в строке фрагменты, симметричные центрального символа, длиной более 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д