С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Ввод матрицы вручную - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Взаимодействие сайтов и VC++ http://www.cyberforum.ru/cpp-beginners/thread223094.html
Добрый вечер. Всех с наступившим! Нужна подсказка: где можно почитать про взаимодействие приложения с вебсайтом (получение куки, парсинг кода, отправка форм и тд). Буду благодарен за любую...
C++ Определить три соседних дня с максимальной средней температурой Помогите решить полностью следующие задачи. 1.Начиная с понедельника, 1-го сентября, в течение 3-х недель один раз в день измеряется значение температуры. Таким образом, формируется двумерный массив... http://www.cyberforum.ru/cpp-beginners/thread223089.html
Ошибка в char... C++
Делаю программу. Одна из функций - открытие заданого файла: char *aud="magazine/"+ThisClass.c_str()+".xls"; char *path="magazine/"; ShellExecute(NULL,NULL,aud,path,NULL,SW_SHOW); ThisClass...
C++ дескрипторы у пайпов
Во- первых, хочу поздравить всех с новым годом)))) итак, проблема в следующем: пишу чат на пайпах, использующий аутентификацию по керберосу... при создании сервером пайпа - клинет не может...
C++ Стандарты и стили языков программирования http://www.cyberforum.ru/cpp-beginners/thread223045.html
Занимаясь программирование, например С++, иногда задумываешься, читая различную литературу и разбирая чужие коды программ, что большинство программистов, как начинающих, так и уже вполне опытных,...
C++ компиляция программы на с Привет всем. У меня такая проблема. Я написал программу на С именно на С а не на С++. Написал я её в notepad++ а вот скомпилировать немогу. Есть у меня Visual Studio 2005, но как скомпилировать на... подробнее

Показать сообщение отдельно
apachan
13 / 13 / 2
Регистрация: 07.12.2010
Сообщений: 127
03.01.2011, 00:50  [ТС]
Можно ли как-то выдернуть отсюда алгоритм поиска выхода из лабиринта (и заодно вывод на экран пути в векторном виде, координаты)? То есть, чтобы по выбору было, задаешь начальную точку и 2 варианта - либо найти путь к конечной, либо просто найти выход (если есть).

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include<iostream>
#include <time.h>
#include<cmath>
using namespace std;
int main()
{
        setlocale(LC_ALL,".1251");
        srand(time(0));
              //создание динамического массива
        int N;
        cout<<"Vvedite razmer matricy(N*N)(N<=20)"<<endl;
        cin>>N;
        while((N<1)||(N>20))
                {cout<<" Razmer zadan neverno, vvedite zanovo "<<endl;
                cin>>N;}
        int **mas,elem;                 
        mas = new int *[N];         
        for (int i=0; i<N; i++)     
                 mas[i] = new int [N]; 
        int vybor;
        cout<<" Dlja zapolnenija labirinta sluchajno vvedite 1 "<<endl;
        cout<<"  Dlja zapolnenija labirinta vruchnuju, vvedite 2"<<endl;
        cin>>vybor;
        switch (vybor)
        {
        case 1:
                {srand(time(0));
                
                cout<<" Labirint  "<<endl;
                for (int i=0; i<N; i++)
                        for (int j=0;j<N;j++)
                                mas[i][j] = rand()%2;}
                break;
        case 2:
                {for(int i=0;i<N;i++)
                        for(int j=0;j<N;j++)
                                {cout<< "Vvedite jelement [ "<<i+1<<" ][ "<<j+1<<" ] (0-prohod,1-stena)"<<endl;
                                cin>>elem;
        while((elem!=0)&&(elem!=1))
                {cout<<" Nevernyj simvol. Vvedite 0 dlja prohoda, 1 dlja steny"<<endl;
                cin>>elem;}
        mas[i][j]=elem;}}break;
        default: cout<<"Nepravil'nyj vvod.Programma budet zavershena"<<endl;
        return 0;}      
        for ( i=0;i<N;i++)
                {for(int k=0;k<N;k++)
                        printf( "%3d",mas[i][k]);                       
                cout<<endl;}
         int k,l;
        cout<<" Vvedite koordinaty nachal'noj komnaty"<<endl;
        cin>>k>>l;
        while((k<0)||(l<0)||(k>=N)||(l>=N)||(mas[k][l]==1))
        {cout<<"Koordinaty zanjaty stenoj ili nahodjatsja vne labirinta. Vvedite koordinaty pravil'no "<<endl;
        cin>>k>>l;}     
//поиск пути
 
        mas[k][l]=-1;   
        for( int num=-1;num+N*N>0;num--)
                for(int i=1;i<N-1;i++)
                        for (int j=1;j<N-1;j++)
        if(mas[i][j]==num)
                        {{if(mas[i+1][j]==0)
                                mas[i+1][j]=num-1;}
                        {if(mas[i-1][j]==0)
                                mas[i-1][j]=num-1;}
                        {if(mas[i][j+1]==0)
                                mas[i][j+1]=num-1;}
                        {if(mas[i][j-1]==0)
                                mas[i][j-1]=num-1;}
                        }
                //нахождение максимума на границе
        int max=-N*N,mi=-1,mj=-1;
        for (  i=0;i<N;i++)
                {if((mas[i][0]>max)&&(mas[i][0]<0))
                        {max=mas[i][0];
                        mi=i;
                        mj=0;}
                if((mas[i][N-1]>max)&&(mas[i][N-1]<0))
                        {max=mas[i][N-1];
                        mi=i;
                        mj=N-1;}}
        for(int j=0;j<N;j++)
                {if ((mas[0][j]>max)&&(mas[0][j]<0))
                        {max=mas [0][j];
                        mi=0;
                        mj=j;}
                if ((mas[N-1][j]>max)&&(mas[N-1][j]<0))
                        {max=mas[N-1][j];
                        mi=N-1;
                        mj=j;}}
        //нахождение пути
 
        if(max==-N*N)
                cout<<"Prohoda net "<<endl;
        else 
        { cout<<"Iskomyj put"<<endl;
        for(int a=max-1;a<0;a++)
        {{if (mas[mi-1][mj]==a)
                mi=mi-1;}
        { if (mas[mi+1][mj]==a)
                mi++;}
        {if (mas[mi][mj-1]==a)
                mj--;}
        {if (mas[mi][mj+1]==a)
                mj++;}
        cout<<"[ "<<mi<<" ][ "<<mj<<" ]"<<endl;}}       
        return 0;
}
Добавлено через 5 минут
или нет, можете просто объяснить какая часть кода из поста №10 отвечает за вычерчивание пути вывод матрицы с вычерченным путем, тогда уж проще это проделать к проге в этом посте
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.