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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
#1

Добавить размеры в код "Обход конем" - C++

15.01.2013, 23:27. Просмотров 1630. Ответов 43
Метки нет (Все метки)

Господа,решила в новой теме попросить помощи.есть код
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
#include <stdio.h>
#include <conio.h>
#define  size_row 10
#define  size_col 10
 
 
 
int main(void)
{
    
     int Ni=0; 
     int Nk=300;
     int y=255; 
     int n=253; 
     int s=0; 
     int e=254;
     int i,j;
     int R[size_row][size_col]= {            {s,y,y,y,y,y,y,n,n,n},
                                               {n,y,n,n,n,y,y,n,n,n},
                                                {y,y,n,n,n,y,n,n,n,n},
                                                {y,n,e,y,y,y,n,n,n,n},
                                               {y,y,y,n,n,n,n,n,n,n},
                                            {n,n,n,n,n,n,n,n,n,n},
                                               {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n},
                                                {n,n,n,n,n,n,n,n,n,n} };
 
printf("labyrint pered algoritmem::" "\n \n");
   for (i=0; i < size_row; i++)
{
   for (j=0; j < size_col; j++)
   printf("%d\t",R[i][j]);
}
 
/*vlnovy algoritmus*/
while (Ni < Nk)
{
   for (i=0; i < size_row; i++)
   {
     for (j=0; j < size_col; j++)
     /*spousteni*/
     if (R[i][j]==Ni)
     {
         if (R[i][j+1]==255)
            R[i][j+1]=Ni+1;
         if (R[i][j-1]==255)
            R[i][j-1]=Ni+1;
         if (R[i+1][j]==255)
            R[i+1][j]=Ni+1;
         if (R[i-1][j]==255)
            R[i-1][j]=Ni+1;
         if ((R[i+1][j]==254) || (R[i-1][j]==254) || (R[i][j+1]==254) || (R[i][j-1]==254))
         {  
            //printf(
            //getch(); 
            //return 0; 
            //break;
          
         }
      }
   }
Ni++;
}
 
   printf("\n\n");
 
 
printf ("labyrint posle algoritma:: \n \n");
for (i=0; i < size_row; i++)
{
   for (j=0; j < size_col; j++)
   printf("%d\t", R[i][j]);
}
 
   getch();
   return 0;
}
это обход конем по шахматной доске.к нему нужно прилепить следующее:
-размеры шахматной доски.
-координаты конечного поля.
как это воплотить в жизнь?

Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2013, 23:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Добавить размеры в код "Обход конем" (C++):

Разница между понятиями "Обход в прямом направлении" и "Итерационный прямой обход" - C++
Ребятаа, обьясните чем различается: Обход в прямом направлении и Итерационный прямой обход Добавлено через 10 минут НароооД,...

Добавить к возрасту человека указание "год", "года", "лет" - C++
Дано натуральное число n (n&lt;=100), определяющее возраст человека (в годах). Дать для этого числа наименования год, года, лет: например, 1...

В зависимости от времени года "весна", "лето", "осень", "зима" определить погоду "тепло", "жарко", "холодно", "очень холодно" - C++
В зависимости от времени года &quot;весна&quot;, &quot;лето&quot;, &quot;осень&quot;, &quot;зима&quot; определить погоду &quot;тепло&quot;, &quot;жарко&quot;, &quot;холодно&quot;, &quot;очень холодно&quot;. Я так...

Почему происходит ошибка времени выполнения в решении задачи "Ход конем"? - C++
Добрый день! Я попытался решить одну задачку о шахматах. Проблема в том, что моя программа крашится с такой ошибкой: ...

Задача "Тур конем" - C++
На шахматной доске размером на поле с координатами х0, у0 находится конь – фигура, перемещающаяся по обычным шахматным правилам. Задача...

Двумерный массив: Добавить методы "ДайЗначениеЯчейки", "УстановиЗначениеЯчейки" - C++
Нужно добавить методы ДайЗначениеЯчейки(индексРяда, индексКолонки), УстановиЗначениеЯчейки(индексРяда, индексКолонки, значение). ...

43
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 00:26  [ТС] #2
кто-то это читал вообще?
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.01.2013, 01:24 #3
Цитата Сообщение от Катерька Посмотреть сообщение
кто-то это читал вообще?
Кто-нибудь наверняка читал.

