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

Изменить строку по заданным параметрам

27.08.2021, 10:31. Показов 2221. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Имеется следующее задание:
"Ввести строку с клавиатуры.
Строка должна содержать русские и английские буквы в верхнем и нижнем регистре, цифры, пробелы и знаки пунктуации.
Сформировать результирующую строку и вывести ее на экран".

Строка должна "результироваться" по следующему правилу: Если длина строки нечетная, то после каждой строчной буквы вставить пробел. Иначе – удалить все цифры, кратные 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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#include <iostream>
#include <cstdio>
using namespace std;
 
//int length(char* str) {
//  int i = 0;
//  while (str[i]) {
//      i++;
//  }
//  return i;
//}
 
int main() {
    char str[50];
    char result[50];
    setlocale(LC_ALL, "Russian");
    cout << "Введите строку символов:  ";
    cin >> str;
    if (strlen(str) % 2 != 0)
    {
        int j = 0;
        for (int i = 0; i < strlen(str); i++) //добавляем пробел
        {                           //после каждой строчной буквы
            result[j++] = str[i];
            if (str[i] < 'a' || str[i] > 'z')
                result[j++] = ' ';
            if (str[i] < 'а' || str[i] > 'я')
                result[j++] = ' ';
        }
        result[j] = '\0';
    }
    else
    {
        int j = 0;
        for (int i = 0; i < strlen(str); i++)
            //удалим все цифры кратные 3
        {
            if ((str[i] >= '0' && str[i] <= '9') % 3 )
                result[j++] = str[i];
        }
        result[j] = '\0';
        }
    puts(result);
    }
Результат не соответствует заданию.
Подскажите, пожалуйста, что нужно изменить. Заранее благодарю за помощь
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.08.2021, 10:31
Ответы с готовыми решениями:

Удалить строку по заданным параметрам (хранимая процедура)
Вопрос.Создать ХП, которая позволяет удалить информацию о заданных талонах. В качестве параметров использовать фамилию врача и...

Фильтр по заданным параметрам из БД
Здравствуйте, господа. Есть проблема. Подключил я на своем сайте БД, из которой выводятся данный в таблицу в блоке &lt;div&gt;&lt;/div&gt;....

Сортировка по заданным параметрам
Доброго времени суток! Подскажите, пожалуйста, вот код программы в конце упорядочивает по английскому алфавиту , а как написать код ,...

3
458 / 294 / 191
Регистрация: 23.06.2018
Сообщений: 678
27.08.2021, 11:56
Лучший ответ Сообщение было отмечено ramiras001 как решение

Решение

Проверять кириллицу простым сравнением с А и Я... Не каждая кодировка выдержит такое.
1.
C++
1
2
if (islower(str[i]))
    result[j++] = ' ';
2.
C++
1
2
if (!isdigit(str[i]) || (str[i] - '0') % 3)
    result[j++] = str[i];
Если первое не сработает для кириллицы, то тут я вижу только создание отдельной строки со всеми строчными буквами и поиск в нём проверяемого символа.
Ещё каждый ваш strlen(str) делает полный проход по строке, так что записали бы вы его результат в переменную.
Наконец, 50 символов это круто, но только если есть гарантии длины строки. Тут бы std::string, или хотя бы динамический массив с cin.getline и увеличением размера при cin.fail() == true
1
0 / 0 / 0
Регистрация: 27.05.2021
Сообщений: 20
27.08.2021, 14:03  [ТС]
Спасибо за дельный совет!
В принципе, условия работают, но на выходе вместо русских букв "кракозябра".
0
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
27.08.2021, 15:03
Цитата Сообщение от ramiras001 Посмотреть сообщение
вместо русских букв "кракозябра".
Потому, что ввод Вы оставили в кодировке 866
setlocale уберите, а вставьте
C++
1
#include <windows.h>
C++
1
2
   SetConsoleCP(1251);
   SetConsoleOutputCP(1251);
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.08.2021, 15:03
Помогаю со студенческими работами здесь

Генерация 3D модели по заданным параметрам
Доброго времени суток!) Необходимо создать приложение на С#, которое по заданным различным параметрам моделирует через Unity модель...

Создание объекта по заданным параметрам
Добрый вечер. Помогите советом. Можно ли создать в Uniti 3d объект по введенным после запуска программы параметрам. Например, создать...

Сравнение товаров по заданным параметрам
Здравствуйте, о мудрейшие форумчане! Дело в том, что передо мной встала задача создания сайта. Проблема вся в том, что раньше я этим...

Вывести календарь по заданным параметрам
Cоздать функцию, выводящую на экран календарь, который выводится по задаваемому пользователем году на английском языке.

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru