Одно из решений, возможно, не самое эффективное #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. 123 в четверичной: 1*4^2+2*4+3= 16+4+3=23
2. 322 в шестиричной: 3*6^2+2*6^1+2= 3*36+12+2=122
3. 99 в шестнадцатеричной: 9*16+9= 144+9=153
4. FAC в шестнадцатеричной: 15*16^2+10*16+12= 15*256+160+12=3840+172=4012
5. 111 в двоичной: 4+2+1=7
6. 1001101 в двоичной: 1+4+8+64=77
7.115 в восьмеричной: 64+8+5=77
8. 4С в шестнадцатеричной: 4*16+13=77
9. 34 в семиричной: 3*7+4=25
10. 710 в восьмеричной: 7*64+8=448+8=456
Объяснение:
Вот тебе небольшие лайфхаки для перевода из двоичной в восьмеричную/шестнадцатеричную:
7. 1001101 в восьмеричной: разбиваем на триады начиная справа:
101 = 5 001=1 1=>001=1 получается: 115
8. 1001101 в шестнадцатеричной: также разбиваем, но уже на четыреады:
1101=13=>C 100=4 получается: 4С