Основи програмування на С ++ для початківців

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

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

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

У цьому завданні головною вимогою має бути: зробити це якомога більше різними способами! (задача то сама по собі зовсім елементарна).

рішення:

Ось як це буде виглядати при виконанні:

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

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

P.S. В такому випадку ваші функції варіантів (якщо ви хочете зберегти масив функцій-обробників) можуть мати прототип:

Пропонуйте такі варіанти!

3 думки про "Задача: заповнення рядка словом

  1. Найкращий по оптимальності з показаних буде rep4, але там виділення буфера (символ ЬіЕ[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;
    ІНТ Const BUFERSIZE = а;
    ІНТ bufer = 0;
    рядок Slovo;
    cout<>слово;

    do
    {for(INT I = 0;i<slovo.size();i )
    {
    if(bufer<BUFERSIZ в)
    cout<<слово[i];
    bufer ++;
    }
    }while(bufer < BUFERSIZ в);

    return 0;
    }

залишити коментар

Ваша електронна адреса не буде опублікований. Обов'язкові поля позначені * *