Проверка равенства символов - C (СИ)
Формулировка задачи:
Пожалуйста, помогите решить задачу!!!
Даны символы с[1],с[2],...с[N ]. N за ранее известно. выяснить, верно ли, что существуют такие натуральные i и j, что 1<i<j<n и что c[i ]совпадает с c[i+1], а c[j] c c[j+1].
Пожалуйста, помогите!!!
ну и конечно найти i и j
ПОЖАЛУЙСТА!!!!!!!!!!!Завтра зачет...а осталось решить только эту задачу
Решение задачи: «Проверка равенства символов»
textual
Листинг программы
int main(int argc, char* argv[])
{
char c[100];
int i=0,j=0,im=-1,jm=-1;
printf("vvedite simvoli: ");
scanf("%100s",c);
for(i=0;i<strlen(c)-1;i++)
{
for(j=i;j<strlen(c)-1;j++)
if((c[j]==c[j+1])&&(j>jm))
jm=j;
if((c[i]==c[i+1])&&(i>im)&&(i<jm))
im=i;
}
printf("i=%d\n",(im<0)?0:im+1);
printf("j=%d\n",(jm<0)?0:jm+1);
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлена строка
cразмером 100 символов. - Далее, с помощью функции
scanf, в эту строку считывается строка ввода пользователя. - Затем, с помощью двух вложенных циклов, происходит сравнение всех пар соседних символов строки
c. - Если символы равны и текущий цикл не является последним (т.е.
j<strlen(c)-1), то вjmзаписывается значениеj, т.е. позиция последнего равного символа в строке. - Если текущий символ равен следующему за ним (
c[i]==c[i+1]), и текущий цикл не является первым (т.е.i>im), и текущий символ находится левееjm(т.е.i<jm), то вimзаписывается значениеi, т.е. позиция первого равного символа в строке. - Если в процессе прохода по строке не было найдено пар равных символов, то
imиjmпринимают значение-1. - В конце программы выводятся значения
imиjm, которые соответствуют позиции последнего и первого равного символа в строке. - Программа завершается возвратом
0из функцииmain.