Вопрос задан 25.06.2023 в 09:11. Предмет Информатика. Спрашивает Зайцев Артём.

C++ Дан массив из n натуральных чисел. Удалить из массива все элементы, которые не являются

однозначными или двухзначными. Затем в двухзначных числах поменять местами цифры, а потом переместить однозначные числа в конец массива. При этом порядок следования чисел в группах (однозначные, двухзначные) не должен изменяться.Никак не могу перенести однозначные числа в конец массива. Буду рад любой помощи.
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Скрипов Кирилл.

#include <iostream>

#include <vector>

using namespace std;

int len(int N){

   int cnt = 0;

   while(N > 0){

       cnt++;

       N /= 10;

   }

   return cnt;

}

void swap_digits(int &N){

   string tmp;

   while(N > 0){

       tmp += N % 10 + '0';

       N /= 10;

   }

   N = stoi(tmp);

}

int main(){

   int n;

   cin >> n;

   vector<int> elems1, elems2;

   for(int i = 0; i < n; i++){

       int x;

       cin >> x;

       if(len(x) == 1)

           elems1.push_back(x);

       else if(len(x) == 2){

           swap_digits(x);

           elems2.push_back(x);

       }

   }

   for(auto &i : elems1)

       elems2.push_back(i);

   for(auto &i : elems2)

       cout << i << " ";

}

0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

Вы можете выполнить эту задачу в несколько этапов, используя стандартные контейнеры и алгоритмы C++:

  1. Создайте новый массив, в который будут добавляться только однозначные и двузначные числа, а также менять порядок цифр в двузначных числах.

  2. Создайте новый массив для однозначных чисел.

  3. Переберите исходный массив и выполните следующие действия:

    • Если текущий элемент - однозначное число, добавьте его в массив однозначных чисел.
    • Если текущий элемент - двузначное число, поменяйте порядок цифр и добавьте его в новый массив.
  4. После завершения перебора исходного массива, добавьте элементы из массива однозначных чисел в новый массив.

Вот пример реализации этой логики на C++:

cpp
#include <iostream> #include <vector> // Функция для перевода двузначных чисел int reverseTwoDigitNumber(int num) { return (num % 10) * 10 + (num / 10); } int main() { std::vector<int> originalArray = {12, 3, 45, 67, 8, 91, 24}; std::vector<int> newArray; // Массив для однозначных и двузначных чисел std::vector<int> oneDigitArray; // Массив для однозначных чисел for (int num : originalArray) { if (num >= 1 && num <= 99) { if (num >= 10) { // Если число двузначное, меняем порядок цифр num = reverseTwoDigitNumber(num); } newArray.push_back(num); } else if (num >= 1 && num <= 9) { oneDigitArray.push_back(num); } } // Добавляем однозначные числа в конец нового массива newArray.insert(newArray.end(), oneDigitArray.begin(), oneDigitArray.end()); // Вывод результата for (int num : newArray) { std::cout << num << " "; } return 0; }

Этот код создает новый массив newArray, в котором сначала содержатся двузначные числа с поменянным порядком цифр, а затем однозначные числа добавляются в конец массива.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос