Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
1

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

19.05.2014, 22:37. Показов 1484. Ответов 20
Метки нет (Все метки)

как зделать чтоб он был виден визуально
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include <vcl.h>
#include <iostream.h>
 
#pragma hdrstop
 
//---------------------------------------------------------------------------
 
#pragma argsused
#include "conio.h"
int main(int argc, char* argv[])  {
 const k=10;
int s [10][10]={
   {0,0,0,0,0,0,0,0,0,0},
   {0,1,6,6,6,6,6,1,1,0},
   {0,1,0,0,0,0,6,0,0,0},
   {0,1,0,1,1,1,1,1,1,0},
   {0,1,0,1,1,0,0,0,1,0},
   {0,1,0,1,0,0,1,0,1,0},
   {0,1,0,1,0,1,1,0,1,0},
   {0,1,0,0,0,0,0,0,1,0},
   {0,1,8,1,1,1,1,1,1,0},
   {0,0,0,0,0,0,0,0,0,0}
                    };
 
int i,j;
{
    int u=0;
    bool flag=true;
    while (flag)
    {
        flag=false;
        for (int i=0;i<k;i++)
            for (int j=0;j<k;j++)
                if (s[i][j]==u)
                {
                    if ( (s[i-1][j]==127)&&(i>=1) )        { s[i-1][j]=u+1; flag=true; }
                    if ( (s[i+1][j]==127)&&(i+1<k) )    { s[i+1][j]=u+1; flag=true; }
                    if ( (s[i][j-1]==127)&&(j>=1) )        { s[i][j-1]=u+1; flag=true; }
                    if ( (s[i][j+1]==127)&&(j+1<k) )    { s[i][j+1]=u+1; flag=true; }
                }
        u++;
    }
}       }
void build()
{
int s [10][10]={
   {0,0,0,0,0,0,0,0,0,0},
   {0,1,6,6,6,6,6,1,1,0},
   {0,1,0,0,0,0,6,0,0,0},
   {0,1,0,1,1,1,1,1,1,0},
   {0,1,0,1,1,0,0,0,1,0},
   {0,1,0,1,0,0,1,0,1,0},
   {0,1,0,1,0,1,1,0,1,0},
   {0,1,0,0,0,0,0,0,1,0},
   {0,1,8,1,1,1,1,1,1,0},
   {0,0,0,0,0,0,0,0,0,0}
                    };
    int u=130; 
    int k1,c1,k2,c2,k,s2;
    if ( (s[c1-1][c2]<u)&&(c1>=1) )        u=s[c1-1][c2];
    if ( (s[c1+1][c2]<u)&&(c1+1<k) )    u=s[c1+1][c2];
    if ( (s[c1][c2-1]<u)&&(c2>=1) )        u=s[c1][c2-1];
    if ( (s[c1][c2+1]<u)&&(c2+1<k) )    u=s[c1][c2+1];
    if (u>36) cout<<""<<s2<<" ?? ??????? ?? ???????? ?? ????? ????"<<endl;
        else 
        {
            //??????? ???? (120-'x')
            cout<<"??????????? ???? - "<<u<<" ?????(??)"<<endl;
            while (u!=0)
            {
                if ( (s[k1-1][k2]==u)&&(k1>=1) )    { s[--k1][k2]=120; u--; continue; }
                if ( (s[k1+1][k2]==u)&&(k1+1<k) )    { s[++k1][k2]=120; u--; continue; }
                if ( (s[k1][k2-1]==u)&&(k2>=1) )    { s[k1][--k2]=120; u--; continue; }
                if ( (s[k1][k2+1]==u)&&(k2+1<k) )    { s[k1][++k2]=120; u--; continue; }
            }
       }
       }
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.05.2014, 22:37
Ответы с готовыми решениями:

Нужен алгоритм поиска пути в этом лабиринте (будь то волновой алгоритм или алгоритм правой/левой руки )
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; void lab...

Волновой алгоритм — как убрать следы?
Возникла такая вот проблема. Как очистить матрицу от следов волн? Ведь если условие стоит такое...

Как написать волновой алгоритм для трехмерного лабиринта?
Трехмерный лабиринт выглядит следующим образом На примере 3*3*3 Числа 0,1,2... секторы лабиринта...

Как переделать из консольного приложения в форму?
Всем привет! Есть рабочее консольное приложение на с++. управляет видеосервером, коннектит,...

20
Почетный модератор
Эксперт С++
5843 / 2853 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
20.05.2014, 08:22 2
Цитата Сообщение от multex Посмотреть сообщение
как зделать чтоб он был виден визуально
Переделать под графические компоненты.
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
20.05.2014, 10:53  [ТС] 3
да тока именно на с++ а то запускаю а программа что то делает а что не знаю а нужно чтоб лабиринт было нормально видно(да можете доделать графику или дать ссылку на рабочую программу с графикой и без ошибок на с++ ) спасибо

Добавлено через 3 минуты
SatanaXIII, да если это возможно мне надо рабочий волновой алгоритм с графой и всеми вычислениями тока чтоб понять как он работает поэтому надо рабочий. Спасибо за время что потратили и может потратите на меня
0
Почетный модератор
Эксперт С++
5843 / 2853 / 390
Регистрация: 01.11.2011
Сообщений: 6,903
20.05.2014, 10:55 4
multex, вы плохо представляете количество требуемого времени. На переделку, а особенно на объяснение. У меня сейчас столько к сожалению нет.
0
1116 / 787 / 100
Регистрация: 01.02.2011
Сообщений: 1,847
Записей в блоге: 1
20.05.2014, 10:59 5
Лучший ответ Сообщение было отмечено multex как решение

Решение

Волновой алгоритм (таймер)
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
07.06.2014, 15:31  [ТС] 6
kzru_hunter, добрый день а можете че раз помочь?
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
07.06.2014, 15:43 7
multex, это форум. Здесь все могут еще раз помочь. Если есть вопрос - задавай. Если к этой теме не относится - создавай новую.
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
07.06.2014, 21:44  [ТС] 8
BRcr, kzru_hunter, Волновой алгоритм (таймер) етот лабиринт можете зделать чтоб мы могли его в графичном виде редактировать сами все стенки и проходы?
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 05:38 9
В проекте kzru_hunter подправь один метод:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    int ACol, ARow;
    StringGrid1->MouseToCell(X, Y, ACol, ARow);
 
    if (Timer1->Tag == 0)
    {
        if ( ( Button == mbLeft ) && Shift.Contains( ssCtrl ) )
        {
            map[ARow][ACol] = ( map[ARow][ACol] == 0 ) ? -1: 0;
        }
        else if (Button == mbLeft)
        {
            StartX = ACol;
            StartY = ARow;
        }
        else if (Button == mbRight)
        {
            FinishX = ACol;
            FinishY = ARow;
        }
        InitialLabirint();
    }
    else
    {
        MessageBox(Handle, "Сначала нужно остановить анимацию!", "Информация", MB_ICONINFORMATION);
    }        
}
Теперь правка лабиринта Ctrl + ЛКМ.
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
08.06.2014, 12:52  [ТС] 10
BRcr, чет не работает можете в прогу вписать?


Добавлено через 8 минут
BRcr, я не могу тут отправить архив давайте я вам через вконтакте скину
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 13:08 11
C++
1
backupMap[ ARow ][ ACol ] = ( backupMap[ ARow ][ ACol ] == 0 ) ? -1 : 0;
map модифицируется при поиске пути, оказывается...

Не надо никаких архивов...
1
Миниатюры
Как переделать волновой алгоритм из консольного в графический вид?  
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 13:10 12
Для вложения файлов в сообщение - расширенный режим редактора -> управление вложениями
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
08.06.2014, 13:45  [ТС] 13
[cut]

Добавлено через 1 минуту
скиньте ету прогу

Добавлено через 23 секунды
что вы отредактировали

Добавлено через 9 минут
BRcr, личная прозьба удалите ету тему или закройте от всех пожалуста очень надо
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 13:51 14
Правила пункт 2.3. И личные просьбы тут не при чем.
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
08.06.2014, 14:43  [ТС] 15
BRcr,можете че один скрин проги самой зделать что за окном выполнения плиз

Добавлено через 32 минуты
а можете хоть на время закрыть?
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
08.06.2014, 14:51 16
Цитата Сообщение от multex Посмотреть сообщение
можете че один скрин проги самой зделать что за окном выполнения плиз
В смысле?
1
SatanaXIII
09.06.2014, 09:16
  #17
 Комментарий модератора 
multex, пункт 2.3 Правил: темы по просьбам не закрываются.
Пункт 4.6: архивы выкладывайте на форум.
Пункт 4.12: загружайте картинки так же прямо на форум.

Обновленная Памятка «Как работать в редакторе сообщений»
0
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
11.06.2014, 15:15  [ТС] 18
SatanaXIII, а возможно зделать чтоб размер лабиринта возможно было задавать?
и как ето зделать?

Добавлено через 55 минут
kzru_hunter, а возможно зделать чтоб размер лабиринта в вашей програме возможно было задавать?
и как это зделать?

Добавлено через 55 минут
BRcr, а возможно зделать чтоб размер лабиринта в вашей програме возможно было задавать?
и как это зделать?
0
4033 / 2323 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
11.06.2014, 20:35 19
C++
1
2
const int SizeY = 10;
const int SizeX = 10;
Меняй значения в этих строчках...
1
0 / 0 / 0
Регистрация: 08.04.2014
Сообщений: 10
11.06.2014, 21:00  [ТС] 20
BRcr, а зделать динамичиский никак нельзя зделать?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2014, 21:00

Волновой алгоритм поиска (Алгоритм A* / Алгоритм А стар)
Хочу разработать алгоритм для решения головоломки с подвижными дисками (перестановочная...

Как переделать в графический интерфейс?
Как все это связать с таблицей? что бы при ее заполнении и нажатии на кнопку, искался кратчайший...

Волновой алгоритм
Подскажите пожалуйста, на сколько сложно изготовить из матрицы 0000 0000 0000 напр.4345 3234...

Волновой алгоритм
Нужно реализовать волновой алгоритм поиска кратчайшего пути на поле 20*20, причем координаты начала...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.