
C++ С одномерным массивом, состоящим из n вещественных элементов, выполнить следующее:
Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных. Используя эту функцию, определить вышеуказанное к заданным массивам а[10], b[20]

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

#include <iostream>
using namespace std;
int main() {
setlocale(LC_ALL, "Russian");
int N;
cout << "Введите количество элементов в массиве";
cin >> N;
float* mz = new float[N];
for (int i = 0; i < N; i++) {
cin >> mz[i];
}
float d;
for (int i = 0; i < N-1; i++) {
for (int j = 0; j < N-1; j++) {
if (mz[j] == 0) {
d = mz[j + 1];
mz[j + 1] = mz[j];
mz[j] = d;
}
}
}
for (int i = 0; i < N; i++) {
cout << mz[i] << " ";
}
return 0;
}



Для выполнения этой задачи вам нужно создать функцию, которая преобразует массив так, чтобы все элементы, равные нулю, располагались после всех остальных элементов. Для примера, давайте напишем код на C++, который выполняет это действие с одномерными массивами. Вам нужно будет применить эту функцию к массивам `a` и `b`.
```cpp
#include
// Функция для перестановки нулей в конец массива void moveZerosToEnd(double arr[], int n) { int count = 0; // Счетчик нулей
// Перемещаем ненулевые элементы в начало массива for (int i = 0; i < n; i++) { if (arr[i] != 0) { arr[count] = arr[i]; count++; } }
// Заполняем конец массива нулями while (count < n) { arr[count] = 0; count++; } }
int main() { double a[10] = {1.0, 0.0, 2.0, 0.0, 3.0, 0.0, 4.0, 0.0, 5.0, 0.0}; double b[20] = {0.0, 7.0, 0.0, 0.0, 8.0, 0.0, 9.0, 0.0, 10.0, 0.0, 11.0, 0.0, 12.0, 0.0, 13.0, 0.0, 14.0, 0.0, 15.0, 0.0};
int n_a = sizeof(a) / sizeof(a[0]); int n_b = sizeof(b) / sizeof(b[0]);
// Вызываем функцию для массива a moveZerosToEnd(a, n_a);
// Выводим результат std::cout << "Массив a после преобразования: "; for (int i = 0; i < n_a; i++) { std::cout << a[i] << " "; } std::cout << std::endl;
// Вызываем функцию для массива b moveZerosToEnd(b, n_b);
// Выводим результат std::cout << "Массив b после преобразования: "; for (int i = 0; i < n_b; i++) { std::cout << b[i] << " "; } std::cout << std::endl;
return 0; } ```
В этом коде функция `moveZerosToEnd` принимает массив и его размер `n`. Она переставляет нули в конец массива, сохраняя порядок ненулевых элементов. После этого код применяет эту функцию к массивам `a` и `b` и выводит результаты.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili