Тема: літерні рядки
#include <string>
#include <iostream>
using namespace std;
int Count(char* str)
{
    if (strlen(str)<2)
        return 0;
    int k = 1;
    for (int i = 1; str[i] != 0; i++)
        if ((str[i] == 'B')||(str[i] == 'A')||(str[i] == 'S')||(str[i] == 'I')||(str[i] == 'C'))
            k++;
    return k;
}
char* Change(char* str)
{
    if (strlen(str)<4)
        return str;
    char* tmp = new char[strlen(str) * 4 / 2 + 1];
    char* t = tmp;
    tmp[0] = '\0';
    int i = 0;
    while (str[i+1] != 0)
    {
        
            if ((str[i] == 'B')||(str[i+1] == 'A')||(str[i+2] == 'S')||(str[i+3] == 'I')||(str[i+4] == 'C'))
            //{ ((str[i]='D')||(str[i+1] == 'E')||(str[i+2] == 'L')||(str[i+3] == 'P')||(str[i+4] == 'H')||(str[i+4] == 'I'));
            {    strcat(t, "DELPHI");
                t += 6;
                i += 5;
            }
            else
            {
                *t++ = str[i++];
                *t = '\0';
            }
    }
    *t++ = str[i++];
    *t++ = str[i++];
    *t = '\0';
    strcpy(str, tmp);
    return tmp;
}
int main()
{
    char str[101];
    cout << "Enter string:" << endl;
    cin.getline(str, 100);
    cout << "String contained " << Count(str) << " Bs As Ss Is AND Cs" << endl;
    char* dest = new char[151];
    dest = Change(str);
    cout << "Modified string (param) : " << str << endl;
    cout << "Modified string (result): " << dest << endl;
    cout<< endl;
    system("pause");
    return 1;
}Отака прога. Вибиває помилку.
здається похибка тут: char* tmp = new char[strlen(str) * 4 / 2 + 1];
чи правильне тут відношення?
ну усе наче гаразд, але після правильного опрацювання вибиває помилку.
