Найти позицию первой повторяющейся цифры во вводимом числе
Вводится целое число. В числе могут быть две подряд идущие одинаковые цифры, например, 1234456 – здесь 4. А может и не быть. Вывести на экран позицию первого из повторяющихся чисел, с учетом того, что первое левое это – 0 позиция. То есть в приведенном выше примере цифра 1 стоит на 0 позиции, цифра 2 на первой позиции и т.д. Так вот программа должна выдать позицию первой четверки – 3 позиция в нашем примере.
Ответы (1 шт):
Можно так сделать. Если в строке есть повторы, то выведет.
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin, str);
for (int i=0; i<str.length()-1; i++){
for (int j=i+1; j<str.length(); j++){
if (str[i] == str[j]){
cout<<i;
return 1;
}
}
}
cout<<"No";
return 0;
}
Подключаются библиотеки ввода-вывода и для строк.
Задаем строку, записываем ее с клавиатуры через консоль.
Первый цикл идет от 0 элемента до предпоследнего (str.length()-1). Второй цикл идет от элемента, который следует за тем, что в первом цикле, и до последнего. Допустим, если в первом цикле i=5, т.е. 6 элемент (т.к. начинается с 0), то второй цикл пойдет от 7 элемента и до конца.
Получается, что мы берем первый элемент, и смотрим, есть ли такие же. Если нашли, программа выводит его номер и заканчивается. Если во всей строке такого элемента нет, то берем второй элемент и смотрим, есть ли он. И так до конца. Если мы не нашли вообще ни одного повтора, выведет "No" и программа завершится.
UPD: Возможно я не так поняла задание, так что вот еще один код
Эта программа будет выводить результат только когда два одинаковых символа идут подряд.
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
getline(cin, str);
for (int i=0; i<str.length()-1; i++){
if (str[i] == str[i+1]){
cout<<i;
return 1;
}
}
cout<<"No";
return 0;
}
Тут через цикл идет проход по строке, и если друг за другом идут одинаковые символы, то оно выведет позицию первого из пары.