Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
 Аватар для Ivan _pupkin
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257

Заменить в самом длинном слове строки буквы 'a' на 'b'

19.12.2018, 22:02. Показов 3208. Ответов 7

Студворк — интернет-сервис помощи студентам
Ребят, вот пытаюсь решить задачу, вроде бы решил, но что-то мне подсказывает , что тут что-то не так
Когда я ввожу длинные строки, прога работает не правильно. Помогите решить пожалуйста.
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
55
int main()
{   
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
 
char str[50];
cout << "Input string: "; cin.getline(str, 50); cout << endl;
int i, length, j, counter = 0,max_counter = 0, index_i;
length = strlen(str);
for ( i = 0; i < length; i++)
{
    counter++;
    if (str[i]==' ')
    {
        max_counter = counter;
        counter = 0;
    }
    if (counter > max_counter)
    {
        index_i = i + 2;
    }
}
 
for ( i = 0; i < length; i++)
{
    cout << "str[" << i << "]= " << str[i] << endl;
}
cout << "Введённая строка: ";
for ( i = 0; i < length; i++)
{
    cout << str[i];
}
cout << "\nСамое длиное слово начинается с индекса: " << index_i << endl;
bool io = false;
for ( i = index_i; i < length; i++)
{
    if (str[i] == 'a')
    {
        io = true;
        str[i] = 'b';
    }
}
if (io == true)
{
    cout << "\nИзменённая строка: ";
    for (i = 0; i < length; i++)
    {
        cout << str[i];
    }
    cout << "\n\n";
}
 
 
  return 0;
}
Добавлено через 2 часа 27 минут
Я немного изменил код, но всё равно работает не так как нужно.
Вот, введите это в консоли: wad wdq Hello warlda! dq !
Вот код:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include "pch.h"
#include <iostream>
#include <ctime>
#include <iomanip>
#include <string>
using namespace std;
 
int main()
 
