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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2010, 12:27   #1
kaxazver
Новичок
Джуниор
 
Регистрация: 26.04.2010
Сообщений: 1
По умолчанию Анимация сортироки вставками

помогите поправить код
как правильно организовать движение числа?

Код:
void mysort(int dt) 
{
  int razn,s,n;
  int a[10]={0},t,p,r=10,i,k,j,x=40,dx,dy,q,u=27;
 char scr[2]; p=r;

randomize();
	for(i=0; i<10; i++) //Zapolneni masiva 
	{
	//randomize();
 a[i]=rand()%100;
}

settextstyle(0,0,2);

moveto(120,100);

setcolor(1);

for(i=0;i<p;i++) //Вывод начального массива чисел
{

	moveto(120,100);
	moverel(x*i,0);
	sprintf(scr,"%i",a[i]);
	setcolor(6);
	outtext(scr);
	moveto(120,200);
	moverel(x*i,0);
	sprintf(scr,"%i",a[i]);
	setcolor(6);
	outtext(scr);
}
getch();

/** *Сортировка массива вставкой* **/

for(i=0;i<r;i++,p--) //проход по массиву
{
k=getmin(a,p);

// анимация перемещение числа
sprintf(scr,"%i",a[k]);
moveto(120,100);
moverel(x*k,0);
setcolor(i);
outtext(scr);
dx=x*k;
delay(dt);


// перемещение вверх
for(q=1;q<41;q++)
{
moveto(120,100);
moverel(dx,0);
moverel(0,-q+1);
setcolor(0);
outtext(scr);
moveto(120,100);
moverel(dx,0);
moverel(0,-q);
setcolor(q
);
outtext(scr);
delay(dt);
}

razn=k-i;
s=fabs(razn)*x+1;// расстояние на которое переместится число
n=1;
if(razn>0)n=-1; // направления перемещения

for(q=1;q<s;q++) // в бок
{
moveto(120,60);
moverel(dx,0);
moverel((q-1)*n,0);
setcolor(0);
outtext(scr);
moveto(120,60);
moverel(dx,0);
moverel(q*n,0);
setcolor(q);
outtext(scr);
delay(dt);
}
dx=x*i;



for(j=k;j>10-p;j--) // смещение чисел в массиве 
{
t=a[k];
a[j]=a[j-1];
a[razn]=t;
sprintf(scr,"%i",a[j-1]);
moveto(120,100);
dx=x*(j-1);
moverel(dx,0);

for(q=1;q<41;q++) // смещение хвоста массива
{
moveto(120,100);
moverel(dx,0);
moverel(q+1,0);
setcolor(0);
outtext(scr);
moveto(120,100);
moverel(dx,0);
moverel(q,0);
setcolor(1
);
outtext(scr);
delay(dt);
}
a[p]=a[k];
}


for(q=1;q<41;q++) // перемещение вниз
{
moveto(120,60);
moverel(dx,0);
moverel(0,q-1);
setcolor(0);
outtext(scr);
moveto(120,60);
moverel(dx,0);
moverel(0,q);
setcolor(q+2);
outtext(scr);
delay(dt);
}

}

moveto(20,420);
setcolor(5);
outtext("Any key for exit");
getch();
cleardevice();
}
kaxazver вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка вставками Katyunya Помощь студентам 1 20.04.2010 08:27
Сортировка вставками blind0482 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 02.12.2009 13:15
Сортировка вставками Pti44ka Помощь студентам 3 17.11.2009 16:49
Сортировка вставками двухмерного массива ponchikpk Помощь студентам 6 09.03.2009 13:34
Сортировка вставками глючит... Arkuz Общие вопросы Delphi 1 01.10.2007 21:44