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

Черепашья графика - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ как организовать ? http://www.cyberforum.ru/cpp-beginners/thread93140.html
вот такой вопрос нужно написать программу которая определяет минимальное число во введенной с клавиатуры последовательности положительных чисел (ДЛИНА ПОСЛЕДОВАТЕЛЬНОСТИ НЕОГРАНИЧЕННА) если перебор организовать могу то вот как сделать неограниченной длину последовательности ?
C++ Некоректности в булевом выражении Я недавно начал изучать C++ и я немного преуспел (для начинающего), но тут меня кое-что конкретно тормознуло. Тормозом оказалась проблемка в этом коде: #include <iostream> #include <stdio.h> using namespace std; void HackAlert() { string answer; cout << "Are you a hacker? (Y or N)" << endl; cin >> answer; http://www.cyberforum.ru/cpp-beginners/thread93123.html
Дан целочисленный массив, нужно исключить из него все нули C++
Дан целочисленный массив, нужно исключить из него все нули. Если нулей нет-написать "сжатие невозможно". Составить динамический массив и ввод элементов я смогу. А как реализовать поиск 0 и их удаление?
Вычислить процент от общего количества C++
Помогите пожалуйста разобратся с этой прогой: Написать прогамму, которая обрабатывает результаты экзамена. Для каждой оценки программа должна вычислить процент от общего количества оценок. Оценки от 5 до 2. Среда разработки: С++
C++ Шахматная доска и строка http://www.cyberforum.ru/cpp-beginners/thread93094.html
Есть 3 задачки, немного не соображу как их решить. Помогите горе-программисту :) 1) Поле шахматной доски определяется парой натуральных чисел, первое из которых задаст номервертикали, а второе- номер горизонтали. Даны натуральные числа k, l, m, n. Требуется выяснить, являются ли поля (k, l) и (m, n) полямиодного цвета. 2)В последовательности введённых символов (последний '$') определить...
C++ Матрица и элементы Помогите решить задачу: Сформиромать матрицу С (N,M) элементами которой являются случайные числа, равномерно распределённые в интервале (-4.0, 8.2). Переставляя её строки и столбцы, добиться того, чтобы наименьшийэлемент этой матрицы оказался в левом верхнем углу. Матрицу сформировать динамическим массивом я могу, рандом тоже могу, а всё остальное не знаю как. Помогите пожалуйста! подробнее

Показать сообщение отдельно
Мимино
 Аватар для Мимино
180 / 151 / 5
Регистрация: 22.05.2013
Сообщений: 435
Записей в блоге: 1
22.05.2013, 17:44     Черепашья графика
Ну, раз на то пошло, прошу оценить и мое "творение"
З.Ы. Постом выше я описал свою проблему понимания этой задачи. Взял для реализации 1-й вариант. Принцип тот же, а ошибку завышения/занижения на 1 исправить можно.
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int x = 0, y = 0, turn = 0, pen = 1;
 
