Алгоритм перестановки элементов - C (СИ)
Формулировка задачи:
Здравствуйте. Кто нибудь подскажите алгоритм перестановки элементов таким образом:
дан вектор
исходный:
7894136
выходной:
6578941
перестановка производиться таким образом, что элемент в четной ячейке переходит в следующую четную,последняя четная в первую четную, а первая нечетная в сл неченую, п последняя нечетная в первую.
Решение задачи: «Алгоритм перестановки элементов»
textual
Листинг программы
#include <stdbool.h> #include <stdio.h> // Является ли данный индекс нечетным? bool is_odd(int idx) { return idx & 1; } // Следующая нечетная ячейка int next_odd_index(int idx, const size_t siz) { idx += 2; if( idx >= siz ) idx = 1; return idx; } // Следующая четная ячейка int next_even_index(int idx, const size_t siz) { idx += 2; if( idx >= siz ) idx = 0; return idx; } int main (int argc, char* argv[]) { const size_t siz = argc - 1; if( siz ) { int input_vector[siz]; int output_vector[siz]; int i = 0; do { input_vector[i] = atoi(argv[++i]); } while( i != siz ); for( i = 0; i < siz; ++i ) { if( is_odd(i) ) { output_vector[ next_odd_index(i, siz) ] = input_vector[i]; } else { output_vector[ next_even_index(i, siz) ] = input_vector[i]; } } for( i = 0; i < siz; ++i ) { printf("output_vector[%d] = %d\n", i, output_vector[i]); } } return 0; }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д