таблица
От: ah  
Дата: 27.11.05 08:06
Оценка:
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define gor 4
#define ver 4
int i,j,min,x,y,mas[gor][ver];
int k,n=0;
void main(void)
{
clrscr();
 gotoxy(1,2);
 printf("║");
  gotoxy(gor*4+1,2);
 printf("║");
gotoxy(1,1);
printf("╔═══");
gotoxy(gor*4+1,1);
printf("╗");
gotoxy(1,gor*2+1);
printf("╚═══");
gotoxy(gor*4+1,gor*2+1);
printf("╝");

for(i=1;i<gor;i++)
{
 gotoxy((i)*4+1,1);
 printf("╦═══");
 gotoxy((i)*4+1,gor*2+1);
 printf("╩═══");
 gotoxy(1,(i+1)*2-1);
 printf("╠");
 gotoxy(1,(i+1)*2);
 printf("║");
 gotoxy(gor*4+1,(i+1)*2-1);
 printf("╣");
 gotoxy(gor*4+1,(i+1)*2);
 printf("║");
 gotoxy(i*4+1,gor*2);
 printf("║");
 gotoxy(2,i*2+1);
 printf("═══");
 }
 for(i=1;i<gor;i++)
    for(j=1;j<gor;j++)
    {
        gotoxy((i)*4+1,j*2+1);
        printf("╬═══");
        gotoxy((i)*4+1,j*2);
        printf("║");
        }


             for(i=0;i<gor;i++)
         {
         for(j=0;j<ver;j++)
                 {  gotoxy(2+4*k,2+2*n);
                     scanf("%3d",&mas[i][j]);
                        k++;
                        }
         k=0;
         n++;
         }
         
         gotoxy(30,7);
         printf("Icxodnij massiv");
         gotoxy(30,8);
         for(i=0;i<gor;i++)
            {
             gotoxy(30,8+k);
             for(j=0;j<ver;j++)
                 if(mas[i][j]%2==0)
                 {

                                                cprintf("%3d",mas[i][j]);
                     }
                    else
                         {
        cprintf("%3d",mas[i][j]);
                   }
            printf("\n");
            k++;
         }
                 }



я вывожу массив в виде таблицы,
теперь нужно сделать пошаговую сортировку,т.е в этом массиве подсчечиваем цветом мин элемент,жмем ентер, он ставит его на 1 место, затем подсвечиваем 2-ой по минимальности,жмем ентер, и он встает за первым
то есть идет та же сортировка по возрастанию только как бы в пошаговом режиме(вывод отстортированного массиво можно делать просто,не в виде таблицы)....помогите плизз это сделать

