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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2011, 01:39   #1
Freeman-des
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 53
По умолчанию

15. Задан массив размерностью 2n. Поменять местами четные и нечетные элементы.

Конечно, сейчас ночь и глаза закрываются, но я придумал следующий алгоритм. Но что-то программа вообще ничего не делает. В чем дело?
Код:
	#include <iostream>
	
	using namespace std;

	void main()
	{
		int arr[4], brr[4],i,j;
	
		j=0;

	for (i=0;i<4;i++)
	{
	cin >> arr[i];
	}
	i=0;
	
		while (i<4)
		{
			if ((i%2)==0) brr[j]=arr[i];
			i++;
				j++;
				while (i<4)
				{
					if (!((i%2)==0)) brr[j]=arr[i];
				}
		}
	for (j=0;j<4;j++)
		cout << brr[j];
	}
На самом деле тут просят размерность 2n, но я решил сделать для 4.

Последний раз редактировалось Stilet; 16.01.2011 в 10:34.
Freeman-des вне форума Ответить с цитированием
Старый 16.01.2011, 02:04   #2
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

Я не спец по С но у меня сомнение вызывает выделенная красным конструкция (помоему этот цикл никогда не закончится ^__^):
Код:
	#include <iostream>
	using namespace std;
	void main()
	{
		int arr[4], brr[4],i,j;
		j=0;
		for (i=0;i<4;i++)

		{

			cin >> arr[i];

		}

		i=0;

		while (i<4)

		{

			if ((i%2)==0) brr[j]=arr[i];

			i++;

			j++;

			while (i<4)

			{

				if (!((i%2)==0)) brr[j]=arr[i];
			}
		}
	for (j=0;j<4;j++)
		cout << brr[j];
	}

И наверно реинтабельнее сделать место для заменя местами так:
Код:
for (i=2;i<4;i+=2)
{
	brr[i-1] = arr[i];
	brr[i] = arr[i-1];
}
Помог? Ну так нажми на весы!

Последний раз редактировалось SNUPY; 16.01.2011 в 02:12.
SNUPY вне форума Ответить с цитированием
Старый 16.01.2011, 02:29   #3
Freeman-des
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 53
По умолчанию

Да нет. Тут вообще у меня все в корне неверно.
Freeman-des вне форума Ответить с цитированием
Старый 16.01.2011, 08:28   #4
kaljan775
:D
Форумчанин
 
Аватар для kaljan775
 
Регистрация: 26.09.2010
Сообщений: 570
По умолчанию

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

using namespace std;

void swap(int *x,int *y){//замена
	int c=*x;
	*x=*y;
	*y=c;
}

int main(){
int i,j;
	int a[100];
	for (i=0;i<100;i++) a[i]=rand()%100;
	
	for (i=0;i<100;i++){
		if (!{a[i]%2}){//если элемент четный
			for (j=i+1;j<100;j++){
				if (a[j]%2)//если элемент нечетный
					swap(a[i],a[j]);//меняем элементы местами
			}
			i=j;//
		}
	}
}
Пишу ПО, создаю сайты, делаю курсовые работы, за деньги
C#, .NET, MS SQL, AngularJS, HTML, jQuery
kaljan775 вне форума Ответить с цитированием
Старый 16.01.2011, 17:58   #5
Freeman-des
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 53
По умолчанию

Короче, я доделал ту программу - работает.

Цитата:
#include <iostream>

using namespace std;

void main()
{

int arr[4], brr[4],i,j;
j=0;

for (i=0;i<4;i++)
{
cin >> arr[i];
}
i=0;

while (i<4)
{
if ((i%2)==0) brr[j+1]=arr[i];
i++;
j++;

if ((i%2)!=0) brr[j-1]=arr[i];
i++;
j++;

}
for (j=0;j<4;j++)
cout << brr[j];
}
Но это только для 4. А как мне сделать для 2n? Ведь количество элементов массива должно быть задано перед компиляцией. Или тут использовать new?
Freeman-des вне форума Ответить с цитированием
Старый 16.01.2011, 18:29   #6
Freeman-des
Пользователь
 
Регистрация: 10.11.2010
Сообщений: 53
По умолчанию

впрочем я уже справился с помощью new
Freeman-des вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Массив в dll - как разместить массив в dll и как вызвать элемент этого массива по индексу? Кинельски Помощь студентам 0 23.05.2010 20:52
Конверт int массива в char массив Raptor Помощь студентам 14 23.03.2010 00:50
из массива в массив !!! zerob132 Паскаль, Turbo Pascal, PascalABC.NET 0 12.05.2009 18:25
Добавление элементов массива в массив JOFRIF Общие вопросы C/C++ 11 04.10.2008 01:47
запись с массива в массив тормозит? valgusk Общие вопросы Delphi 0 01.05.2008 17:45