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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2016, 15:59   #1
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию Поменять местами некие элементы(целые числа) в одномерном массиве - C++

Поменять местами первый и средний элемент, если количество
элементов массива нечетное, и два средних элемента, если размерность
массива четная.
ggjgj вне форума Ответить с цитированием
Старый 25.10.2016, 16:01   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

И таки в чем проблема?
p51x вне форума Ответить с цитированием
Старый 25.10.2016, 16:05   #3
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

Не могу разобраться как обозначить средний элемент и в целом что писать после ввода массива:
Код:
#include <iostream>
using namespace std;
int main()
{setlocale (LC_ALL,"rus");
	int n,i=0;
cout<<"n="; cin>>n;
int *a=new int [n];
cout<<"Введите элементы\n";
for(int i=0;i<n;i++){
	cin>>a[i];}
.....

Последний раз редактировалось Alex11223; 25.10.2016 в 16:11.
ggjgj вне форума Ответить с цитированием
Старый 25.10.2016, 16:10   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

1. Во-первых, вы все-таки должны запросить у пользователя количество элементов
2. Средний элемент обозначается так же, как и остальные a[какой-то_индекс]
3. Раз это средний элемент, то он делит массив... как? Следовательно, его номер будет вычисляться по простейшей формуле.
p51x вне форума Ответить с цитированием
Старый 25.10.2016, 16:16   #5
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

n это же и есть кол-во элементов.
Код:
#include <iostream>
using namespace std;
int main()
{setlocale (LC_ALL,"rus");
	int n,i=0;
cout<<"n="; cin>>n;
int *a=new int [n];
cout<<"Введите элементы\n";
for(int i=0;i<n;i++){
	cin>>a[i];}
if(i%2!=0 ) swap (a[0],a[i/2]);
if (a[i]%2==0) swap (a[i/2],a[i/2+1]);
 cout << a[i] << " ";
   
cout<<endl;
system("pause");
return 0;
}
Не могу никак понять, почему не выводит новый массив с преобразованиями? Выводит просто единицу..
ggjgj вне форума Ответить с цитированием
Старый 25.10.2016, 16:25   #6
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Если "n" - это количество элементов массива, тогда:

Код:
int d;

if(n %2!=0 ) 
{
d=A[0];
A[0]=A[(n-1)/2 ];
A[(n-1)/2 ]=d;
}
else
{
d=A[ n/2-1];
A[ n/2-1]=A[ n/2+1];
A[ n/2+1]=d;
}

Последний раз редактировалось ura_111; 25.10.2016 в 16:28.
ura_111 вне форума Ответить с цитированием
Старый 25.10.2016, 16:33   #7
ggjgj
Пользователь
 
Регистрация: 25.10.2016
Сообщений: 83
По умолчанию

Можно приземленнее и все таки исправить мой бредовый вариант? Ваш код почему-то не работает и выдает ошибку
ggjgj вне форума Ответить с цитированием
Старый 25.10.2016, 16:37   #8
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Хорошо. Минутку.
ura_111 вне форума Ответить с цитированием
Старый 25.10.2016, 16:39   #9
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,520
По умолчанию

Код:
#include <iostream>
#include <time.h>

using namespace std;

int main()
{
	int n;
	cout << "inputing arraying iteming counting" << endl;
	cin >> n;

	int *a = new int[n];
	srand((unsigned)time(NULL));

	for (int k = 0; k < 2; ++k, cout << endl)
	{
		for (int i = -1; i < n && (!k && i >= 0 && i < n ? a[i] = rand() % 100 + 1 : 1); ++i)
			i >= 0 ? cout << a[i] << " " : cout << (!k ? "randoming generating arraying" : "arraying aftering moving elemeting") << endl;

		!k ? (n & 1) ? a[0] ^= a[n / 2] ^= a[0] ^= a[n / 2] : a[n / 2 - 1] ^= a[n / 2] ^= a[n / 2 - 1] ^= a[n / 2] : 0;
	}

	cout << endl << "deleting arraying" << endl;
	delete[] a;

	cout << "deleting okaying" << endl;

	cout << "waiting charing" << endl;

	char c;
	cin >> c;

    return 0;
}
pu4koff вне форума Ответить с цитированием
Старый 25.10.2016, 16:45   #10
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Код:
#include <iostream>
using namespace std;

int main()
{
	setlocale(LC_ALL, "rus");
	int n, i = 0;
	cout << "n="; cin >> n;
	int *a = new int[n];
	cout << "Введите элементы\n";
	for (int i = 0; i<n; i++)
	{
		cin >> a[i];
	}

	int d;
	if (n % 2 != 0)
	{
		d = a[0];
		a[0] = a[(n - 1) / 2];
		a[(n - 1) / 2] = d;
	}
	else
	{
		d = a[n / 2 - 1];
		a[n / 2 - 1] = a[n / 2];
		a[n / 2] = d;
	}	
	cout << endl << "Massiv:";
	for (int i = 0; i < n; i++)
	{
		cout << " " << a[i];
	}
	cout << endl;
	cout << endl;
	delete a;
	system("pause");
	return 0;
}
ura_111 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
DELPHI.поменять индексы местами в одномерном массиве dozimetrist Помощь студентам 9 19.11.2013 00:20
В одномерном массиве найти наибольший элемент и поменять его местами с последним nawka Помощь студентам 3 15.01.2012 13:34
Поменять местами элементы в массиве! Angel-dm Паскаль, Turbo Pascal, PascalABC.NET 5 14.04.2010 14:59
Поменять местами элементы в массиве (реверс) Андрей.12 Помощь студентам 7 15.11.2009 16:51