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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2016, 22:42   #1
verdant322
Пользователь
 
Регистрация: 22.05.2016
Сообщений: 26
По умолчанию Не работает помогите

и помогите нужно добавить направления сортировки (возможность выбрать как сортировать по убыванию или по возрастанию )

Код:
#include<iostream>
#include<ctime>
#include<string>

using namespace std;

const int N = 20;
int tmp;
int arr[N];

int Sort_Puzirkom()
{
	int w = 0;
	cout << "Пузырьком" << endl;
	for (int i = 0; i < N; i++)
	{
		arr[i] = rand() % 50;
		cout << arr[i] << " ";
	}
	cout << endl;
	for (int i = 0; i < N - 1; i++)
	{
		for (int j = 0; j < N - i - 1; j++)
		{
			if (arr[j]>arr[j + 1])
			{
				tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
				w++;
			}
		}
	}
	for (int i = 0; i < N; i++) {
		cout << arr[i] << " ";
	}
	return w;
}
int Sort_Viborom()
{
	int w1 = 0;
	cout << "Выбором" << endl;
	for (int i = 0; i < N; i++)
	{
		arr[i] = rand() % 50;
		cout << arr[i] << " ";
	}
	cout << endl;
	for (int i = 0; i < N; i++)
	{
		for (i = 0; i < N; i++)
			for (int j = i + 1; j < N; j++)
				if (arr[i] > arr[j])
				{
					int	tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
					w1++;
				}
		for (i = 0; i < N; i++)
			cout << arr[i] << " ";
	}
	return w1;
}
int Sort_Vstavkami()
{
	int w2 = 0;
	cout << "Вставками" << endl;
	for (int i = 0; i < N; i++)
	{
		arr[i] = rand() % 50;
		cout << arr[i] << " ";
	}
	cout << endl;
	for (int i = 1, j; i < N; ++i)
	{
		int tmp = arr[i];
		for (j = i - 1; j >= 0 && arr[j] > tmp; j--)
		{
			arr[j + 1] = arr[j];
			w2++;
		}
		arr[j + 1] = tmp;
		w2++;
	}
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] << " ";
	}
	return w2;
}
int Sort_Shela()
{
	cout << "Шелла" << endl;
	for (int i = 0; i < N; i++)
	{
		arr[i] = rand() % 50;
		cout << arr[i] << " ";
	}
	cout << endl;
	int w3 = 0;
	int s = N / 2;
	while (s > 0)
	{
		for (int i = 0; i < N - s; i++)
		{
			int j = i;
			while (j >= 0 && arr[j] > arr[j + s])
			{
				int tmp = arr[j];
				arr[j] = arr[j + s];
				arr[j + s] = tmp;
				j--;
				w3++;
			}
		}
		w3++;
		s = s / 2;
	}
	for (int i = 0; i < N; i++)
	{
		cout << arr[i] << " ";
	}
	return w3;
}

void main()
{
	srand(time(0));
	int w = 0, w1 = 0, w2 = 0, w3 = 0;
	int menu;
	int k = 0;
	setlocale(LC_ALL, "rus");
	while (true)
	{
		system("CLS");
		cout << "Выберите пункт: " << endl;
		cout << "Сортировки:" << endl;
		cout << "1)Пузырьком" << endl;
		cout << "2)Выбором" << endl;
		cout << "3)Вставками" << endl;
		cout << "4)Шелла" << endl;
		cout << "5)Эффективность сортировок" << endl;
		cout << "9)Выход из программы" << endl;
		cin >> menu;
		if (k == 1)
		{
			cout << "Сортировка пузирьком/n";
			w = Sort_Puzirkom();
			cout << endl;
			cout << "Отсортирован за " << w << " действия\n";
		}


		if (k == 2)
		{
			"Сортировка выбором/n";
			w1 = Sort_Viborom();
			cout << endl;
			cout << "Отсортирован за " << w1 << " действия\n";
		}

		if (k == 3)
		{
			"Сортировка вставками/n";
			w2 = Sort_Vstavkami();
			cout << endl;
			cout << "Отсортирован за " << w2 << " действия\n";
		}

		if (k == 4)
		{
			"Сортировка Шелла/n";
			w3 = Sort_Shela();
			cout << endl;
			cout << "Отсортировано за " << w3 << " действия\n";
		}
		if (k == 5)
		{
			if (w < w1 && w < w2 && w < w3)
			{
				cout << "Сортировка Пузырьком самая эффективная" << endl;
			}
			if (w1 < w && w1 < w2 && w1 < w3)
			{
				cout << "Сортировка Выбором самая эффективная" << endl;
			}
			if (w2 < w && w2 < w1 && w2 < w3)
			{
				cout << "Сортировка Вставками самая эффективная " << endl;
			}
			if (w3 < w && w3 < w1 && w3 < w2)
			{
				cout << "Сортировка Шелла самая эффетивная" << endl;
			}
		}
		if (k == 9)
		{
			cout << "\n";
			break;
		}

		else
		{


			system("PAUSE");
			

		}
	}
	}
verdant322 вне форума Ответить с цитированием
Старый 28.06.2016, 23:25   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

разве не проще спросить у автора этого кода?
имхо, направление сортировки тупо меняется одним единственным знаком неравенства "<" / ">".
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 28.06.2016, 23:39   #3
verdant322
Пользователь
 
Регистрация: 22.05.2016
Сообщений: 26
По умолчанию

это мой код
verdant322 вне форума Ответить с цитированием
Старый 28.06.2016, 23:56   #4
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

min@y™ прав, направление сортировки меняется только в месте

if (arr[j]>arr[j + 1])

на

if (arr[j]<arr[j + 1])

и всё.





Т.е. создаются новые ф-ции (2шт для каждого метода + и добавить/поправить меню не забудь) например (обрати внимание на знаки "<", ">" и новые названия ф-ций):


int Sort_Puzirkom_bolshe()
{
....
.....
if (arr[j]<arr[j + 1])
....
....
}


и новая ф-ция

int Sort_Puzirkom_menshe()
{
....
....
if (arr[j]>arr[j + 1])
....
....
}

и так для каждого метода сортировки.

Последний раз редактировалось ura_111; 29.06.2016 в 00:15.
ura_111 вне форума Ответить с цитированием
Старый 29.06.2016, 00:02   #5
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

Попробуй сначала сделать для метода

int Sort_Puzirkom()


протестируй. Если все будет норм, тогда переходи к следующему методу сортировки.
ura_111 вне форума Ответить с цитированием
Старый 29.06.2016, 00:12   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
это мой код
Верю!!!

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 29.06.2016, 09:21   #7
verdant322
Пользователь
 
Регистрация: 22.05.2016
Сообщений: 26
По умолчанию

всё получилось всем спасибо
verdant322 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает микрофон...помогите т.т guldan Windows 1 30.03.2016 10:10
Помогите разобраться - не работает файл со скриптом. При загрузке из консоли этот же скрипт работает Kazik JavaScript, Ajax 6 27.11.2015 16:09
Помогите!!! Как это работает? kazik83 Microsoft Office Excel 6 11.12.2013 14:34