#c #visual-c
Вопрос:
Например:
В первом файле есть эти номера: 10 1 5 -3 -9 -12 34 0 2 -52
Второй файл: -52 -9 0 2 10
Третий файл: -12 -3 1 5 34 Мой код:
#include lt;fstreamgt; #include lt;iostreamgt; #include lt;ctimegt; #include lt;algorithmgt; using namespace std; void main() { srand(time(NULL)); int n = 10; int *a = new int[n]; ifstream f("numbers.txt"); ofstream g("AscNum1.txt"); ofstream h("AscNum2.txt"); while (f.is_open()) { for (int i = 0; i lt; n; i ) { f gt;gt; a[i]; //reading numbers from file } sort(a, a n); for (int i = 0; i lt; n; i ) { if (i % 2 == 0) { g lt;lt; a[i] lt;lt; ' ';//writing number if its index is even } else h lt;lt; a[i] lt;lt; ' '; //writing number if its index is not even } h.close(); g.close(); f.close(); } }
В этом коде я сортирую перед «передачей» и «передачей» по четному индексу(второй файл содержит числа с четными индексами).
Как я могу «перенести» без использования сортировки? Как я могу сделать это по-другому?
Комментарии:
1. Прежде всего, нет необходимости
a
ни в указателе, ни в динамическом выделении. Во-вторых, нет необходимости и во внешнемwhile
цикле,if
вместо этого используйте обычный.2. Помимо пунктов, о которых я упоминал выше, почему вы думаете, что вам нужно сделать это по-другому? Или решить ее без сортировки? В чем на самом деле проблема с вашей программой?
3. @Someprogrammerdude Я думаю, что распределение чисел по индексам довольно примитивно
4. Можете ли вы рассказать мне о различиях между, например
int n = 10; int* a = new[n];
, иconstexpr size_t n = 10; int a[n];
(или даже простымint a[10];
)? Кроме того, с первым проще иметь проблемы с указателем (например, утечки памяти и т. Д.). Если вы действительно хотите использовать «динамический массив»std::vector
вместо этого (в этом случае вам не нужноn
будет очищать код), в противном случае используйтеstd::array
(в этом случае вам тоже не нужноn
).