Загрузка...

C problem.

Thread in C/C++ created by Muha665161 Nov 29, 2022. 225 views

  1. Muha665161
    Muha665161 Topic starter Nov 29, 2022 67 Dec 3, 2019
    [IMG]

    Функцию я написал, а что делать дальше не знаю

    #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;
    }

     
  2. M1h4n1k
    M1h4n1k Nov 29, 2022 Ответы skysmart - t.me/SkyAnsBot 272 May 4, 2021
    запустить?
     
    1. Muha665161 Topic starter
      M1h4n1k, Выводит значение только первого индекса, а мне надо всех
    2. vtlstolyarov
      Muha665161, поменяй сигнатуру фнкции чтобы принимала не только строку и сивол но и
      int offset
      - отступ от начала строки с которого надо начинать поиск. тогла после каждого вызова продолжаешь вызывать с новым отступом пока функция не вернет -1

      ну или можно сигнутуру оставить как есть, но каждый раз передавать сдвинутый указатель
  3. KinetiK
    KinetiK Nov 29, 2022 20,066 Jan 18, 2020
    while(index(str) != -1){
    int result = index(str);
    printf(index);
    str += index + 1;
    }
     
    1. View previous comments (2)
    2. vtlstolyarov
      KinetiK, ты изменил свой код после того как я написал сообщение, так что я был прав
    3. vtlstolyarov
      KinetiK, и даже с исправлением решение всё еще не верное - возвращаемый функцией индекс - это индекс на сдвинутой строке, так что при печати к нему надо добавлять изначальный сдвиг. ну и по мелочам - ты попутал имя переменной и имя функции (потому что торопился исправить то о чём я написал в первом комменте)
    4. KinetiK
      vtlstolyarov, я ничего не писал, это псевдокод решения
  4. KinetiK
    KinetiK Nov 29, 2022 20,066 Jan 18, 2020
    ты обрезаешь строку каждый раз на индекс найденного символа
     
  5. Joker9019
    Joker9019 Dec 5, 2022 Banned 3 Nov 27, 2022
    Muha665161,
    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;

    }

    ```
     
Top
Loading...