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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2016, 23:59   #1
Aleks70694
 
Регистрация: 07.03.2016
Сообщений: 5
По умолчанию Поправить сортировку по алфавиту C++

Не могу понять в чем ошибка.
Поначалу вроде всё нормально сделал, думал работает, после добавления слова Абзац моё чувство гордости за рабочий(как я думал), какой никакой код, развеялось.
PHP код:
#include <iostream>
using namespace std;
const 
int N 7;

int main () 
{
setlocale(LC_ALL"Russian");
int a 0;
charmassiv[N] = {"Приставка""Просто""Правота""Пила""Прабабушка""Папа""Абзац"};
for (
int i=0i<7i++)
for (
int j=0j<4j++)
for (
int k=i+1k<7k++)
if (
massiv[i][j] > massiv[k][j])
{
chartemp;
temp massiv[k];
massiv[k] = massiv[i];
massiv[i] = temp;
}
for (
int i=0i<7i++)
cout << massiv[i];
system("pause");
return 
0;

Изображения
Тип файла: jpg 2016-05-19_23-53-00.jpg (13.2 Кб, 122 просмотров)

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

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

int N =7;
char* massiv[] = { "Приставка", "Просто", "Правота", "Пила", "Прабабушка", "Папа", "Абзац" };

//int N = 10;
//char* massiv[] = { "Приставка", "Рубашка", "Прирост", "Просто", "Жеребец", "Жека", "Папа", "Абзац", "Руторг", "Прости" }; 


void sortirovka(int in, int ik, int n )         // Сортировка 
{
	for (int i = in; i < ik; i++)
	{
		for (int j = i + 1; j < ik+1; j++)
		{
			if (massiv[i][n] > massiv[j][n])
			{
				char* temp;
				temp = massiv[j];
				massiv[j] = massiv[i];
				massiv[i] = temp;
			}
		}
	}
}

int main()
{
	setlocale(LC_ALL, "Russian");
	int a;

	sortirovka(0, N-1, 0);
	
	for (int j = 0; j < 3; j++)      // Мин. длина слова в списке (эквивалент точности)
	{
		for (int i = 0; i < N; i++)
		{
			a = i;
			char* temp;
			temp = massiv[i];
			while (i<N)
			{
				if (i+1 == N) break;
				if (temp[j] == massiv[i+1][j])
					i++;	
				else
					break;
			}
			sortirovka(a, i, j + 1);
		}
	}
	
	for (int i = 0; i<N; i++)
		cout << massiv[i] << endl;
	system("pause");
	return 0;
}
ura_111 вне форума Ответить с цитированием
Старый 20.05.2016, 15:50   #3
nworm
Пользователь
 
Регистрация: 08.11.2008
Сообщений: 15
По умолчанию

Смотря для чего нужно. Если у Вас задание - реализовать конкретный алгоритм или что-то в этом роде, в общем с какими-то ограничениями, то, да, разумно делать примерно такое как у Вас.

Но, в принципе, сортировки реализованы в С++.
Вот такую пишете сортировочную функцию
Код:
static int comp1(const void *left, const void *right)
{
   char *l = *(char **) left;
   char *r = *(char **) right;
   return -strcmp(r, l);
}
и запускаете qsort.

Код:
  char* sort_int_array[] = {"Приставка", "Просто", "Правота", "Пила", "Прабабушка", "Папа", "Абзац"};
 
  qsort (sort_int_array, 7, sizeof(char *), comp1);
Вот тутесть пример qsort для массива int

Ваша программа работает, если немного поправить:
Код:
#include <iostream>
using namespace std;
const int N = 7;

int main ()
{
setlocale(LC_ALL, "Russian");
int a = 0;
char* massiv[N] = {"Приставка", "Просто", "Правота", "Пила", "Прабабушка", "Папа", "Абзац"};
for (int i=0; i<7; i++)
for (int k=i+1; k<7; k++)
//for (int j=0; j<4; j++)
if (strcmp(massiv[i],massiv[k])>0)
{
char* temp;
temp = massiv[k];
massiv[k] = massiv[i];
massiv[i] = temp;
}
for (int i=0; i<7; i++)
cout << massiv[i];
system("pause");
return 0;
}
nworm вне форума Ответить с цитированием
Старый 22.05.2016, 02:43   #4
Aleks70694
 
Регистрация: 07.03.2016
Сообщений: 5
По умолчанию

Большое спасибо ura_111 за еще один пример реализации!
Отдельное спасибо nworm за правку моего кода, лучше для понимания и, собственно, что я и хотел)

Последний раз редактировалось Aleks70694; 22.05.2016 в 02:48.
Aleks70694 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите сделать сортировку по алфавиту Quattro2033 Visual C++ 0 11.12.2013 20:09
Поправить сортировку по цвету ts3 Microsoft Office Excel 3 14.09.2011 00:05
Помогите переделать файловую сортировку на сортировку динамич. списков Taisja Помощь студентам 2 15.06.2008 16:10
StringGrid сделать сортировку по алфавиту Римма Компоненты Delphi 6 12.10.2007 16:15