Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Анимация сортировки

45K
09 августа 2009 года
Eugenio
15 / / 26.07.2009
Здравствуйте, посоветуйте, что нужно исправить, чтобы в данной программе при наличии в исходном массиве таких же чисел, какими инициализирован выходной массив(в данном случае -1) программа работала корректно. В данном случае, если видите -1 почему-то дважды показывается при выводе в выходной массив. Заранее благодарен.
Код:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<dos.h>

// вывод отдельных чисел
void print(int x, int n, int c)
{
int q, p, t=x;
 for(q=0; t!=0;++q,t/=10);
  if(x<0)
   ++q;
 for(p=0;p!=(n-q);++p)
  cprintf(“ “);
   textcolor(c);
    cprintf(“%1d”,x); //выводим число
}
void out(int AA[],int Ap,int App,int BB[],int Bp,int nn,int ll, int x,int xp,int y,int yp)
/*где АА-исходный массив, Ар-номер элемента исходного массива, который необходимо выделить, Арр-номер второго выделенного элемента исходного массива, ВВ-выходной массив, Вр-номер выделенного элемента выходного массива,
nn-число элементов в массивах, ll-длина наибольшего числа в массиве,х-число, которое следует вывести во второй строке, хр-его позиция,у-число, которое следует вывести в третьей строке, ур-также его позиция */

{
int a,b;
gotoxy(2,2);
for(a=0;a<nn;++a)
 {
   if(a==Ap)
   print(AA[a],ll,13); //при необходимости число выделяется
                               //разными цветами
   else
   if(a==App)
   print(AA[a],ll,9);
   else
   print(AA[a],ll,10);
 }
gotoxy(2,3);
  for(a=0;a<nn;++a)
   if(a==xp)
   print(x,ll,13);
   else
     for(b=0;b<ll;++b,cprintf(“ “));
 gotoxy(2,4);
    for(a=0;a<nn;++a)
     if(a==yp)
     print(y,ll,13);
    else
    for(b=0;b<ll;++b,cprintf(“ “));
gotoxy(2,5);
   for(a=0;a<nn;++a)
    if(a==Bp)
    print(BB[a],ll,13); //вывод чисел выходного массива
    else
    print(BB[a],ll,10);
delay(120);
}
void main()
{
int A[10]={10,87,90,-56,87,56,23,-1,-34,-2};
int B[10];
int n=sizeof(A)/sizeof(int);
int I,j,s,l,t,d;
_setcursortype(_NOCURSOR);
textbackgraund(0);
clrscr();
textcolor(12);
gotoxy(28,3);
cprintf(“Сортировка подсчетом”);
window(22,12,80,22);
textbackgraund(0);
clrscr();
for(i=0,l=0;i<n;++i)  //поиск самого большого числа
 {
   for(j=0,t=A;t!=0;++j,t/=10);
     if(j>l-1)
      l=j+1;
  }
   for(i=0;i<n;++i)   //заполнение выходного массива -1
     B=-1;
  for(j=0;j<n;++j)
 {
 for(i=0,s=0;i<n;++i)
 {
  if(A<A[j] || A==A[j] && i>j) // поиск чисел меньше j-го и отображение этого процесса
    ++s;
     out(A,j,I,B,s,n,l,-1,-1,-1,-1);
 }
  if(j<s)       //перенос выбранного числа в право
   for(i=j;i<s;++i)
   out(A,j,-1,B,s,n,l,A[j],I,-1,-1);
     if(j>s)   //влево, взависимости от его расположения в выходном массиве
       for(i=j;i>=s;--i)
       out(A,j,-1,B,s,n,l,A[j],I,-1,-1);
       out(A,j,-1,B,s,n,l,-1,-1,A[j],s); //”опускание” числа в выходной массив
       B=A[j];
       out(A,j,-1,B,s,n,l,-1,-1,-1,-1);
}
 for(i=0;i<n;++i)
   if(B==-1)
 {
out(A,-1,-1,B,I,n,l,-1,-1,-1,-1);
out(A,-1,-1,B,I,n,l,-1,-1,B,i);
out(A,-1,-1,B,I,n,l,B,I,-1,-1);
out(A,-1,-1,B,I,n,l,B,I,-1,-1);
out(A,-1.-1,B,I,n,l,-1,-1,B,i);
}
out(A,-1,-1,B,-1,n,l,-1,-1,-1,-1);  // отображение окончательного результата
getch();
}
14
10 августа 2009 года
Phodopus
3.3K / / 19.06.2008
Дебаггер
353
10 августа 2009 года
Nixus
840 / / 04.01.2007
Выпрямить руки того, кто так оформляет код, или, если не удастся, посоветовать ему заняться более полезным делом.
upd: Шедевр.
Цитата:
for(b=0;b<ll++b,cprintf(“ “));


Интересно, как оно вообще работает.

45K
10 августа 2009 года
Eugenio
15 / / 26.07.2009
Цитата: Nixus
Выпрямить руки того, кто так оформляет код, или, если не удастся, посоветовать ему заняться более полезным делом.
upd: Шедевр.

Интересно, как оно вообще работает.



Виноватс, друзья, исправлюсь. Посмотрите еще раз своим опытным глазом, вроде все исправил.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог