Информатика, вопрос задал Laace246 , 7 лет назад

Написать программу на языке C++

Приложения:

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

Ответил savap0
0

#include <iostream>

#include <ctime>

using namespace std;

int main() {

 srand( time(0) );

 int *mas = new int[100];

 int even_c = 0, odd_c = 0;

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

 mas[i] = 1 + rand() % 100;

 if (mas[i] % 2 == 0) even_c++; else odd_c++;

 }

 int *even = new int [even_c];

 int *odd = new int [odd_c];

 int temp = 0;

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

   if (mas[i] % 2 == 0) {even[temp] = mas[i]; temp++;}

 }

 temp = 0;

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

   if (mas[i] % 2 != 0) {odd[temp] = mas[i]; temp++;}

 }

delete[] mas;

 cout << "Even: ";

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

   cout << even[i] << " ";

 }

 cout <<endl << "Odd: ";

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

   cout << odd[i] << " ";

 }

}

Ответил DigitalAnnihilator
0
Какой из этого можно сделать вывод?

Мне было очень скучно, если я вам это рассписал.
А ещё, можно отметить, что даже с оптимизацией (все тесты и замеры выполненны с компиляцией с флагом оптимизации) ваш солюшн решает мой только в потреблении памяти, всего на 600 байт, зато в разы медленнее, в отдельных случаях в 2 раза.
Ответил DigitalAnnihilator
0
Так что пишите хороший код, коль с такой сложной абстракцией мой код все равно работает лучше, не забывайте return, а так же подчищать память, а иначе это позорно...

Спасибо за внимание)
Ответил DigitalAnnihilator
0
P.S.
Могу написать код ещё быстрее, избегая использования векторов))
Ответил DigitalAnnihilator
0
К слову тоже всего одним циклом, у вас 5, а у меня 1, ну круто же)
Ответил DigitalAnnihilator
0
К слову наврал, по графикам видно что код работает быстрее в среднем не в 2 раза а в 3-4
Новые вопросы