{
    
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
char str[50];
cout << "Input string: "; cin.getline(str, 50); cout << endl;
int i, length, j, counter = 0,max_counter = 0, index_i;
length = strlen(str);
for ( i = 0; i < length; i++)
{
    if (str[i] != ' ')
    {
        counter++;
    }
    else if (str[i] == ' ')
    {
        if (counter > max_counter)
        {
            max_counter = counter;
            index_i = i + 1;
        }
        counter = 0;
    }
}
 
for ( i = 0; i < length; i++)
{
    cout << "str[" << i << "]= " << str[i] << endl;
}
cout << "Введённая строка: ";
for ( i = 0; i < length; i++)
{
    cout << str[i];
}
cout << "\nСамое длиное слово начинается с индекса: " << index_i << endl;
bool io = false;
for ( i = index_i; i < length; i++)
{
    if (str[i] == 'a')
    {
        io = true;
        str[i] = 'b';
    }
    if (str[i] == ' ')
    {
        break;
    }
}
if (io == true)
{
    cout << "\nИзменённая строка: ";
    for (i = 0; i < length; i++)
    {
        cout << str[i];
    }
    cout << "\n\n";
}
 
 
  return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.12.2018, 22:02
Ответы с готовыми решениями:

Заменить буквы в самом длинном слове на символы '*'
3. В исходном предложении заменить буквы в самом длинном слове на символы '*'

Определить число символов в самом длинном слове строки
Дана последовательность символов S1, …, SN. Группы символов, разделенные пробелом (одним или несколькими) и не содержащие пробелов внутри...

Определить число символов в самом длинном слове строки
Т.к. я полный 0 в этом, обращаюсь сюда. Нужно определить число символов в самом длинном слове строки. Слова отделяются знаком “/”. ...

7
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
19.12.2018, 22:56
А задача то какая ?
Попробовал Ваш пример, ничего не меняет. Только какой-то индекс показывает.

Добавлено через 24 минуты
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    char str[50];
    cout << "Input string: "; cin.getline(str, 50); cout << endl;
    stringstream    ss(str);
    string s;
    int i=0, max=0, max_index=-1;
    while(ss>>s){
        if(s.size()>max){
            max = s.size();
            max_index = i;
        }
        i++;
    }
    i=0;
    stringstream    ss2(str);
    while(ss2>>s){
        if(i==max_index){
            for(int a=0; a<s.size(); a++)
                if(s[a] == 'a') s[a]='b';
        }
        i++;
        cout << s << ' ';
    }
1
 Аватар для Ivan _pupkin
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
20.12.2018, 01:27  [ТС]
Я новичок в программировании только недавно начал изучать символьные массивы , объясните пожалуйста , что это такое.
Цитата Сообщение от alkl Посмотреть сообщение
s.size()
Цитата Сообщение от alkl Посмотреть сообщение
stringstream * *ss(str);
И ещё, когда я ваш код скопировал, вот такие ошибки выдаёт.
0
 Аватар для Ivan _pupkin
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
20.12.2018, 01:32  [ТС]
Вот:
Миниатюры
Заменить в самом длинном слове строки буквы 'a' на 'b'  
0
 Аватар для alkl
119 / 94 / 35
Регистрация: 18.12.2012
Сообщений: 654
20.12.2018, 01:33
Цитата Сообщение от Ivan _pupkin Посмотреть сообщение
s.size()
Возвращает длину строки s.

Цитата Сообщение от Ivan _pupkin Посмотреть сообщение
stringstream ss(str);
Создаёт объект типа stringstream и помещает в него строку str.

Добавлено через 30 секунд
Цитата Сообщение от Ivan _pupkin Посмотреть сообщение
Вот:
Добавьте
C++
1
#include <sstream>
1
 Аватар для Ivan _pupkin
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
20.12.2018, 09:33  [ТС]
Опишите пожалуйста комментариями ваш код. Просто я даже в отладчике не всё понимаю, как он работает.
0
 Аватар для igorrr37
2895 / 2042 / 992
Регистрация: 21.12.2010
Сообщений: 3,791
Записей в блоге: 9
20.12.2018, 10:26
через регулярки
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <regex>
#include <string>
#include <algorithm>
#include <iterator>
#include <cstdlib>
 
// протестировано в MSVS2017 
int main()
{
    system("chcp 1251"); // для вввода и вывода кириллицы на консоль
    std::string str{ "Когда я ввожу длинные строки, прога работает неправильно." }; // строка
    std::regex rgx{ "[А-Яа-яЁё[:alpha:]]+" }; // будем перебирать все слова в строке состоящие из русских и английских букв
    auto imax = std::max_element(std::sregex_iterator{ str.begin(), str.end(), rgx }, {}, [](auto const& a, auto const& b) {return a.length() < b.length(); }); // находит первое слово из самых длинных
    std::replace(str.begin() + imax->position(), str.begin() + imax->position() + imax->length(), 'н', 'N'); // меняем в найденном слове букву 'н' на 'N'
    std::cout << str << std::endl;
}
1
 Аватар для Ivan _pupkin
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
20.12.2018, 20:35  [ТС]
Цитата Сообщение от igorrr37 Посмотреть сообщение
через регулярки
Спасибо всё работает, но передайте пожалуйста код так как делал я, через символьные массивы , циклы т.д. , а то я ещё темы про тип данных string не проходил и даже с комментариями почти ничего не понимаю.

Добавлено через 2 часа 23 минуты
*переделайте
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.12.2018, 20:35
Помогаю со студенческими работами здесь

В самом коротком слове все согласные буквы заменить на букву «A»
Дан массив из n слов произвольной длины ( длина слова не превышает 80 символов). Символами могут быть только заглавные латинские ...

Количество символов в самом длинном слове
С помощью текстового редактора создать файл, содержащий текст, длина которого не превышает 1000 символов. Написать программу, которая: ...

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

Нужно в самом длинном слове заменить все гласные буквы на знак восклицания
Дано строчку, нужно в самом длинном слове заменить все гласные буквы английского алфавита (a, e, i, o, u, y) на знак восклицания.

В самом длинном слове строки расположить все буквы по алфавиту
в самом длинном слове строки расположить все буквы по алфавиту, строку брать из текстового файла и вывести редактированное слово в этот...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru