Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C++ ,помогите мне, пожалуйста

Владимир Стадников Ученик (87), закрыт 1 год назад
Вставить после первого нулевого элемента в массиве два элемента, равных заданному значению. Если вставка элементов невозможна, выдать об этом сообщение.
Лучший ответ
Николай Веселуха Высший разум (360718) 1 год назад
#include <iostream>
using namespace std;
int main() {
cout << "Array length: ";
size_t length;
cin >> length;
const size_t m = 2;
auto box = new int[length + m];
cout << "Elemnts: ";
for (size_t i = 0; i < length; ++i) {
cin >> box[i];
}
cout << "Value: ";
int value;
cin >> value;
auto end = box + length;
auto pos = end;
for (auto beg = box; beg != end; ++beg) {
if (0 == *beg) {
pos = beg;
break;
}
}
if (pos == end) puts("Not found!");
else {
auto cur = end - 1;
end = end + m;
auto beg = end - 1;
while (cur != pos) {
*beg = *cur;
--cur;
--beg;
}
for (size_t i = 0; i < m; ++i) {
*(++cur) = value;
}
length += m;
cout << "Elemnts: ";
for (size_t i = 0; i < length; ++i) {
cout << box[i] << ' ';
}
puts("");
}
delete[] box;
}
Остальные ответы
СобакаЦепная Ученик (160) 1 год назад
Я не умею я умею только Print
Сергей Гений (56253) 1 год назад
void insert_after_null(int arr[], int& size, int k)
{
int index_null = 0; //индекс предполагаемого нуля
if (size + 2 > 100) { cout << "Вставка не возможна\n"; return; } //если размер с учетом 2-х добавленных больше 100 выход
for (; index_null < size && arr[index_null]; index_null++); //цикл ищет нуль в массиве
if (index_null == size) { cout << "Нет нулей в массиве\n"; return; } //если индекс стал равен размеру массива, значит нуля не было
for (int i = size - 1; i != index_null; i--) arr[i + 2] = arr[i]; //перемещаем правую часть массива вправо на 2 элемента
arr[index_null + 1] = arr[index_null + 2] = k; //в освобожденное место записываем два раза наш элемент
size += 2; //увеличиваем размер массива на 2 (из за ссылки size изменится так же и в main)
}
Похожие вопросы