пока никто не знает как это делать....=((
Re: таблица
От: BitField Украина http://lazy-bitfield.blogspot.com
Дата: 27.11.05 10:35
Оценка: 1 (1)
Здравствуйте, ah, Вы писали:

1. Отделяй мух от котлет -- повыноси вывод массива и ввод данных в отдельные фунции -- себе же понятней будет, И вывод рамки тоже в отдельную процедуру вынеси.

2. Это обрезанный вариант или оно так и есть?(найдите 0 отличий)
if(mas[i][j]%2==0)
{
  cprintf("%3d",mas[i][j]);
}
else
{
  cprintf("%3d",mas[i][j]);
}


ah>я вывожу массив в виде таблицы,

ah>теперь нужно сделать пошаговую сортировку,т.е в этом массиве подсчечиваем цветом мин элемент,жмем ентер, он ставит его на 1 место, затем подсвечиваем 2-ой по минимальности,жмем ентер, и он встает за первым
ah>то есть идет та же сортировка по возрастанию только как бы в пошаговом режиме(вывод отстортированного массиво можно делать просто,не в виде таблицы)....помогите плизз это сделать

Тебе надо отсортировать 2-хмерный массив. Должны ли элементы идти по возрастанию по-горизонтали или по-вертикали? А какой тип сортировки? Вставками, заменой, пузырек, квик-сорт наконец?
Пример: Сортировка заменой по-горизонтали (интуитивно я догадываюсь, что это то что тебе нужно)

for (i = 0; i < n; ++i)
  for (j = 0; j < n; ++j)
  {
    min_i = i;
    min_j = j;
     
    //досмотрим до конца i-ю строку 
    for (jj = j + 1; jj < n; ++jj)
      if (mas[i][jj] < mas[min_i][min_j]) 
        min_j = jj;

    //цикл по остальным строкам
    for (ii = i + 1; ii < n; ++ii)
      for (jj = 0; jj < n; ++jj)
        if (mas[ii][jj] < mas[min_i][min_j])
        {
           min_i == ii; min_j == jj;
        }
    
    //подсветили min[min_i][min_j]
    Highlight(min_i, min_j);

    //дождались энтера
    WaitForEnter();

    //поменяли местами с mas[i, j]
    temp = mas[i][j];
    mas[i][j] = mas[min_i][min_j];
    mas[min_i][min_j] = temp;
    
    //перерисовали массив
    DrawArray();
  }
Re: таблица
От: ah  
Дата: 28.11.05 06:07
Оценка:
хм...ну мне надо для этой проги сделать сортировку,BorlandC а не C++
сортировку любую

например если было
5 6
2 4


то должно стать
2 3
5 6
Re: таблица
От: ah  
Дата: 28.11.05 09:54
Оценка:
вот изменила немного
поможьте плизз

сделать сортировку пошаговую
для этой проги


#include <stdio.h>
#include <conio.h>

#define gor 2
#define ver 2

int mas[gor][ver],i,j;
int k,n=0;
void outitem(short int x, short int y, char* text) {
gotoxy(x,y);

textcolor (22);
cprintf("%s", text);
}
void vivod(short int x, short int y) {
gotoxy(x,y);

textcolor (15);
}

int main() {
clrscr();

outitem(1,2,       "║");
outitem(gor*4+1,2, "║");
outitem(1,1,       "╔═══");
outitem(gor*4+1,1, "╗");
outitem(1,gor*2+1, "╚═══");
outitem(gor*4+1,gor*2+1, "╝");
for(i=1;i<gor;i++)
{
outitem((i)*4+1,1,       "╦═══");
outitem((i)*4+1,gor*2+1 ,"╩═══");
outitem(1,(i+1)*2-1,        "╠");
outitem(1,(i+1)*2,          "║");
outitem(gor*4+1,(i+1)*2-1,  "╣");
outitem(gor*4+1,(i+1)*2,    "║");
outitem(i*4+1,gor*2,        "║");
outitem(2,i*2+1,          "═══");
}
for(i=1;i<gor;i++)
for(j=1;j<gor;j++)
    {
outitem((i)*4+1,j*2+ 1,     "╦═══");
outitem((i)*4+1,j*2,        "║");
}

 for(i=0;i<gor;i++)
         {
         for(j=0;j<ver;j++)
                 {  gotoxy(2+4*k,2+2*n);
                     scanf("%3d",&mas[i][j]);
                        k++;
                        }
         k=0;
         n++;
         }
         vivod(40,2) ;
         printf("Icxodnij massiv") ;
         vivod(40,2);
         printf("Icxodnij massiv");
         vivod(40,8);
         for(i=0;i<gor;i++)
                {
             vivod(40,3+k);
             for(j=0;j<ver;j++)
                     if(mas[i][j]%2==0)
                     {

                                                cprintf("%3d",mas[i][j]);
                     }
                    else
                         {
                                cprintf("%3d",mas[i][j]);
                         }
            printf("\n");
            k++;
                 }
                 }
Re: таблица
От: ah  
Дата: 28.11.05 13:56
Оценка:
#include <stdio.h>
#include <conio.h>

#define gor 2
#define ver 2

int mas[gor][ver],i,j,ii,jj,len,temp,tmp;
int k,n=0;
void outitem(short int x, short int y, char* text) {
gotoxy(x,y);

textcolor (22);
cprintf("%s", text);
}
void write(int i) {
outitem((i)*4+1,1,       "╦═══");
outitem((i)*4+1,gor*2+1 ,"╩═══");
outitem(1,(i+1)*2-1,        "╠");
outitem(1,(i+1)*2,          "║");
outitem(gor*4+1,(i+1)*2-1,  "╣");
outitem(gor*4+1,(i+1)*2,    "║");
outitem(i*4+1,gor*2,        "║");
outitem(2,i*2+1,          "═══");
}
void vivod(short int x, short int y) {
gotoxy(x,y);

textcolor (15);
}

int main() {
clrscr();

outitem(1,2,       "║");
outitem(gor*4+1,2, "║");
outitem(1,1,       "╔═══");
outitem(gor*4+1,1, "╗");
outitem(1,gor*2+1, "╚═══");
outitem(gor*4+1,gor*2+1, "╝");
for(i=1;i<gor;i++)
{
write(i);
}
for(i=1;i<gor;i++)
for(j=1;j<gor;j++)
    {
outitem((i)*4+1,j*2+ 1,     "╦═══");
outitem((i)*4+1,j*2,        "║");
}
//////////////zapolnenie tablici
 for(i=0;i<gor;i++)
         {
         for(j=0;j<ver;j++)
                 {  gotoxy(2+4*k,2+2*n);
                     scanf("%3d",&mas[i][j]);
                        k++;
                        }
         k=0;
         n++;
         }
         //////// vivod massiva
         vivod(40,2) ;
         printf("Icxodnij massiv") ;
         vivod(40,2);
         printf("Icxodnij massiv");
         vivod(40,8);
         for(i=0;i<gor;i++)
                {
             vivod(40,3+k);
             for(j=0;j<ver;j++)

                     {

                                                cprintf("%3d",mas[i][j]);

                     }
            printf("\n");
            k++;
                 }       vivod(40,8);
                            printf("sortirovka massiva");
                 len=gor*ver;
                 i=ii;
                 j=jj+1;
 if(j>len) {
         j=1;
         i++; }
                while (i<len && j<len){
                if  (mas[ii][jj]>mas[i][j]){
                tmp=mas[i][j]         ;
                mas[i][j]=mas[ii][jj];
                mas[ii][jj]=tmp;
                textcolor(3);
                cprintf("%3d",mas[ii][jj]);
                textcolor(6);
                cprintf("%3d",mas[i][j]);
                }
                j++;
                if (j>len){
                j=1;
                i++;
                }

                vivod(40,10+k);
                cprintf("%3d",mas[ii][jj]);
         }
                 }


все равно сортировка пошаговая не получается как то
мож помочь дописать?
Re[2]: таблица
От: ALi_Gat0R Россия  
Дата: 01.12.05 23:47
Оценка:
Здравствуйте, ah, Вы писали:

ah>все равно сортировка пошаговая не получается как то

ah>мож помочь дописать?

Тебе нужна сортировка выбором. После того, как найдешь минимальный элемент, выделяешь его и вызываешь getch(), например, а уже после этого перемещаешь элемент.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.