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

Задачи для тренировки и лучшего понимания - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возможно переписать программу? http://www.cyberforum.ru/cpp/thread153534.html
Есть программа Upgrade UA.exe хочу запустить ее на windows mobile 6. Возможно ли ее переписать.
C++ scanf Пусть нужно читать из текста слова, пропуская все символы, кроме a-z и A-Z. То есть из текста Hello, world! ololo O_o получить только Hello world ololo O o Меня интересует, можно ли это сделать с помощью одной лишь только функции scanf. Она, насколько я понял, позволяет немного использовать регулярные выражения (точно не знаю, они ли это). Так вот, можно ли сделать так, чтобы к примеру... http://www.cyberforum.ru/cpp/thread153153.html
C++ Вернуть stdin в консоль
Допустим я перенаправил поток stdin/stdout в файл с помощью функции freopen. Как заставить его снова работать с консолью? Добавлено через 9 минут Нашел. #include <cstdlib> #include <stdio.h> #include <conio.h> using namespace std;
Прошу помочь.Подключение dll на неуправляемом С/С++ C++
Возникла проблема.Есть рабочая dll, необходимо подключить к CLR приложению. Подключение происходит нормально. Все функции работают нормально кроме одной(хотя dll проверял все работает в обычных Win32 приложениях).Данная функция производит загрузку из файла если файл не найден-возвращает код ошибки,т.е. все нормально.Но если файл находит(путь указан точный) то происходит ошибка исключение...
C++ Не сразу закрывающаяся программа http://www.cyberforum.ru/cpp/thread152799.html
Есть команды в терминале.. вроде telnet или sql, эти программы запускаешь и они остаются открытыми пока не дашь команду, например, quit. Во время работы программы она показывает знак приглашения новой команды ">". Как это можно осуществить в C++?
C++ Парсер на С вопшем есть файл с текстом..... в етом файле есть какие даные(мусор)...и есть дни: Понедельник,Вторник,среда......с етого файла нада вывести ети дни в порядке нахождениэ... ето походу несложная задача,но для новичка сложно.... нужно именно на С а не С++ ... я пока только думал считывать каждую строку в масив и проверять каждый елемент по буквам... подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4479 / 2841 / 227
Регистрация: 12.12.2009
Сообщений: 7,224
Записей в блоге: 1
Завершенные тесты: 1
27.08.2010, 20:44     Задачи для тренировки и лучшего понимания
Цитата Сообщение от nikkka Посмотреть сообщение
А вот очень старая, "класическая" задача о коне.
конь стоит в левом нижнем углу шахматной доски. ходит как обыно, Г-образно. надо обойти все клетки. НА ОДНУ КЛЕТКУ НЕЛЬЗЯ СТАНОВИТСЯ БОЛЕЕ ОДНОГО РАЗА. найдти количество ходов.
можно вывести на экран передвижения коня в "шахматной" записи, но это не обязательно.
Долго я над ней думал!!! Вот написал код, там есть вывод максимального просчитанного хода (это временно), так вот программа очень быстро считает до 60го (посути до 59го) хода, потом долго думает, очень долго), я так и не дождался когда она закончит, поэтому пишу сюда - может кто-нибудь что-нибудь подскажет)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#include <iostream>
using namespace std;
class board {
protected:    
    int desk[8][8];
    int x,y;//текущие координаты
    board();//    
 };
//########## CLASS HORSE ########################### 
class Horse : private board{
    int course[63]; //направление хода
    int counts;  // Счетчик ходов 
public:
    Horse();  
    void go();
    int *courseP;
    bool step(int i,int j);//возможен ли ход
};      
//################################################ 
 
//############# BOARD #######################      
board::board():x(1),y(1){
    memset(desk,0,sizeof(desk)); 
    desk[0][0]=1;}
//############ END BOARD ####################
 
//############ HORSE ########################         
Horse::Horse(){
        memset(course,0,sizeof(course));
        counts=1;
        courseP=course;
        } 
 
bool Horse::step(int i,int j){
        return ((i>=1)&&(i<=8)&&(j>=1)&&(j<=8)&&(desk[i-1][j-1]==0));}
                
void Horse::go(){
        int max=0; //Это просто для отладки, чтоб понимать, что происходит)
        while(counts<=64){       
            if(counts>max){
            max=counts;
            cout<<endl<<"MAXCOUNT = "<<max<<endl;}
        switch (*courseP){ //направление хода   
            case 0:if(step(x+2,y-1)){//вверх влево
                    x+=2;y-=1; // текущие координаты
                    desk[x-1][y-1]=++counts;//записать ход
                    ++courseP;
                    break;}
                    else ++*courseP;
                            
            case 1: if(step(x+2,y+1)){//вверх вправо
                    x+=2;y+=1;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                            
            case 2: if(step(x+1,y+2)){//вправо вверх
                    x+=1,y+=2;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                            
            case 3: if(step(x-1,y+2)){//вправо вниз
                    x-=1;y+=2;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                                    
            case 4: if(step(x-2,y+1)){//вниз вправо
                    x-=2;y+=1;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                                    
            case 5: if(step(x-2,y-1)){//вниз влево
                    x-=2;y-=1;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                            
            case 6: if(step(x-1,y-2)){//влево вниз
                    x-=1;y-=2;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else ++*courseP;
                             
            case 7: if(step(x+1,y-2)){//влево вверх
                    x+=1;y-=2;
                    desk[x-1][y-1]=++counts;
                    ++courseP;
                    break;}
                    else {*courseP=0;//если нет хода
                    --courseP;  
                    desk[x-1][y-1]=0;
                    counts--;
                    switch (*courseP){
                            case 0:x-=2;y+=1;break;//предыдущие координаты
                            case 1:x-=2;y-=1;break;
                            case 2:x-=1,y-=2;break;
                            case 3:x+=1;y-=2;break;
                            case 4:x+=2;y-=1;break;
                            case 5:x+=2;y+=1;break;
                            case 6:x+=1;y+=2;break;
                            case 7:x-=1;y+=2;break;}
                    ++*courseP; 
            //Это просто для отладки, посмотреть что выводит////////        
              for(int i=7;i>=0;i--){
              for(int j=0;j<8;j++)
              if(desk[i][j]/10==0)
              cout<<"[ "<<desk[i][j]<<"] ";
              else cout<<"["<<desk[i][j]<<"] ";
              cout<<endl<<endl;}
              cout<<endl<<endl<<endl<<endl;
           /////////////////////////////////////////////////////////    
          }             
                           
                        }
               
          }}
int main(){
    Horse ob;
    ob.go();
    system("pause");
    return 0;
}
Так же есть готовые ф-ции по формированию и вывода строки ходов (А1 С2 и т.д.), но я убрал это из кода, т.к. в данном случае это не принципиально.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru