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