Цитата Сообщение от Катерька Посмотреть сообщение
-координаты конечного поля.
Вам нужен алгоритм с конечным полем, равным начальному или наоборот, все равно, какое конечное поле?
Заметьте, я сформулировал вопрос таким образом, чтобы на него можно было дать только развернутый ответ.

Добавлено через 22 минуты
Код взят из этой темы.
Напишите свое задание целиком.
1
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 01:34  [ТС] #4
lemegeton, да,код взят,я спросила разрешения у владельца,если вдруг что

Отвечаю:размеры начального поля -8X8,должны быть загружены в программе.
Я дура.Мозги поплыли совсем...НАЧАЛЬНОЕ,НАЧАЛЬНОЕ ТАМ ПОЛЕ нужно,а не конечное...То есть размеры доски+координаты исходного поля(я так понимаю,это координаты коня?..) программа должна выписать наименьшие пути на все поля,при чем конь выходит каждый раз из исходного поля...фуууух.так вот.сильно дура.Простите...можно с этим помочь?
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.01.2013, 01:45 #5
Цитата Сообщение от Катерька Посмотреть сообщение
программа должна выписать наименьшие пути на все поля
Неслабо.

Задание, пожалуйста. Целиком. На русском языке.
0
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 02:43  [ТС] #6
Написала же?
перевожу с бусурманского слово в слово:
Программа загрузит из консоли размеры шахматной доски(напр. 8 на 8) и координаты исходного поля.На выходе программа выпишет "длины кратчайших путей"(по-русски удобнее видимо кратчайшие пути) коня по этой шахматной доски на все поля, причем конь всегда стартует из исходного поля.
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.01.2013, 02:50 #7

Не по теме:

Цитата Сообщение от Катерька Посмотреть сообщение
причем конь всегда стартует из исходного поля
Атомная бомба всегда попадает в эпицентр ядерного взрыва.



Когнитивный диссонанс вызвал следующий ваш пассаж.
Цитата Сообщение от Катерька Посмотреть сообщение
это обход конем по шахматной доске
Хотя в коде волновой алгоритм поиска кратчайшего пути от одной точки до другой. Это совершенно разные задачи.

Такой задачей наказывают.

Тут нужен алгоритм Дийкстры с созданием матрицы смежности или что-нибудь более прикольное.
Очень муторно, не думаю, что я возьмусь это делать, слишком много моего времени уйдет. Может кто-нибудь еще поможет, но шансов мало. Действительно очень муторная задача.
0
ya_noob
_
203 / 147 / 9
Регистрация: 08.10.2011
Сообщений: 432
21.01.2013, 17:26 #8
Оно?

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
#include <iostream>
#include <iomanip>
#include <queue>
 
using namespace std;
 
void step1( int &i, int &j ) { i -= 2; j += 1; }
void step2( int &i, int &j ) { i -= 1; j += 2; }
void step3( int &i, int &j ) { i += 1; j += 2; }
void step4( int &i, int &j ) { i += 2; j += 1; }
void step5( int &i, int &j ) { i += 2; j -= 1; }
void step6( int &i, int &j ) { i += 1; j -= 2; }
void step7( int &i, int &j ) { i -= 1; j -= 2; }
void step8( int &i, int &j ) { i -= 2; j -= 1; }
 
struct Three
{
    Three( int x, int y, int z ) : i( x ), j( y ), n( z ) {}
 
    int i;
    int j;
    int n;
};
 
void bypass( int i, int j, int **s, const int N, const int M )
{
    queue< Three > q;
    void ( *step[ 8 ] )( int &, int & ) = { step1, step2, step3, step4, step5, step6, step7, step8 };
    Three t( i, j, 0 );
 
    q.push( t );
    while ( !q.empty() )
    {
        t = q.front(); q.pop();
        if ( s[ t.i ][ t.j ] != -1 ) continue;
        s[ t.i ][ t.j ] = t.n;
        for ( int k = 0, r, c; k < 8; ++k )
        {
            r = t.i; c = t.j; ( step[ k ] )( r, c );
            if ( r >= 0 && r < N && c >= 0 && c < M && ( s[ r ][ c ] == -1 ) )
                q.push( Three( r, c, t.n + 1 ) );
        }
    }
}
 
