Ответы пользователя по тегу C
  • Как написать программу на СИ?

    @nakem
    Мой совет. Попросите кого-то из знакомых программистов. Здесь вряд ли кто-то будет писать за вас. Вот если бы вы что-то набросали сами, а потом пришли сюда с просьбой найти ошибки или попросили бы совет как лучше сделать, то это другое дело. Попробуйте нагуглить код, если в русском сегменте ничего не нашлось, то стоит перевести поисковый запрос на английский язык.
    По поводу задачи. Как я понял условие. Подается два аргумента. Первый строка с нным количеством слов. И вторая строка с одним таргетным словом. Нужно найти кол-во слов в первой строке, которые заканчиваются и начинаются с таргетного слова.
    Предположим, что пробелов в начале и в конце может быть произвольное кол-во. Между словами тоже самое.
    Запускаем цикл пока i не равно '\0' .
    Далее нам нужно написать функцию skip_spaces. Она будет скипать пробелы до тех пор, пока не встретиться любой символ или '\0'. На символ проверяем через таблицу Ascii. Пишем в терминале man ascii пролистываем до таблицы в десятичной системе счисления(decimal) и ищем значения букв. То есть, строчные буквы от 97(а) до 122(z).
    Далее в цикле используем нашу написанную SkipSpaces, чтобы увеличить наше i и пропустить пробелы перед началом потока слов.
    Далее мы встречаем первое слово. Нам нужно написать функцию check_word, которая будет возвращать булеву переменную в зависимости от того есть ли в нем таргетное слово. Мы передаем в эту функцию указатель на символ, на котором сейчас стоим &words[i] и таргетное слово. Далее в самой функции check_word(char *word, char *target) нам нужно сохранить начало слова в переменную start. Посчитать кол-во символов в слове size_word. То есть просто проскакать по word до первого пробела. Далее просто for (i:=0; i < len(target); i++) мы сравниваем начало word с таргетом, если все ок, то идем дальше, если что-то не ок, то возвращаем false. Во втором цикле for (i := size_word - len(target); j := 0; i < size_word; i++; j++) мы уже находим таргет в конце нашего слова. Если все ок, все совпало, то возвращаем true.
    Дальше в нашем мейне нам необходимо увеличить count_valid_words, если check_word вернула true. Далее, необходимо скипнуть символы. Аналогично как с skip_spaces().
    На этом все.
    Пока писал этот текст успел пожалеть, что просто не накидал код ахахах. Но я очень надеюсь, что ты сам решишь эту задачку, а не будешь списывать. Начни программировать, это очень интересно!)
    Ответ написан