Тема: літерні рядки
#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];
чи правильне тут відношення?
ну усе наче гаразд, але після правильного опрацювання вибиває помилку.