Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2012, 01:33   #1
Mayers
 
Регистрация: 06.05.2012
Сообщений: 5
По умолчанию Переставить элементы массива в обратном порядке

Дан массив размера 10. Переставить в обратном порядке элементы массива, расположенные между его минимальным и максимальным элементами(все элементы массива различны).
Mayers вне форума Ответить с цитированием
Старый 06.05.2012, 01:57   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

http://www.programmersforum.ru/showthread.php?t=34061
_Bers вне форума Ответить с цитированием
Старый 06.05.2012, 10:13   #3
Trigger man
Пользователь
 
Аватар для Trigger man
 
Регистрация: 03.05.2012
Сообщений: 21
По умолчанию

А я пожалуй решу. Сегодня воскресенье, делать нечего, да и балл пригодится

Код:
#include "stdafx.h"
#include "iostream"
#include "clocale"
using namespace std;

const int Max = 10;                                   // размер массива

void swap(int *a, int *b);                          // обмен двух переменных
void swap_arr(int arr[], int start, int end);    // перестановка в обратном порядке между start и end

int _tmain(int argc, _TCHAR* argv[])
{
	setlocale(LC_ALL, "russian");

	int arr[Max];
	int i;

	// заполнение массива
	for (i=0; i<Max; i++)
	{
		cout << "Введите элемент №" << (i+1) << " из " << Max << ": ";
		cin >> arr[i];
	}


	int min, max, index_min, index_max;
	min = max = arr[0];

	// поиск минимального, максимального и их индексов
	for (i=1; i<Max; i++)
	{
		if (arr[i] > max)
		{
			max = arr[i];
			index_max = i;
		}

		if (arr[i] < min)
		{
			min = arr[i];
			index_min = i;
		}
	}

           // обмен между минимальным и максимальным
	if (index_min < index_max)
		swap_arr(arr, index_min, index_max);
	else
		swap_arr(arr, index_max, index_min);


	// результат
	for (i=0; i<Max; i++)
		cout << arr[i] << ' ';



	cout << "\n\n";
	system("pause");
	return 0;
}



void swap(int *a, int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}


void swap_arr(int arr[], int start, int end)
{
	for (int i=start; i<=(start+end)/2; i++)
		swap(&arr[i], &arr[start+end-i]);
}

Последний раз редактировалось Trigger man; 06.05.2012 в 14:07. Причина: Забыл написать & в последней функции.
Trigger man вне форума Ответить с цитированием
Старый 06.05.2012, 12:15   #4
Mayers
 
Регистрация: 06.05.2012
Сообщений: 5
По умолчанию

Спасибо! Я так понял это на С++, а мне правда на С нужно. Попробую разобраться.
Mayers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переставить слова в предложении в обратном порядке TLiX Помощь студентам 1 31.03.2012 19:57
Переставить строки в обратном порядке на фортране Александррррррр Помощь студентам 0 18.12.2011 19:38
ВЫвести элементы массива в обратном порядке Кристина Н Паскаль, Turbo Pascal, PascalABC.NET 1 01.12.2011 08:25
Поместить элементы Одного массива, в начало другого в обратном порядке. Adrenalin4 Общие вопросы C/C++ 2 15.11.2010 21:51
как реализовать функцию для того что бы скопировать элементы одного массива во второй в обратном порядке mansp Общие вопросы C/C++ 8 28.10.2010 15:48