Основы программирования на С++ для начинающих

Задача: заполнение строки словом

Есть некоторая строка (слово, число), например “home”. Необходимо заполнить этим словом строку (последовательно буквами этого слова) за определённое количество итераций.

Например: базовая строка – “home”, требуемое число символов результата 11, результат: “homehomehom”

В этой задаче главным требованием должно быть: сделать это как можно больше разными способами! (задача то сама по себе совсем элементарная).

Решения:

Вот как это будет выглядеть при исполнении:

задача и решение, с++, практика программирования

Здесь показано несколько (5) вариантов решения для базовой строки в формате std::string. Но ещё много интересных вариантов может быть записано для строки в формате char[] (такой код будет даже проще для понимания).

P.S. В таком случае ваши функции вариантов (если вы хотите сохранить массив функций-обработчиков) могут иметь прототип:

Предлагайте следующие варианты!

3 thoughts on “Задача: заполнение строки словом

  1. Наилучший по оптимальности из показанных будет rep4, но там выделение буфера (char buf[1000]) сделано с потолка и чисто для иллюстрации, легко его переполнить.
    Добавлю ещё 2 вариата в развитие этого способа:

    string rep6( const string& base, uint rep ) {
    char* buf = (char*)alloca( rep * 2 );
    strcpy( buf, base.c_str() );
    while( strlen( buf ) < rep )
    memmove( buf + strlen( buf ), buf, strlen( buf ) + 1 ); // удвоить длину
    buf[ rep ] = '\0';
    return string( buf );
    }


    string rep7( const string& base, uint rep ) {
    char buf[ rep * 2 ];
    strcpy( buf, base.c_str() );
    while( strlen( buf ) < rep )
    memmove( buf + strlen( buf ), buf, strlen( buf ) + 1 ); // удвоить длину
    buf[ rep ] = '\0';
    return string( buf );
    }

  2. #include
    #include
    using namespace std;

    int main()
    {
    int a;
    cout<>a;
    int const BUFERSIZE=a;
    int bufer=0;
    string slovo;
    cout<>slovo;

    do
    {for(int i=0;i<slovo.size();i++)
    {
    if(bufer<BUFERSIZE)
    cout<<slovo[i];
    bufer++;
    }
    }while(bufer < BUFERSIZE);

    return 0;
    }

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *