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

Преобразовать строку в строку заданной длины N по указанному правилу

29.10.2019, 02:15. Показов 6050. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дано целое число N (> 0) и строка S. Преобразовать строку S в строку
длины N следующим образом: если длина строки S больше N, то отбросить
первые символы, если длина строки S меньше N, то в ее начало добавить
символы «.» (точка).

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int s26()
{
    int j = 0;
    setlocale(LC_ALL, "Russian");
    char s[256];
    cout << "Введите строку" << endl;
    cin.getline(s, 256);
    int n;
    cout << "Введите число" << endl;
    cin >> n;
    while (n < 0)
    {
        cout << "Должно быть больше 0" << endl;
        cin >> n;
    }
    if (strlen(s) > n) {
        for (int i = n + 1; i = strlen(s); i++) { s[j] = s[i]; j++; }
    }
    if (strlen(s) < n) { for (int i = 0; i = strlen(s); i++) { s[n + 1 + i] = s[i]; s[i] = '.'; } }
    cout << s << endl;
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.10.2019, 02:15
Ответы с готовыми решениями:

Преобразовать строку по указанному правилу
Помогите с программкой. Данная строка символов S. Преобразовать строку , заменив : а ) каждую точку многоточием (т.е. тремя...

Преобразовать строку S в строку длины N по заданному алгоритму
Дано целое число N (&gt; 0) и строка S. Преобразовать строку S в строку длины N следующим образом: если длина строки S больше N, то...

Каждую строку матрицы Z(5,4) преобразовать по правилу
Дана задача. Каждую строку матрицы Z(5,4) преобразовать по правилу: если максимальный элемент не первый, то поменять его местом с...

3
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
29.10.2019, 08:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
 if (strlen(s) >= n) 
{
    char* NewString=s+strlen(s)-n;
    cout<<NewString;
}else
{
    char NewString[256]={0};
    for(int i=0;i<n-strlen(s);i++)
        NewString[i]='.';
   strcat(NewString,s); 
   cout<<NewString;
}
0
-1 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 175
29.10.2019, 17:26  [ТС]
в первом случае должен заполниться новый массив без N первых букв, а во втором разница между n и длиной массива заполняется точка , а потом уже копируется s
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
#include <iostream>
#include <string>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char s[256];
    cout << "Введите строку" << endl;
    cin.getline(s, 256);
    int n;
    cout << "Введите число" << endl;
    cin >> n;
    while (n < 0)
    {
        cout << "Должно быть больше 0" << endl;
        cin >> n;
    }
    int a = strlen(s) - n;
        char* s2 = new char[a];
    char* s1 = new char[n];
    if (strlen(s) > n) {
        int b = strlen(s) - n - 1;
        strcpy(s2, s[b]);
    }
    if (strlen(s) < n)
    {
        for (int i = 0; i <= n - strlen(s); i++) {
            
            s1[i] = '.';
            strcat(s1, s);
        }
    }
    cout << s << endl;
    return 0;
}
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,246
29.10.2019, 19:10
Цитата Сообщение от OxepeHeH Посмотреть сообщение
strcpy(s2, s[b]);
не s[b], а s+b

Цитата Сообщение от OxepeHeH Посмотреть сообщение
char* s1 = new char[n];
Здесь только выделение памяти без инициализации.
Поэтому в конце строки надо ставить ноль, или
C++
1
2
3
4
5
6
7
 
   s1[0]=0;
   for (int i = 0; i <= n - strlen(s); i++)
   {
       strcat(s1,".");
   }            
   strcat(s1, s);
И, кстати, почему не удаляете выделенную память?

В целом, еще куча ошибок
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
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>
using namespace std;
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    char s[256];
    cout << "Введите строку" << endl;
    cin.getline(s, 256);
    size_t n;
    cout << "Введите число" << endl;
    cin >> n;
    while (n < 0)
    {
        cout << "Должно быть больше 0" << endl;
        cin >> n;
    }
    char* s1 = new char[n+1];
    if (strlen(s) >= n) {
        int b = strlen(s) - n;
        strcpy(s1, s+b);
    }else
    {
        s1[0] = 0;
        for (size_t i = 0; i < n - strlen(s); i++)
        {
            strcat(s1, ".");
        }
        strcat(s1, s);
    }
    cout << s1 << endl;
    delete[] s1;
    system("pause");
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.10.2019, 19:10
Помогаю со студенческими работами здесь

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

Строка: Преобразовать введенную пользователем строку по заданному правилу...
Ввести символ из интервала от «а» до «d». Если введен символ «а» - преобразовать его в символ «b», если «b» - преобразовать его в символ...

Преобразовать два набора чисел по указанному правилу
Даны действительные x1,…,x11 и y1,…,y11 числа. Получить действительные a1,…,a11 и b1,…,b11, преобразовав члены xi, yi по правилу: если...

Проверить,содержит ли файл строку заданной длины.
дан текстовый файл,состоящий из нескольких строк.Пользователь вводитс клавиатуры число. Проверить,содержит ли файл строку заданной...

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


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru