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

В каждом слове строки удалить все последующие вхождения первого символа этого слова

20.11.2021, 22:59. Показов 477. Ответов 2

Студворк — интернет-сервис помощи студентам
Всем привет! Помогите найти ошибку в коде. Удаляет повторы вот так: вводим tyrttt fafff, то выведет tyrt faf, хотя должно быть tyr fa. Т.е при повторе буквы больше, чем 2 раза ,программа некоректно работает. Такое же происходит , если повторы букв в начале и середине слова в строке.


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
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <Windows.h>
 
bool symvol(char symv)
{
    bool symvoll = false;
    if (((symv >= 'A' && symv <= 'Z') || (symv >= 'a' && symv <= 'z')) || ((symv >= 'А' && symv <= 'Я') || (symv >= 'а' && symv <= 'я'))) // определяем символы
        symvoll = true;
    return symvoll;
}
 
void udal(char stroka[]) {
    char first = ' ';
    int k, i = 0;
    while (stroka[i] != '\0') // проеверяем условие
    {
        if ((i == 0 && symvol(stroka[i])) || ((i != 0) && symvol(stroka[i]) && !symvol(stroka[i]))) // провекрка символов
        {
            first = stroka[i];
        } 
        else if (stroka[i] == first && symvol(stroka[i])) // проверка символов
        {
            k = i;
            while (stroka[k+1] != '\0')
            {
                stroka[k] = stroka[k + 1];
                k ++ ;
            }
            stroka[k-1] = '\0';
        }
        i++;
    }
    puts(stroka); // выводим строку
}
 
int main()
{
    setlocale(LC_ALL, "RUS"); // устанавливаем язык
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int l;
    char arr[100000]; // массив для вывода
    printf("Vvedite stroky: ");
    gets_s(arr); // вводим массив
    udal(arr); // используем функцию
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2021, 22:59
Ответы с готовыми решениями:

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

В заданном предложении в каждом слове удалить все последующие вхождения первой буквы предложения
Уважаемые программисты! Помогите найти ошибку в тексте программы для этой задачи: &quot;В заданном предложении в каждом слове удалить...

В заданном предложении в каждом слове удалить все последующие вхождения первой буквы предложения
Уважаемые гуру! Могу я просить у вас о помощи? Никак не получается решить задачу по Паскалю! Для вас наверное это как семечки щелкать: ...

2
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
21.11.2021, 02:04
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
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
 
int main()
{
    size_t i;
    string s="tyrttt fafff abrakadabraaa", s1, word;       
    
    stringstream in(s);
    
    while(in >> word)
    {    
        i=1;
        while (s[i])
        {
            if (word[i]==word[0]) 
            {
                word.erase (i,1); i--;                                    
            }
            i++;
        }
        s1+=word + " ";
    } 
    
    s1.pop_back();
    s=s1;
    
    cout << s << "\n";
    
system("pause");
return 0;
}
0
 Аватар для analogov net
2523 / 1122 / 493
Регистрация: 17.11.2018
Сообщений: 2,829
21.11.2021, 04:50
Цитата Сообщение от Danyakz Посмотреть сообщение
Помогите найти ошибку в коде.
Не, много букв. Проще самому написать...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    char str[256] = "abgaadgha - jhsgfhjjjsj, kdfbhfgkkkkhsh.", *p = str, ch = '\0';
 
    cout << "string: " << str << endl;
    for( int i = 0, j = 0; str[j]; i++, p++ )
    {
        if( ( p == str || !isalpha(*( p - 1 ))) && isalpha( *p ) )  str[j++] = ch = *p;
        if( str[i] != ch )                                          str[j++] = str[i];
    }
    cout << "result: " << str << endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.11.2021, 04:50
Помогаю со студенческими работами здесь

Строка: Если в строке чётное число символов, удалить из неё все последующие вхождения первого символа...
Помогите пожалуйста решить. Дана строка символов. Если в строке чётное число символов, удалить из неё все последующие вхождения первого...

Удалить в каждом слове все последующие вхождения первой буквы. Строчные и прописные буквы считать эквивалентными
При выводе ответа, почему то заменяет первую букву на &quot;X&quot;, а не ее все последующие вхождения в выделенном слове (специально заменяю на...

Строки. В каждом слове заменить последующие вхождения первой буквы на символ «.»
Ребята, пацаны, мужики, помогите пожжжалуйста, мне 2 задачки нужно решить, не то что бы срочно, но повышенная важность их для меня... ...

Удалить из строки все находящиеся в ней слова «студент» и определить все позиции вхождения этого слова
Удалить из строки все находящиеся в ней слова «студент» и определить все позиции вхождения этого слова. Помогите,пожалуйста, алгоритм и...

Строки. Напечатать все слова последовательности, которые отличны от первого слова, оставить в слове только первые вхождения каждой буквы
Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 прописных латинских букв; между соседними словами - не...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru