Вопрос Помогите пожалуйста с программированием на c!

Регистрация
26 Окт 2013
Сообщения
88
Репутация
0
Спасибо
0
Монет
0
Задача: дана строка (символьный массив) и некоторая буква. Найти и вывести все слова в строке, начинающиеся на эту букву. Мне бы, если не код, то хотя бы идею, как это реализовать.
 
Начинаем с первого символа, сравниваем с заданной буквой. Если совпадает, идем дальше по строке в поисках пробела, попутно "включаем" переменную i, в которой считаем порядковый номер каждого символа. Как только нашли пробел, строку с первого символа до пробела копируем в новую переменную s.

Дальше считываем символ и если это не пробел, сравниваем с заданной буквой, если равно - идем до пробела. Копируем часть строки с порядкового номера буквы до пробела в s. Повторяем в цикле до конца заданной строки.
 
Попробуй этот, сразу скажу, это ChatGPT, я сам только учусь, и то не на С а на Python
#include <stdio.h>
#include <string.h>

int main() {
char str[100], letter;
int i, j, word_start, word_end;
printf("Enter a string: ");
fgets(str, 100, stdin); // ввод строки с помощью fgets()
printf("Enter the starting letter: ");
scanf("%c", &letter); // ввод буквы с помощью scanf()

for (i = 0; i < strlen(str); i++) {
// определение начала и конца слова
if (i == 0 || str[i-1] == ' ') {
word_start = i;
while (str != ' ' && str != '\n' && str != '\0') {
i++;
}
word_end = i;
// проверка, начинается ли слово на заданную букву
if (str[word_start] == letter) {
// вывод слова на экран
for (j = word_start; j < word_end; j++) {
printf("%c", str[j]);
}
printf("\n"); // переход на новую строку после вывода слова
}
}
}
return 0;
}
 
создай вектор строк
используй isalpha, чтобы знать где граница слова.
создай два цикла.
один встроен в другой
первый цикл идёт по строке символ за символом.
если найдена буква слова, то она добавляется новым словом в вектор.
включается внутренний цикл, идущий до конца этого слова и он добавляет по симвалу в последнее слово вектора.
Когда циклы завершатся, создаёшь новый цикл идущий по вектору.
внутри тоже встроенный цикл, идущий по слову, ищущий нужную букву. как только нашёл, выводи текущее слово в векторе на экран и прерывай внутренний цикл

я написал про си плюс плюс
в си вместо вектора строк нужно использовать двойной массив символов достаточно большого размера
 
Ты бы хотя бы массив предоставил
 
Назад
Сверху