|
Главная | Правила | Регистрация | Дневники | Справка | Пользователи | Календарь | Поиск | Сообщения за день | Все разделы прочитаны |
![]() |
|
Опции темы | Опции просмотра |
![]() |
#1 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() дан вектор исходный: 7894136 выходной: 6578941 перестановка производиться таким образом, что элемент в четной ячейке переходит в следующую четную,последняя четная в первую четную, а первая нечетная в сл нечетную, а последняя нечетная в первую. ![]() |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно, данная тема уже решена ранее Составить алгоритм и написать код Составить алгоритм Алгоритм rle Описать алгоритм Алгоритм Алгоритм с возвратом |
![]() |
#2 (permalink) |
Member
Регистрация: 07.08.2012
Адрес: Находка, Приморский край
Сообщений: 334
Сказал(а) спасибо: 14
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1671
|
![]()
Ну, вкратце так:
У нас, как я понимаю, вектор фиксированной длины. Начнем с нечетных ячеек. Последнее значение запоминаем во временную переменную, потом предпоследнее нечетное двигаем на последнее место и т.д. Т.е. сдвиг делаем из конца в начало. Финальным этапом записываем число из переменной в первое нечетное. Таким же макаром гоняем и четные ![]() Еще один вариант - гонять попарно: Значения двух последних ячеек сохраняем в две переменные, делаем сдвиг, как и в предыдущем случае, только каждое число сдвигаем на +2, и потом значения из переменных записываем в первые две ячейки. ![]() Второй вариант прокатит с вектором любой длины; единственное, сначала надо будет определить, последняя ячейка четная или нет. Если да, то просто сдвигаем все, как я указал выше. Если нет - сдвигаем все числа, а переменные при записи меняем местами. Например, последняя ячейка вектора у нас четная. Значение предпоследней ячейки пишем в А, последней - в В. После сдвига содержимое А идет в 1-ю ячейку, содержимое В - во 2-ю. Если последняя ячейка нечетная, то содержимое А идет во 2-ю ячейку, содержимое В - в 1-ю. |
![]() |
![]() |
![]() |
#3 (permalink) |
Member
Регистрация: 29.09.2012
Сообщений: 72
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]()
код составил перестановка работает не совсем как должна, переставляем справа налево, а должна слева на право.
Код:
#include <stdio.h> #include <conio.h> #include <math.h> //#include <time.h> int main() { int i, n,m, v_min, v_max,temp; time_t t; // текущее время для инициализации // генератора случайных чисел srand((unsigned) time(&t)); // инициализация генератора // случайных чисел printf("\nZadanie 1"); printf("\nEnter the range of random numbers:\n"); printf("\nv_min="); scanf("%d", &v_min); printf("\nv_max="); scanf("%d", &v_max); printf("\nLength vektora:"); scanf("%d", &n); int vector[n]; printf("\nOriginal vector:\n"); m = v_max-v_min + 1; for (i=0; i<n; i++) { // получение случайного числа в диапазоне // от vector_min до vector_max vector[i]=rand()% m + v_min; printf(" %5d", vector[i]); } printf("\n"); for (i = 1; i < n-1; i++) { if (i % 2 == 0) { temp=vector[i+1]; vector[i+1]=vector[i-1]; vector[i-1]=temp; } } for (i = 0; i < n-1; i++) { if (i % 2 != 0) { temp=vector[i+1]; vector[i+1]=vector[i-1]; vector[i-1]=temp; } } printf("\nObtained vector:\n"); for (i=0; i<n; i++) { printf(" %5d", vector[i]); } printf("\n"); return 0; } |
![]() |
![]() |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|