Форум программистов, компьютерный форум CyberForum.ru

Использование переборных методов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Ошибка сегментирования http://www.cyberforum.ru/cpp-beginners/thread515458.html
Здравствуйте. Здесь представлена программа, единственное назначение которой промоделировать поведение другой более сложной программы. #include <stdio.h> struct test { int count; int mode; int sampl ; } ec, *ec_point=NULL; int* psampl; void func( void**);
C++ Как транспонировать матрицу Как транспонировать матрицу в C++ #include <cstdlib> #include <iostream> using namespace std; int main() { int n , m; cout << "vvedite kolicestvo strok i stolbtov" << endl; cin >> n >> m; http://www.cyberforum.ru/cpp-beginners/thread515450.html
Вывести цифры, лежащие в интервале C++
Дано целое n-значное число типа longint. Вывести цифры, лежащие в интервале . Помогите написать на C++
Разные соседи (Судоку) C++
Разные соседи. Заполнить матрицу заданного размера M(k, l) числами 1,2,3,4 так, чтобы по горизонтали, вертикали и диагонали не было одинаковых рядом стоящих чисел. Написать на C++. Есть код на Pascal'е, но он не совсем верно выводит (по диагонали одинаковые): program a11; uses crt; const nmax=20; var a:array of integer; n,i,j:byte; begin clrscr;
C++ Отсортировать массив символьных строк по алфавитному порядку? http://www.cyberforum.ru/cpp-beginners/thread515428.html
не могу написать эту задачу. каким образом можно эту задачу написать?? { Отсортировать массив символьных строк по алфавитному порядку, отфильтровав предварительно все строки, содержащие цифры и специальные символы. }
C++ Оператора цикла с постусловием Пожалуйста посмотрите задачу, я бы решил, но сколько сижу не пойму 1)С помощью оператора цикла с постусловием напишите программу-фильтр, которая вводит любые символы, но комментирует только буквы русского алфавита. Завершение работы - по нажатию буквы ‘Я’. подробнее

Показать сообщение отдельно
valeriikozlov
Эксперт C++
4663 / 2489 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
11.03.2012, 18:38     Использование переборных методов
Цитата Сообщение от Corsair342 Посмотреть сообщение
Извиняюсь! можно код программы просто я не очень в нём понимаю!
Это пример для вычисления кратчайшего пути коня (вводите координаты начала и конца пути от 1 до 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
72
73
74
75
76
77
78
79
#include <stdio.h>
    struct tt{
        int x, y;
    };
int main()
{
 
    int a[8][8], i, j, i_st=0, i_end=1, x_st, y_st, x_end, y_end;
    tt Q[64];
    for(i=0; i<8; i++)
        for(j=0; j<8; j++)
            a[i][j]=-1;
    printf("Vvod koordinati starta:\nX= ");
    scanf("%d", &x_st);
    printf("Y= ");
    scanf("%d", &y_st);
    printf("Vvod koordinati finish:\nX= ");
    scanf("%d", &x_end);
    printf("Y= ");
    scanf("%d", &y_end);
    x_st--; y_st--; x_end--; y_end--;
    a[x_end][y_end]=0; Q[0].x=x_end; Q[0].y=y_end;
    while(i_st<i_end)
    {
        if(Q[i_st].x>1 && Q[i_st].y>0 && a[Q[i_st].x-2][Q[i_st].y-1]==-1)
        { a[Q[i_st].x-2][Q[i_st].y-1]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x-2; Q[i_end++].y=Q[i_st].y-1;}
        if(Q[i_st].x>1 && Q[i_st].y<7 && a[Q[i_st].x-2][Q[i_st].y+1]==-1)
        { a[Q[i_st].x-2][Q[i_st].y+1]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x-2; Q[i_end++].y=Q[i_st].y+1;}
        if(Q[i_st].x>0 && Q[i_st].y>1 && a[Q[i_st].x-1][Q[i_st].y-2]==-1)
        { a[Q[i_st].x-1][Q[i_st].y-2]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x-1; Q[i_end++].y=Q[i_st].y-2;}     
        if(Q[i_st].x>0 && Q[i_st].y<6 && a[Q[i_st].x-1][Q[i_st].y+2]==-1)
        { a[Q[i_st].x-1][Q[i_st].y+2]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x-1; Q[i_end++].y=Q[i_st].y+2;}
        if(Q[i_st].x<6 && Q[i_st].y>0 && a[Q[i_st].x+2][Q[i_st].y-1]==-1)
        { a[Q[i_st].x+2][Q[i_st].y-1]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x+2; Q[i_end++].y=Q[i_st].y-1;}
        if(Q[i_st].x<6 && Q[i_st].y<7 && a[Q[i_st].x+2][Q[i_st].y+1]==-1)
        { a[Q[i_st].x+2][Q[i_st].y+1]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x+2; Q[i_end++].y=Q[i_st].y+1;}
        if(Q[i_st].x<7 && Q[i_st].y>1 && a[Q[i_st].x+1][Q[i_st].y-2]==-1)
        { a[Q[i_st].x+1][Q[i_st].y-2]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x+1; Q[i_end++].y=Q[i_st].y-2;}
        if(Q[i_st].x<7 && Q[i_st].y<6 && a[Q[i_st].x+1][Q[i_st].y+2]==-1)
        { a[Q[i_st].x+1][Q[i_st].y+2]=a[Q[i_st].x][Q[i_st].y]+1; Q[i_end].x=Q[i_st].x+1; Q[i_end++].y=Q[i_st].y+2;}     
        i_st++;
    }
    if(a[x_st][y_st]==-1)
        printf("Nedostogaem pole");
    else
    {
        printf("Put':\n");
         do 
        {
            printf("%d %d\n", x_st+1, y_st+1);
            if(x_st>1 && y_st>0 && a[x_st-2][y_st-1]==a[x_st][y_st]-1)
            { x_st-=2; y_st--;}
            else
            if(x_st>1 && y_st<7 && a[x_st-2][y_st+1]==a[x_st][y_st]-1)
            { x_st-=2; y_st++;}
            else
            if(x_st>0 && y_st>1 && a[x_st-1][y_st-2]==a[x_st][y_st]-1)
            { x_st--; y_st-=2;}
            else
            if(x_st>0 && y_st<6 && a[x_st-1][y_st+2]==a[x_st][y_st]-1)
            { x_st--; y_st+=2;}
            else
            if(x_st<6 && y_st>0 && a[x_st+2][y_st-1]==a[x_st][y_st]-1)
            { x_st+=2; y_st--;}
            else
            if(x_st<6 && y_st<7 && a[x_st+2][y_st+1]==a[x_st][y_st]-1)
            { x_st+=2; y_st++;}
            else
            if(x_st<7 && y_st>1 && a[x_st+1][y_st-2]==a[x_st][y_st]-1)
            { x_st++; y_st-=2;}
            else
            if(x_st<7 && y_st<6 && a[x_st+1][y_st+2]==a[x_st][y_st]-1)
            { x_st++; y_st+=2;}
        }while(a[x_st][y_st]>0);
        printf("%d %d\n", x_end+1, y_end+1);
    }
    return 0;
 
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru