//4 скажите насколько это решение рациональное? придумал вот но по моему это все костыли..
#include
using namespace std;
#include
int main(){
int n, i;
int u = 0;
cin>>n;
//cout<<n/2;
int *a = new int [n];
int *b = new int [n/2];
for(i = 0; i < n; i++) {
cin>>a[i];
}
b[0] = a[0];
for(i = 1; i < n; i++) {
if(i%2 ==0 ) {
u++;
b[u]= a[i];
}
}
if(n%2 ==0)
for(i = 0; i < n/2; i++)
cout<<b[i];
else
for(i = 0; i <= n/2; i++)
cout<<b[i];
delete [] a,b;
return 0;
}
C/C++
Дан целочисленный массив с количеством элементов п. Сжать массив, выбросив из него каждый второй элемент.
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
class Random {
public:
Random() {
random_device device;
random_generator.seed(device());
}
int next(int first, int last) {
uniform_int_distribution<int> range(first, last);
return range(random_generator);
}
private:
mt19937 random_generator;
};
int main() {
cout << "Size: ";
size_t na;
cin >> na;
auto a = new int[na];
auto nb = (na >> 1) + (na & 1);
auto b = new int[nb];
Random rand;
for (auto i = 0U; i < na; ++i) a[i] = rand.next(10, 99);
for (auto i = 0U; i < na; ++i) cout << a[i] << ' ';
cout.put('\n');
auto bia = a;
auto bib = b;
auto eia = a + na;
while (bia < eia) {
*bib = *bia;
++bib;
bia += 2;
}
for (auto i = 0U; i < nb; ++i) cout << b[i] << ' ';
cout.put('\n');
delete[] a;
delete[] b;
system("pause > nul");
}
#include <iomanip>
#include <random>
using namespace std;
class Random {
public:
Random() {
random_device device;
random_generator.seed(device());
}
int next(int first, int last) {
uniform_int_distribution<int> range(first, last);
return range(random_generator);
}
private:
mt19937 random_generator;
};
int main() {
cout << "Size: ";
size_t na;
cin >> na;
auto a = new int[na];
auto nb = (na >> 1) + (na & 1);
auto b = new int[nb];
Random rand;
for (auto i = 0U; i < na; ++i) a[i] = rand.next(10, 99);
for (auto i = 0U; i < na; ++i) cout << a[i] << ' ';
cout.put('\n');
auto bia = a;
auto bib = b;
auto eia = a + na;
while (bia < eia) {
*bib = *bia;
++bib;
bia += 2;
}
for (auto i = 0U; i < nb; ++i) cout << b[i] << ' ';
cout.put('\n');
delete[] a;
delete[] b;
system("pause > nul");
}
Обычно delete [] a,b; пишется раздельно, так: delete [] a; delete [] b;
В любой версии компилятора C++ должно быть выдано предупреждение, что правый операнд после запятой не имеет эффекта.
Это вам, батенька, не сокращенное объявление, а удаление массива. Не путайте.)))
В любой версии компилятора C++ должно быть выдано предупреждение, что правый операнд после запятой не имеет эффекта.
Это вам, батенька, не сокращенное объявление, а удаление массива. Не путайте.)))
1. Зачем вручную колупаться с выделением-освобождением памяти, если есть векторы?
2. Зачем вообще вводить первый массив целиком, если можно сразу формировать массив ответа, выкидывая каждое второе число из ввода?
3. Последний if не нужен, можно просто сделать условие i < (n + 1) / 2.
4. Непонятно, чем a[0]=b[0] заслужил такое особое обращение, если все элементы дальше переносятся циклом непосредственно под этой строчкой. Лучше поменять цикл, чтобы нулевой элемент тоже им цеплялся.
2. Зачем вообще вводить первый массив целиком, если можно сразу формировать массив ответа, выкидывая каждое второе число из ввода?
3. Последний if не нужен, можно просто сделать условие i < (n + 1) / 2.
4. Непонятно, чем a[0]=b[0] заслужил такое особое обращение, если все элементы дальше переносятся циклом непосредственно под этой строчкой. Лучше поменять цикл, чтобы нулевой элемент тоже им цеплялся.
Юрий Гуреев
ну векторы мы еще не проходили, шарага)
если n =5 то n/2 = 5/2 = 2. получаем массив из 2, но нужен то из 3. не надо делать n/2. тебе жалко памяти?
Юрий Гуреев
ну так массив начинается с 0. Получаем 0 1 2 вот и 3 элемента
Андрей Шубин
точнее удалить каждый второй элемент)))) ну да ладно. пора спать)
Похожие вопросы
- Дан массив из N элементов (N < 1000), причем N - четное. Вставить в середину массива сумму всех элементов.
- Задание массива в С++ с переменным количеством элементов
- С++ | Как заменить макс. элементы (могут быть введены любые) массива на нули и вывести изменённый массив уже с нолями?!
- Задачка по СИ на вставку элемента в динамический массив.
- Написал функцию, которая добавляет элемент в конец массива, как можно улучшить? Нули не учитываются.
- Задан целочисленный массив размера N. Определить число элементов в массиве кратных 2.
- Если массив из 10 элементов содержит хотя бы один нулевой элемент
- Распределение элементов в динамическом массиве
- Написать функцию, определяющую количество положительных, отрицательных и нулевых элементов передаваемого ей массива.
- Каким образом можно удалить элементы из динамического массива C++(без использования вспомогательного массива)