Одно из решений, возможно, не самое эффективное #include <iostream> #include <iomanip> int main() { using namespace std;
//исходная последовательность const int N = 8; double Arr[N] = { 14.2, -3.4, 7.8, -3.1, 8.2, 98.22, -7, 12 };
//вывод на экран исходной последовательности for (int i = 0; i < N; ++i) cout << Arr[i] << " "; cout << endl;
//подсчитаем количества отрицательных и неотрицательных элементов int kpos = 0; int kneg = 0; for (int i = 0; i < N; ++i) if (Arr[i] < 0) ++kneg; else ++kpos;
//создадим массивы отрицательных и неотрицательных элементов double * ArrNeg = new double[kneg]; double * ArrPos = new double[kpos];
int kn = 0, kp = 0; for (int i = 0; i < N; i++) if (Arr[i] < 0) ArrNeg[kn++] = Arr[i]; else ArrPos[kp++] = Arr[i];
cout << "Enter a, b, c or d: "; char ch; cin >> ch;
if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd') { switch (ch) { //пункт а) case 'a': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[i]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[i]; break;
//пункт б) case 'b': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[--kn]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[i]; break;
//пункт в) case 'c': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[i]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[--kp]; break;
//пункт г) case 'd': for (int i = 0; i < kneg; ++i) Arr[i] = ArrNeg[--kn]; for (int i = 0; i < kpos; ++i) Arr[i + kneg] = ArrPos[--kp]; break; } } else cout << "You entered wrong symbol\n";
for (int i = 0; i < N; ++i) cout << Arr[i] << " "; cout << endl; delete[] ArrNeg; delete[] ArrPos; return 0; }
1. Расчертить все поле горизонтальными пунктирными линиями.
НАЧ
ПОКА впереди НЕ стена
НЦ
ДЕЛАЙ линия
ДЕЛАЙ правый переход
ДЕЛАЙ линия
ДЕЛАЙ левый переход
КЦ
КОН
ПРОЦЕДУРА линия
ПОКА впереди НЕ стена
НЦ
ШАГ
ЕСЛИ впереди НЕ стена
ТО
ПРЫЖОК
ВСЁ
КЦ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА правый переход
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
ЕСЛИ впереди НЕ стена
ТО
ПРЫЖОК
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
ВСЁ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА левый переход
ПОВОРОТ
ЕСЛИ впереди НЕ стена
ТО
ПРЫЖОК
ПОВОРОТ
ВСЁ
КОНЕЦ ПРОЦЕДУРЫ
2) Нарисовать квадраты во всех углах поля.
НАЧ
ДЕЛАЙ квадрат
ДЕЛАЙ переход
ДЕЛАЙ квадрат
ДЕЛАЙ переход
ДЕЛАЙ квадрат
ДЕЛАЙ переход
ДЕЛАЙ квадрат
КОН
ПРОЦЕДУРА квадрат
ШАГ
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
ШАГ
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
ШАГ
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
ШАГ
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ
ПРОЦЕДУРА переход
ПОКА впереди НЕ стена
НЦ
ПРЫЖОК
КЦ
ПОВОРОТ
ПОВОРОТ
ПОВОРОТ
КОНЕЦ ПРОЦЕДУРЫ