int main()
{
    const int N = 8; // высота доски
    const int M = 8; // ширина доски
    const int row = 0; // начальная горизонталь коня
    const int col = 0; // начальная вертикаль коня
    int **s = new int * [ N ]; // таблица длин путей
 
    for ( int i = 0; i < N; ++i )
    {
        s[ i ] = new int [ M ];
        for ( int j = 0; j < M; ++j )
            s[ i ][ j ] = -1;
    }
 
    bypass( row, col, s, N, M );
 
    for ( int i = 0; i < N; ++i )
    {
        for ( int j = 0; j < M; ++j )
            cout << setw( 3 ) << s[ i ][ j ];
        cout << endl;
    }
 
    return 0;
}
1
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 17:35  [ТС] #9
дорогой lemegeton, с подозрениями на приступы когнитивного диссонанса сидеть на таких форумах не представляется полезным.вернемся к первому посту.там было сказано,что нужно добавить размеры и координаты.в существующий код.я лишь хотела попросить помощи с этим,мне не нужно ломать существующую программу и переписывать ее.

Добавлено через 1 минуту
ya_noob, компилятор сразу вылетает,таблица появляется на долю секунды и пропадает...я могу попробовать послать это преподавателю..выглядит круто)спасибо)
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
21.01.2013, 17:36 #10
Цитата Сообщение от Катерька Посмотреть сообщение
мне не нужно ломать существующую программу и переписывать ее
Не выйдет.
1
ya_noob
_
203 / 147 / 9
Регистрация: 08.10.2011
Сообщений: 432
21.01.2013, 17:40 #11
ну добавь перед return 0 следующее:
C++
1
system( "pause" );
а сверху допиши
C++
1
#include <cstdlib>
и будет тебе счастье
1
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 17:56  [ТС] #12
ya_noob, послала,жду ответа.
0
ya_noob
_
203 / 147 / 9
Регистрация: 08.10.2011
Сообщений: 432
21.01.2013, 18:04 #13
Было бы гораздо лучше, если бы вы вначали разобрались с тем, что делает программа
0
Катерька
0 / 0 / 0
Регистрация: 07.01.2013
Сообщений: 32
21.01.2013, 20:58  [ТС] #14
ya_noob, я прочла закомментированные строчки и увидела конечную таблицу,которая,в принципе,соответсвтует логике.Если программа будет одобрена,мне так или иначе придется понять ,как она работает.так что это еще предстоит.

Добавлено через 2 часа 37 минут
ya_noob, ответил то же самое,что и на первый код.что программа должна загружать из консоли размеры доски и координаты исходного поля.Я ЧТО-ТО НЕ ПОНЯЛА,там же оно есть?
0
ya_noob
_
203 / 147 / 9
Регистрация: 08.10.2011
Сообщений: 432
21.01.2013, 21:12 #15
в моей программе те переменные, которые вас просят ввести с консоли, уже инициализированны. надо просто добавить код для их ввода из консоли.

это ж элементарно! напряги извилины!!!
0
21.01.2013, 21:12
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2013, 21:12
Привет! Вот еще темы с ответами:

Реализовать классы "Воин", "Пехотинец", "Винтовка", "Матрос", "Кортик" (наследование) - C++
Разработать программу с использованием наследования классов, реализующую классы: − воин; − пехотинец(винтовка); − матрос(кортик). ...

Как принять код клавиши, а вписать саму клавишу? (Принимает "57", что означает "9") - C++
Нужно избавиться от такой глупости: char ch = 0; if(ch=='1')mas=1; if(ch=='2')mas=2; if(ch=='3')mas=3; ...

Что означает "Программа "[4872] laba!.exe: Машинный код" завершилась с кодом 3 (0x3)."? - C++
при запуске кода компилятор пишет &quot;Программа &quot; laba!!!!!!.exe: Машинный код&quot; завершилась с кодом 3 (0x3).&quot; и появляется окошечко с ошибкой....

Error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в "код операции"; обнаружено "SHL" - C++
visual studio выдал такую ошибку error C2400: синтаксическая ошибка во встроенном коде на языке ассемблера в &quot;код операции&quot;; обнаружено...


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

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

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