Функцию я написал, а что делать дальше не знаю #include <stdio.h> #include <stdlib.h> #include <Windows.h> #include <locale> int index(const char* str, const char c) { int index = 0; const char* p = str; while (p) { if (*p == c) return index; index++; p++; } return -1; } int main() { setlocale(LC_ALL, "ru"); char str[255] = { 0 }; char c; printf("Enter string = "); SetConsoleCP(1251); fgets(str, 255, stdin); printf("Enter Symbol = "); scanf_s("%c", &c); SetConsoleCP(866); printf("Индекс первого элемента = %d", index(str, c)); return 0; }
Muha665161, поменяй сигнатуру фнкции чтобы принимала не только строку и сивол но и int offset - отступ от начала строки с которого надо начинать поиск. тогла после каждого вызова продолжаешь вызывать с новым отступом пока функция не вернет -1 ну или можно сигнутуру оставить как есть, но каждый раз передавать сдвинутый указатель
KinetiK, и даже с исправлением решение всё еще не верное - возвращаемый функцией индекс - это индекс на сдвинутой строке, так что при печати к нему надо добавлять изначальный сдвиг. ну и по мелочам - ты попутал имя переменной и имя функции (потому что торопился исправить то о чём я написал в первом комменте)
Muha665161, ```c++ #include <iostream> #include <string> using namespace std; int findIndex(string str, char ch) { for (int i = 0; i < str.length(); i++) { if (str[i] == ch) return i; } return -1; } int main() { cout << "Enter string: "; string str; cin >> str; cout << "Enter character: "; char ch; cin >> ch; int index; do { index = findIndex(str, ch); if (index != -1) { cout << index << endl; str.erase(index, 1); } } while (index != -1); return 0; } ``` C ```c++ #include <iostream> #include <string> using namespace std; int findIndex(string str, char ch) { for (int i = 0; i < str.length(); i++) { if (str[i] == ch) return i; } return -1; } int main() { cout << "Enter string: "; string str; cin >> str; cout << "Enter character: "; char ch; cin >> ch; int index; do { index = findIndex(str, ch); if (index != -1) { cout << index << endl; str.erase(index, 1); } } while (index != -1); return 0; } ```