Помогите найти ошибку
Добавлено: 29 ноя 2009, 09:24
Что надо было:
Создать текстовую функцию main(), которая реализует след. алгоритм:
1. Объявить и ввести переменные.
2. Ввести строку tmp.
3. Выделить блок памяти через указатель.
4. Скопировать строку в выделенный блок
5. Обработать блок по условию.
6. Вывести результаты обработки
7. Освободить блок
Вводить и обрабатывать строки в цикле, пока не введена пустая строка.
Условие обработки строки (п.5):
Перемешивать по k букв. Например:
Было: abcd efgh i
При k = 4 должно получится:
dcba hgfe i
Что получилось:
Создать текстовую функцию main(), которая реализует след. алгоритм:
1. Объявить и ввести переменные.
2. Ввести строку tmp.
3. Выделить блок памяти через указатель.
4. Скопировать строку в выделенный блок
5. Обработать блок по условию.
6. Вывести результаты обработки
7. Освободить блок
Вводить и обрабатывать строки в цикле, пока не введена пустая строка.
Условие обработки строки (п.5):
Перемешивать по k букв. Например:
Было: abcd efgh i
При k = 4 должно получится:
dcba hgfe i
Что получилось:
Код: Выделить всё
#include <iostream>
#include <cstring>
using namespace std;
int main ()
{
char tmp [80];
char* p;
int z(0);
do
{
cout << "Enter the sentence: " << endl;
cin >> tmp;
z = strlen(tmp);
p= new char[z+1];
strcpy(p, tmp);
char a;
char* pT = p;
char* pE =pT+3;
char* pN = (pT+z)-1;
for (pT=p; pT < (pN-3);pT += 4, pE = pT + 3)
{
while(pT<pE)
{
a = *pT;
*pT = *pE;
pT++;
*pE = a;
pE--;
}
}
cout << p << endl;
delete [] p;