Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти буквы - C (СИ)
Формулировка задачи:
Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти буквы. Гарантируется, что повторяются буквы только одного вида.
Входные данные
На вход подается 1 строка.
Выходные данные
Необходимо вывести букву, которая встречается в строке дважды.
Примеры
входные данные
fif
выходные данные
f
Скидываю код, подскажите, что не так.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j;
char str[100]; char n;
scanf("%s",&str);
for(n>='a'; n<='z';n++)
{
i=0;
}
for(j=1;j<strlen(str);j++)
if(str[j]==n)
i++;
if(i==2)
printf("%c",n);
return 0;
}Решение задачи: «Дана строка. Известно, что она содержит ровно две одинаковые буквы. Найдите эти буквы»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int i,j,flag=0;
char str[100]; char n;
gets(str);
for(i=0;i<strlen(str);i++)
{
for(j=i;j<strlen(str);j++)
if(str[i]==str[j+1])
{
flag=1;
break;
}
if(flag==1)
break;
}
printf("%c",str[i]);
return 0;
}
Объяснение кода листинга программы
В этом коде на языке C выполняется следующая последовательность действий:
- Подключаются необходимые библиотеки.
- Задаются начальные значения переменных: — i, j — счётчики, которые будут использоваться в циклах; — flag — флаг, который будет менять своё значение в процессе выполнения программы.
- С помощью функции gets(str) вводится строка.
- Два вложенных цикла выполняются до тех пор, пока не будет найдена пара одинаковых букв. Для этого: — Первый цикл проходит по всем символам строки. — Второй цикл начинается с i и проходит до конца строки, но проверяет только чётные индексы (при условии, что длина строки четная), так как буквы в этой строке уже найдены. — Если текущий символ в строке совпадает с последующим, то флаг становится равным 1 и цикл прерывается.
- Если пара одинаковых букв не найдена, то выводится сообщение об ошибке.
- Выводится найденная буква.
- Программа завершается.