Помогите исправить сортировку в проге

Ответить
Germana
Сообщения: 6
Зарегистрирован: 02 дек 2008, 23:07
Откуда: Украина, Донецкая обл., г. Торез

Мне необходимо переделать сортировку по возрастанию количества цифр в строке в сортировку по убыванию (это конкретная часть из программы).

Код: Выделить всё

int Sort::fcel (char*a)
		{
			int b=0;
			for (int i=0; i<strlen(a); i++)
				if (a[i]=='1'|| a[i]=='2'|| a[i]=='3'|| a[i]=='4'|| a[i]=='5'|| a[i]=='6'|| a[i]=='7'|| a[i]=='8'|| a[i]=='9'|| a[i]=='0')
					b++;
			return b;
		};

	void Sort::Add  (char*arg)
	{   
		cout<<"ADD Sort"<<endl;
		el*l, *cur1;
		asocel* cur;
		l=new el;
		l->info=new char[strlen(arg)];
		strcpy(l->info,arg);
		l->next = NULL;
		count++;
	if (Head==NULL)
		{
			asocel*as;
			as=new asocel;
			as->info=arg[0];
			as->down=NULL;
			as->next=l;
			Head=as;
		}
	else
		{
			cur=Head;
			while (cur->info!=arg[0]&&cur->down)
				cur=cur->down;
			if (cur->info==arg[0])
				{
					cur1=cur->next;
					int a=fcel(cur1->info);
					int b=fcel(l->info);
					while (cur1->next!=NULL&&(fcel(cur1->next->info)<fcel(l->info)))
						cur1=cur1->next;
					if (cur1->next==NULL)
						cur1->next=l;
					else 
					{
						l->next=cur1->next;
						cur1->next=l;
					}
				}
			else
				{
					asocel*as;
					as=new asocel;
					as->info=arg[0];
					as->down=NULL;
					as->next=l;
					cur->down=as;
				}
		}
	};
BBB
Сообщения: 1298
Зарегистрирован: 27 дек 2005, 13:37

Germana писал(а):переделать сортировку по возрастанию ... в сортировку по убыванию
Заменить в алгоритме сравнее на "больше" на стравнение на "меньше". И наоборот.
Germana
Сообщения: 6
Зарегистрирован: 02 дек 2008, 23:07
Откуда: Украина, Донецкая обл., г. Торез

Я так уже делала и ничего не изменилось поэтому и обратилась на форум
crazy_blu
Сообщения: 3
Зарегистрирован: 25 ноя 2008, 13:43
Откуда: Зеленоград/Москва

Код: Выделить всё

while (cur1->next!=NULL&&(fcel(cur1->next->info)[B]<[/B]fcel(l->info)))
поменяйте на

Код: Выделить всё

while (cur1->next!=NULL&&(fcel(cur1->next->info)[B]>[/B]fcel(l->info)))
Germana
Сообщения: 6
Зарегистрирован: 02 дек 2008, 23:07
Откуда: Украина, Донецкая обл., г. Торез

Спасибо конечно, но повторюсь, я всё это делала ещё до обращения на форум, и ничего не изменилось, поэтому и написала сюда.
Ответить