Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.10.2023
Сообщений: 11

Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой

21.11.2023, 23:41. Показов 641. Ответов 6

Студворк — интернет-сервис помощи студентам
проблема, что последнее слово не выводит, если подходит под условие, как можно решить эту проблему?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <locale.h>
#define array 100
 
 
// Функция для проверки, начинается ли слово и заканчивается ли оно одной и той же буквой
int checkWord(char word[]) 
{
    int length = strlen(word);  // Получаем длину слова
 
    // Проверяем, если длина слова меньше 2, то оно не может начинаться и заканчиваться одной и той же буквой
    if (length < 2) 
    {
        return 0;
    }
 
    // Проверяем, если первая и последняя буква слова равны, то возвращаем 1 (true)
    if (word[0] == word[length - 1]) 
    {
        return 1;
    }
 
    // Если ни одно из условий не выполнилось, значит слово не начинается и не заканчивается одной и той же буквой
    return 0;
}
 
int main() 
{
    setlocale(LC_ALL, "Rus");
    char text[array];  // Объявляем массив символов для хранения текста
    printf("Введите текст: ");
    fgets(text,sizeof(text),stdin); // Считываем текст с клавиатуры
 
    char* word;  // Объявляем указатель на строку для хранения текущего слова
    word = strtok(text, " ");  // Разделяем текст на слова по пробелам
 
    printf("Слова, начинающиеся и заканчивающиеся одной и той же буквой:\n");
 
    // Пока указатель на текущее слово не станет NULL
    while (word != NULL) 
    {
        // Если слово начинается и заканчивается одной и той же буквой, выводим его на экран
        if (checkWord(word)) 
        {
            printf("%s\n", word);
        }
 
        word = strtok(NULL, " ");  // Получаем следующее слово
    }
 
    return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.11.2023, 23:41
Ответы с готовыми решениями:

Найти все слова, которые начинаются и заканчиваются одной и той же буквой
задан текст. Найти все слова, которые начинаются и заканчиваются одной и той же буквой.

Строки: Найти все слова, которые начинаются и заканчиваются одной и той же буквой
задан текст. Найти все слова, которые начинаются и заканчиваются одной и той же буквой.

Найти количество слов, которые начинаются и заканчиваются одной и той же буквой
Дана строка, состоящая из слов, разделенных пробелами (одним или несколькими). Найти количество слов, которые начинаются и заканчиваются...

6
Windows must die
828 / 834 / 102
Регистрация: 23.11.2021
Сообщений: 4,851
Записей в блоге: 15
21.11.2023, 23:53
olljlk, у тебя в последнем слове еще и '\n' попадается в конце, поэтому проверяй.

Добавлено через 3 минуты
Вот так попробуй:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
#include <string.h>
 
int checkWord(char *word){
    int length = strlen(word);
    if (length < 2) return 0;
    if (word[0] == word[length - 1]) return 1;
    return 0;
}
 
int main(){
    char text[BUFSIZ];
    printf("Enter text: ");
    fgets(text, sizeof(text), stdin);
    int x = strlen(text) - 1;
    if(text[x] == '\n') text[x] = 0;
    char* word;
    word = strtok(text, " ");
    while (word){
        if (checkWord(word)) printf("%s\n", word);
        word = strtok(NULL, " ");
    }
    return 0;
}
здесь все еще уйма косяков, но на первый раз сойдет и так.
0
 Аватар для analogov net
2523 / 1122 / 493
Регистрация: 17.11.2018
Сообщений: 2,829
22.11.2023, 01:39
Лучший ответ Сообщение было отмечено easybudda как решение

Решение

Цитата Сообщение от olljlk Посмотреть сообщение
как можно решить эту проблему?
например:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>
 
#define SIZE  100
#define DELIM  " \t\n"
 
int checkWord(char word[]) {
    return (word[0] == word[strlen(word) - 1]);
}
 
int main() {
    char text[SIZE];
 
    printf("string: ");
    fgets(text, sizeof(text), stdin);
 
    printf("result: ");
    for (char* word = strtok(text, DELIM); word; word = strtok(NULL, DELIM))
        if (checkWord(word))
            printf("%s ", word);
            
     printf("\n\n");
}
0
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,875
22.11.2023, 04:49
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{
    const char ln[128] = { "yfamily is quite big. It sonsists of mym mother, father, my three siblings and our cat Bob." };
    char *ptr = &(char)ln[0];
    while (*ptr) {
if (*ptr > 46 && *(ptr+1) < 47) {
        char tmp1 = *ptr;
char *tmp = ptr;
while (*(--ptr) > 46 && ptr >= ln);
if (tmp1 == *(ptr + 1)) { printf("\n");
    for (char *n = ptr + 1; *n > 46; )
        printf("%c", *n++);
        }
ptr = tmp;
        }
    ++ptr;
        }
    getchar();
    return 0;
}
0
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,875
22.11.2023, 04:51
Название: NewPicture11 (2).png
Просмотров: 63

Размер: 10.1 Кб
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
22.11.2023, 05:41
Наталья8, 10 минут смотрел - вообще ничего не понял.
1
 Аватар для Наталья8
518 / 368 / 65
Регистрация: 09.03.2016
Сообщений: 3,875
22.11.2023, 12:51
Цитата Сообщение от easybudda Посмотреть сообщение
10 минут смотрел
Из гавна и палок...
Игра такая - напиши гавнокод....

Час писал...

Добавлено через 27 минут
Если бы я для себя писал.
А для себя я такой хрени ни когда не писал,
и надеюсь не придёться.
(Хотя конечно, для тренинга полезно)

Добавлено через 16 минут
Вот часа... пусть будет четыре...
Надо приставлять к концу адреса вместе с нулями.
Строковые функции не подходят. Надо memcpy(. Нулей не видно. Просто не работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
while (_waccess((_two + wstr_num).c_str(), 0) == 0)// Это string ( проверка наличия папки)
                 wstr_num = to_wstring(++number);
     static wchar_t path_from[256]{};
     static wchar_t path_To[256]{};
 swprintf(path_To, L"%s%s", _two.c_str(), wstr_num.c_str());// В выходной патч адр. папки с номером а нулей там дох..
 CreateDirectoryW(path_To, NULL); // создаём папку   
         //====================
     swprintf(path_from, L"%s", _two.c_str());
         *(wcsrchr(path_from, L'\\') + 1) = '\0';
     const wchar_t file_name[4][18]{// Перенести три файла в папку назначения
             L"TarGet.avi\0\0",
             L"test.wav\0\0",
             L"hello.txt\0\0"
               };
         SHFILEOPSTRUCT op;
         for (int i = 0; i < 3; ++i) {// С двумя нулями... (Отрезает приставляет... надо)
memcpy(path_from +(wcslen(path_from)), file_name[i], (wcslen(file_name[i]) * 2)+4);
         ZeroMemory(&op, sizeof(op));
             op.wFunc = FO_MOVE;//  FO_MOVE // FO_DELETE
             op.pFrom = path_from;
             op.pTo = path_To;
             op.fFlags = FOF_RENAMEONCOLLISION | FOF_SIMPLEPROGRESS;//FOF_NOERRORUI;
             if (SHFileOperation(&op) == 0);
         *(wcsrchr(path_from, L'\\') + 1) = '\0';
            }
А было вот так....
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
//-----------------
         SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.wFunc = FO_MOVE;//  FO_MOVE // FO_DELETE
op.pFrom = From;
op.pTo = To;
op.fFlags= FOF_RENAMEONCOLLISION | FOF_SIMPLEPROGRESS;//FOF_NOERRORUI;
if(SHFileOperation(&op)==0);
 delete[] From;
//====================
_two=_two.substr(0, _two.rfind('\\') + 1);_two+=L"test.wav";
//====================
From = new wchar_t[_two.length() + 2];
wmemcpy(From, _two.c_str(), wcslen(_two.c_str()) );
         From[_two.size()] = '\0'; From[_two.size()+1] = '\0';  
//-----------------
        ZeroMemory(&op, sizeof(op));
op.wFunc = FO_MOVE;//  FO_MOVE // FO_DELETE
op.pFrom = From;
op.pTo = To;
op.fFlags= FOF_RENAMEONCOLLISION | FOF_SIMPLEPROGRESS;//FOF_NOERRORUI;
if(SHFileOperation(&op)==0);
 delete[] From;
//====================
_two =_two.substr(0, _two.rfind('\\') + 1);_two+=L"hello.txt";
//====================
From = new wchar_t[_two.length() + 2];
wmemcpy(From, _two.c_str(), wcslen(_two.c_str()) );
         From[_two.size()] = '\0'; From[_two.size()+1] = '\0';  
//-----------------
        ZeroMemory(&op, sizeof(op));
op.wFunc = FO_MOVE;//  FO_MOVE // FO_DELETE
op.pFrom = From;
op.pTo = To;
op.fFlags= FOF_RENAMEONCOLLISION | FOF_SIMPLEPROGRESS;//FOF_NOERRORUI;
if(SHFileOperation(&op)==0);
 delete[] From;
Для себя...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.11.2023, 12:51
Помогаю со студенческими работами здесь

Найти в строке количество слов, которые начинаются и заканчиваются одной и той же буквой
Помогите пожалуйста ! Введенный строка, состоящая из слов, набранных заглавными буквами и разделенных пробелами (одним или несколькими)....

Строки. Найти количество таких групп букв, которые начинаются и заканчиваются одной и той же буквой
Ввести строку символов, составленную из букв, цифр и знаков ‘+’, ‘–‘, ‘*’. Найти количество таких групп букв, которые начинаются и...

Определить количество слов, которые начинаются и заканчиваются одной и той же буквой
Дана строка, состоящая из русских слов, разделенных пробелами (одним или несколькими). Определить количество слов, которые начинаются и...

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

Найти в тексте слова, которые начинаются и заканчиваются одной и той же буквой
В соответствии с вариантом задания написать, отладить и протестировать программы обработки числовых и символьных массивов. Заданные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru