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

Реализация функции char *padl(const char *string, int len, int c=' ')

11.12.2015, 03:27. Показов 3793. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реализовать функцию возвращающую указатель на новую строку длины len, полученную из string либо удалением лишних символов слева , либо добавлением слева нужного числа символов с . память под строку выделяется с помощью вызова new
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
11.12.2015, 03:27
Ответы с готовыми решениями:

[BCC32 Error] File1.cpp(74): E2285 Could not find a match for 'student1::student1(const char *,int,int)'
#include<conio.h> #include<stdio.h> #include<iostream.h> #include<windows.h> #include<cstring.h> #include<string.h> ...

Как превести из char* в int и наоборот из int в char*?
Как превести из char* aa='123' в int aa=123 и наоборот из int в char* . Понимаю что самому написать функцию не сложно, но наверняка это...

Форматирование строк, char to int & int to char
Покажите как запихнуть число в строку и вытащить его обратно из строки. Вот всё просто в pawn str_to_num(const str) // Тупо...

5
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
11.12.2015, 11:51
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
char *padl(const char *string, int len, int c = ' ')
{
    char *new_str = new char[len + 1];
    int source_len = strlen(string);
    
    if (len <= source_len)
        strcpy(new_str, string + source_len - len);
    else
    {
        int difference = len - source_len;
        for (int i = difference - 1; i >= 0; --i)
            new_str[i] = c;
 
        strcpy(new_str + difference, string);
    }
 
    return new_str;
}
0
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 22
11.12.2015, 12:01  [ТС]
А можете построчно обьяснить,что в каждой строке происходит?
И что писать в главной функции?
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
11.12.2015, 12:34
Построчно объяснять не хочу, слишком долго.
Спрашивайте что конкретно не ясно (а что бы было не ясно что-то конкретное, а не все полностью, надо потратить не мало времени за чтением соответствующей литературы).

Если кроме реализации функции нужен main() для демонстрации, то можно так например:
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
#include <iostream>
 
using std::cout;
using std::cin;
using std::endl;
 
char *padl(const char *string, int len, int c = ' ')
{
    char *new_str = new char[len + 1];
    int source_len = strlen(string);
    
    if (len <= source_len)
        strcpy(new_str, string + source_len - len);
    else
    {
        int difference = len - source_len;
        for (int i = difference - 1; i >= 0; --i)
            new_str[i] = c;
 
        strcpy(new_str + difference, string);
    }
 
    return new_str;
}
 
int main()
{
    char *string;
    int cur_length;
 
    char *new_string;
    int new_length;
 
    char character;
 
    cout << "Enter string: ";
    character = cin.get();
    cin.putback(character);
    cur_length = cin.rdbuf()->in_avail() - 1;
    string = new char[cur_length + 1];
    cin >> string;
 
    cout << "Enter new length: ";
    cin >> new_length;
 
    cout << "Enter character: ";
    cin >> character;
 
    new_string = padl(string, new_length, character);
 
    cout << "New string: " << new_string << endl;
 
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Хотя ладно, упростим немного main()
C++
1
2
3
4
5
6
7
8
9
10
int main()
{
    char *new_string;
    new_string = padl("source", 4);
 
    cout << "New string: " << new_string << endl;
 
    system("pause");
    return 0;
}
0
1 / 1 / 0
Регистрация: 20.11.2015
Сообщений: 22
11.12.2015, 18:38  [ТС]
Так, вроде разобрался.
Неясно только вот эти строки
C++
1
2
3
4
5
6
 cout << "Enter string: ";
    character = cin.get();
    cin.putback(character);
    cur_length = cin.rdbuf()->in_avail() - 1;
    string = new char[cur_length + 1];
    cin >> string;
и

C++
1
new_string = padl("source", 4);
Добавлено через 4 минуты
А как переделать функцию ,чтобы не использовать функции из класса <string>&
strlen и strcpy? как на циклы это заменить?
0
49 / 49 / 31
Регистрация: 07.10.2015
Сообщений: 170
14.12.2015, 09:06
C++
1
2
3
4
5
6
7
8
9
10
    // cout и cin потоки ввода и вывода информации
    cout << "Enter string: ";   // записать в поток cout "Enter string: "
    cin >> string;              // считать из потока cin строку и записать в string
 
    // cin.get() и его друзья: [url]https://cppstudy.wordpress.com/2009/03/27/cin-get-and-co/[/url]
    character = cin.get();                      // считать из потока cin один символ и записать в character
    cin.putback(character);                     // записать смивол character в поток cin
    cur_length = cin.rdbuf()->in_avail() - 1;   // смотрим количество символов в буфере потока cin
    string = new char[cur_length + 1];          // выделяем для указателя string ровно столько памяти, что бы вместился весь буфер из cin
new_string = padl("source", 4); // вызываем вашу функцию с двумя первыми параметрами (третий можно опустить, т.к. по-умолчанию int c = ' ')
Цитата Сообщение от JanNovik Посмотреть сообщение
А как переделать функцию ,чтобы не использовать функции из класса <string>&
А где вы у меня увидели класс <string>?
Я взял название переменной из сигнатуры вашей функции:
C++
1
const char *string
Вот если подключить <string>, то уже тогда имя string будет конфликтовать с классом string
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.12.2015, 09:06
Помогаю со студенческими работами здесь

Преобразование const char* в int
Всем привет. В исходниках одного проекта встретил вот такой участок. typedef struct { char* name; int* location; ...

Invalid conversion from `int' to `const char*'
Здравствуйте.Возникла проблема с типами данных, пытался решить - стало хуже...:wall: Вот сам код: #include &lt;iostream&gt; ...

Невозможно преобразовать параметр из int в const char
Приветствую, помогите пожалуйста исправить следующую ошибку: printf: невозможно преобразовать параметр 1 из &quot;int&quot; в &quot;const...

Char const* str to vector<unsigned int>
Добрый день! На visual studio 2012 не работает код: char const* str{ &quot;1 2 4 12 5123&quot; }; std::istringstream iss{ str }; ...

Ошибка error C2446: '==' : no conversion from 'const char *' to 'int'
#include &lt;iostream&gt; using namespace std; int main () { int a,b; char op; int res; cout &lt;&lt; &quot;write constant and sing&quot;; ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru