Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
-1 / 0 / 0
Регистрация: 27.04.2013
Сообщений: 28
1

Нужен другой тип вывода пути

22.01.2014, 22:46. Просмотров 360. Ответов 0
Метки нет (Все метки)

Программа показывает путь из одного квадрата в другой (В данном случае с 0;1 в 3;5), оминая квадраты, отмеченные 1. Нужно чтобы путь показывался собственно на поле цифрами 1, 2, 3 ...Помогите сделать так. Спасибо.
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
#define MAXX 6
#define MAXY 6
#define FINX 3
#define FINY 5
 
// тут зберігається граф
int fa[MAXX][MAXY] = {
  /*x  y 0 1 2 3 4 5 */
  /*0*/{1,0,0,0,0,0},
  /*1*/{0,0,0,0,0,0},
  /*2*/{0,0,0,0,0,0},
  /*3*/{0,0,0,0,0,0},
  /*4*/{0,0,0,1,0,0},
  /*5*/{0,0,0,0,0,0}};
int fwas[200];
void show_way(int cnt, int was[200])
{
    for(int x=0;x<cnt;x++) {
        printf( "%d", was[x] );
        if(x%2==0) printf( ";" ); else printf( "  " );
    }
    printf( "\n" );
}
 
void show_matrix(int a[MAXX][MAXY]) 
{
    for(int x=0;x<MAXX;x++)
    for(int y=0;y<MAXY;y++) {
        printf( "%d ", a[x][y] );
        if(y==MAXY-1) printf( "\n" );
    }
}
 
void array_walk(int x, int y, int lastx, int lasty, int a[MAXX][MAXY], int cnt, int was[200]) 
{
    was[cnt]=x;
    cnt++;
    was[cnt]=y;
    cnt++;
    if(lastx>=0) a[x][y]=2; 
    if((x==FINX)&&(y==FINY)&&(lastx>=0)) { 
        a[FINX][FINY]=2;
        for(int xx=0;xx<MAXX;xx++)
        for(int yy=0;yy<MAXY;yy++)
            if(a[xx][yy]==0) return;
        printf("\n Way: \n"); 
        show_way(cnt,was);
        printf("\n Result: \n");
        show_matrix(a);
        printf( "\n Press Enter...\n" );
        getchar();
        return;
    }
    if((x<MAXX-1)&&(a[x+1][y]==0)) { 
        int newa[MAXX][MAXY];memcpy(newa, a, sizeof(newa)); 
        int new_was[200];memcpy(new_was, was, sizeof(new_was)); 
        array_walk(x+1,y,x,y,newa,cnt,new_was);
    }
    if((y<MAXY-1)&&(a[x][y+1]==0)) {
        int newa[MAXX][MAXY];memcpy(newa, a, sizeof(newa));
        int new_was[200];memcpy(new_was, was, sizeof(new_was)); 
        array_walk(x,y+1,x,y,newa,cnt,new_was);
    }
    if((x>0)&&(a[x-1][y]==0)) {
        int newa[MAXX][MAXY];memcpy(newa, a, sizeof(newa)); 
        int new_was[200];memcpy(new_was, was, sizeof(new_was)); 
        array_walk(x-1,y,x,y,newa,cnt,new_was);
    }
    if((y>0)&&(a[x][y-1]==0)) {
        int newa[MAXX][MAXY];memcpy(newa, a, sizeof(newa)); 
        int new_was[200];memcpy(new_was, was, sizeof(new_was));
        array_walk(x,y-1,x,y,newa,cnt,new_was);
    }
}
 
int main(void)
{   
    printf( "\n Input:\n" );
    show_matrix(fa);
    printf( "\n Press Enter...\n" );
    getchar();
    array_walk(0,1,FINX,FINY,fa,0,fwas); 
    getchar();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2014, 22:46
Ответы с готовыми решениями:

Как определить тип переменной, ссылающейся на определённый класс? Нужен именно тип, а не ссылка на обьект!
interface HowDefineMyType { void info(); } class A implements HowDefineMyType { ...

Пути для вывода
Добрый день. Ситуация такая: есть библиотека, которая затем используется в трех проектах. Мне уже...

Проверка пароля и ошибка "Выражение, имеющее тип void, нельзя преобразовать в другой тип"
В общем есть такая программа которая проверяет пароль Вот код: private: System::Void...

Тип для сохранения пути
string S S.c_str() В S записывается путь к файлу. Просто уже все горит****, приходится делать...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.01.2014, 22:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Определить тип объекта по заданному пути
Здравствуйте. C:\Windows\System32\drivers\etc - папка C:\Windows\System32\drivers\etc\hosts -...

Тип float и точность его вывода
Почему при исполнении кода: #include &lt;iostream&gt; using namespace std; int main() { float a...

Перевести состав с одного пути на другой.
Дана задача: перевести состав с одного пути на другой, используя тупиковую ветку. Стрелки...

Нужен один select и относительные пути в js
В корневой есть три папки например: common, folder_A и folder_B, а также index.html (в корневой) с...


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

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

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