void printFloor(int [][20], int);
void turtleStep(int [][20], int, int);
 
 
int main()
{
    setlocale(LC_ALL, "Russian");
    const int n = 20, m = 20;
    int floor[n][m] = {0};
    int command = 1, step;
 
    cout << "************************************************************************" << endl;
    cout << "               Погонять черепаху? Нет ничего проще!" << endl;
    cout << "  Запоминай команды, которые нужно вводить через \"пробел\" или \"Enter\"." << endl;
    cout << "            По умолчанию черепаха двигается туда ----->" << endl << endl;
    cout << "1 - Поднять перо(по умолчанию)" << endl << "2 - Опустить перо (осторожно, оставляет следы на полу!)" << endl;
    cout << "3 - Повернуть направо" << endl << "4 - Налево (не рекомендуется семейным людям)." << endl;
    cout << "5 - Пнуть черепаху" << endl << "Циферка после 5-ки - как далеко пнуть." << endl;
    cout << "6 - Посмотреть и ужаснуться от следа на полу." << endl;
    cout << "8 - \"Дяденька, а где черепаха? :'(\"" << endl;
    cout << "9 - Надоело!" << endl;
    cout << "************************************************************************" << endl << endl;
    cout << "Правила обращения с черепахой:" << endl;
    cout << "1. Не заставляйте черепаху биться головой о стену - это больно!" << endl;
    cout << "2. Не \"говорите\" черепахе команд, которых она не знает." << endl << "Она их может не понять или вовсе зависнуть. " << endl << endl;
    cout << "ВПЕРЕД, КОМАНДИР ЧЕРЕПАХИ! ДЕЙСТВУЙ!" << endl << endl;
    while (command != 9)
    {
        cin >> command;
        switch (command)
        {
            case 1:
                pen = 1;
                break;
            case 2:
                pen = 2;
                break;
            case 3:
                turn++;
                break;
            case 4:
                turn--;
                break;
            case 5:
                cin >> step;
                turtleStep(floor, n, step);
                break;
            case 6:
                printFloor(floor, n);
                break;
            case 8:
                cout << "(" << x << ", " << y << ")" << endl;
                break;
            case 9:
                break;
            default:
                cout << "Черепаха вас не понимает :(" << endl;
                break;
        }
    }
 
    system("pause");
    return 0;
}
 
 
void turtleStep(int ground[][20], int a, int walk)
{
    if (turn >= 4 || turn <= -4)
        turn = turn % 4;
    if (turn < 0)
        turn = 4 + turn;
 
    switch (turn)
    {
        case 0:
            if (y + walk > 19)
            {
                cout << "Черепаха стоит и не хочет ударяться головой о стену" << endl;
                break;
            }
 
            if (pen == 1)
                y = y + walk;
            else
                for (int i = 0; i <= walk; i++)
                {
                    ground[x][y]++;
                    if (i < walk) 
                        y++;
                }
            break;
 
        case 1:
            if (x + walk > 19)
            {
                cout << "Черепаха стоит и не хочет ударяться головой о стену" << endl;
                break;
            }
 
            if (pen == 1)
                x = x + walk;
            else
                for (int i = 0; i <= walk; i++)
                {
                    ground[x][y]++;
                    if (i < walk)
                        x++;
                }
            break;
        case 2:
            if (y - walk < 0)
            {
                cout << "Черепаха стоит и не хочет ударяться головой о стену" << endl;
                break;
            }
 
            if (pen == 1)
                y = y - walk;
            else
                for (int i = 0; i <= walk; i++)
                {
                    ground[x][y]++;
                    if (i < walk)
                        y--;
                }
            break;
        case 3:
            if (x - walk < 0)
            {
                cout << "Черепаха стоит и не хочет ударяться головой о стену" << endl;
                break;
            }
 
            if (pen == 1)
                x = x - walk;
            else
                for (int i = 0; i <= walk; i++)
                {
                    ground[x][y]++;
                    if (i < walk)
                        x--;
                }
            break;
 
    }
}
 
 
void printFloor(int arr[][20], int size)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++)
        {
            if (arr[i][j] > 0)
                cout << "*";
            else
                cout << " ";
 
        }
        cout << endl;
    }
}
Добавлено через 3 минуты
Цитата Сообщение от Toshkarik Посмотреть сообщение
Мимино, длину хода можно представить как количество закрашенных ячеек. В данном случае при вводе 5, закрашиваются все ячейки кроме той, где черепаха останавливается.
То есть реализовать можно в цикли вот так:

C++
1
2
for ( int i = 0; i < steps; i++ )
   floor[ x++ ][ y ] = true;
Хоть кто-то отозвался, спасибо. Я вот тоже сначала выбрал этот путь, но, опять же, как быть с перемещением на 1 шаг? В этом случае факт движения присутствует, а на положении черепахи это никак не отображается.
 
Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru