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

Язык Лого ( Траектория черепахи) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В исходную строку добавьте после каждого символа его номер по порядку в алфавите http://www.cyberforum.ru/cpp-beginners/thread909917.html
В исходную строку добавьте после каждого символа его номер по порядку в алфавите. Добавлено через 59 минут помогите написать..
C++ Упрощение кода программы Здравствуйте уважаемые форумчане! Дана следующая задача Напишите программу на C++, которая использует три определяемых пользователем функции (включая main()) и генерирует следующий вывод: Three blind mice Three blind mice See how they run See how they run Одна функция, вызываемая два раза, должна генерировать первые две строки, а другая, так же вызываемая два раза - оставшиеся строки. http://www.cyberforum.ru/cpp-beginners/thread909915.html
C++ очередь как кольцевой массив
помогите плиз. очередь как кольцевой массив, положительные числа записать в очередь, отрицательные в стек заранее спасибо
C++ Подскажите пожалуйста с int main(int argc, char*argv[])
Если я правильно понимаю, то int argc это передача аргумента программе, т. е если argc>1 то программе передан хотя бы один аргумент, если argc=1, то аргументов нет. У меня вопрос такого плана: как передать аргумент программе???? P.S. Заранее спасибо за помошь.
C++ Сортировка пузырьком по змейке http://www.cyberforum.ru/cpp-beginners/thread909854.html
Нужно реализовать пузырьковую сортировку матрицы по змейке, у самой не получается. Мой рисунок змейки №9, нашла похожую программу но там другой рисунок (№1) Вот мой код(без сортировки): #include <iostream> #include <iomanip> using namespace std; void print(int **a,int n) {
C++ Переделать программу в ООП Помогите пожалуйста, у самой ничего не получается. Нужно обернуть программу в классы. Она должна считать уравнения третьего порядка. Самостоятельно ничего не получилось, как ни старалась, ну ни как не могу вникнуть как работать с классами. #include <iostream> #include <clocale> #include <stdlib.h> #include <iomanip> #include <string> #include <cstring> #include <fstream> подробнее

Показать сообщение отдельно
MousePro
49 / 30 / 1
Регистрация: 25.04.2013
Сообщений: 366

Язык Лого ( Траектория черепахи) - C++

23.06.2013, 12:02. Просмотров 1372. Ответов 3
Метки (Все метки)

Привет Всем, это сного я с "чудными" вопросами

Задача
(Траектории черепахи) Язык Лого, особенно популярный среди пользователей персональных компьютеров, сделал известной идею траекторий черепахи. редставьте себе механическую черепаху, которая ползает по комнате под управлением программы на C++. Черепаха несет пишущее перо, которое может находиться в одной из двух позиций — нижней или верхней. Если перо в нижней позиции, черепаха вычерчивает траекторию движения, если в верхней, то черепаха передвигается свободно и ничего не вычерчивает. В этой задаче вы будете моделировать действия черепахи и создавать компьютеризованный эскиз пути. Используйте массив floor размером 20 на 20 с нулевыми начальными условиями. Считывайте команды из содержащего их массива. Все время отмечайте текущую позицию, черепахи и положение пера — нижнее или верхнее. Предполагайте, что черепаха всегда стартует из позиции О, О на полу с верхним положением пера. Ваша программа должна подавать команды черепахе в соответствии со следующими обозначениями:
Команда
1 - перо вверх
2 - перо вниз
3 - поворот направо
4 - поворот налево
5, 10 - передвижение вперед на 10 шагов
6 - печать массива 20 на 20
9 - конец данных (сигнальная метка)

Предположим, что черепаха находится где-то возле центра комнаты. Следующая «программа управления черепахой» начертила бы квадрат 12 на 12 и оставила бы перо в верхней позиции:
2
5,12 '
3
5,12
3
5,12
3
5,12
1
6
9
Если черепаха передвигается с пером, находящимся в нижней позиции, устанавливайте соответствующие элементы массива floor равными 1. При подаче команды 6 (печать) отображайте звездочкой или каким-либо другим символом все значения 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
#include "iostream"
#include <windows.h>
#include <time.h>
 
int const a =20,b=20 ,q=5;
int left (int [a][b],int[],int);
int right (int [a][b],int[],int);
 
 
 
int main()
{
    
setlocale(LC_ALL,"Russian");
int pos=1;
int pol [a][b]={{0}};
int x[q]={0};
x[4]=10;
x[5]=10;
 
int y=0;
 
bool count1 =true;
while(count1)
{
    bool count =true;
while(count)
{
    std::cout<<"Введите данные\n"<<"1 - Выбор Пера   "<<"2 - Выбор направления   "<<"3 - Выбор шага   " ;
std::cin>>y;
 
switch (y)
{
case 1://Выбор пера
    std::cout<<"Введите положение\n";
    std::cin>>x[y];
    break;
 
case 2://Выбор направления
    std::cout<<"Введите направления\n";
    std::cin>>x[y];
        break;
 
case 3://кол-во шагов
    std::cout<<"Введите шагов\n";
    std::cin>>x[y];
        break;
case 0:
    count = false;
}
}
if(pos >4)
    pos =1;
if(x[2]==1)
pos=  right ( pol,x,pos);
 
 
for(int h=0;h<=20;h++)
 
{
    std::cout<<"\t\t";
    for(int c=0;c<=20;c++)
    {
        if(pol[h] [c]==1)
            std::cout<<"*";
        else
            std::cout<<"#";
    }
    std::cout<<"\n";
}
 
}
 
system ("pause");
return 0;
}
 
 
 
 
 
 
 
 
int right (int pol [a][b],int x[],int pos)
{
    
    int vert=x[4];
    int goriz=x[5];
 
    if(x[1]==1 && pos ==1)
    {
        int target = vert +x[3];
        for(int z=vert;z<=target;z++)
        {
            for(int v =goriz;v<=goriz;v++)
                pol[v] [z] =1;
        }
        x[4]=target;
        x[5]=goriz;
        
        return pos+1;
    }
 
 
    if(x[1]==1 && pos ==2)
    {
        int target = goriz +x[3]-1;
        for(int z=goriz;z<=target;z++)
        {
            for(int v =vert;v<=vert;v++)
                pol[z] [v] =1;
        }
        x[4]=vert;
        x[5]=target;
        return pos+1;
    } 
 
 
    if(x[1]==1 && pos ==3)
    {
        int target = vert - x[3];
        for(int z=vert;z>=target;z--)
        {
            for(int v =goriz;v<=goriz;v++)
                pol[v] [z] =1;
        }
        x[4]=target;
        x[5]=goriz;
        return pos+1;
    }
    
 
    if(x[1]==1 && pos ==4)
    {
        int target = goriz-x[3]+1;
        for(int z=goriz;z>=target;z--)
        {
            for(int v =vert;v<=vert;v++)
                pol[z] [v] =1;
        }
        x[4]=vert;
        x[5]=target;
        return pos+1;
    }
 
}
Собственно вопрос такой: Как мне создать отдельный файл в студии что бы поместить туда обработку функций "право" и "лево" и как их вызывать, а то как то не удобно когда все в 1 "котле"

Добавлено через 5 минут
а почему тест редактировать нельзя?))
задачу думал примерно день, а лег спать и тут родилась идея и не дала мне заснуть
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru