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

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

Войти
Регистрация
Восстановить пароль
 
IramKenZo
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 55
#1

Нужны некоторые пояснения - C++

09.11.2014, 13:42. Просмотров 204. Ответов 4
Метки нет (Все метки)

При выполнении программы есть область 20 на 20.
1) Почему при движении вправо или влево, после того, как заканчивается строчка, курсор переходит на новую строку (когда, по-моему, такого не должно быть), а при движении вверх или вниз курсор уходит за пределы и его не видно.
2)если курсор вышел из области(то есть движение вниз было >20 раз), где он?(я правильно понял, что я вышел за границы массива, но тогда почему программа не завершается с ошибкой?)


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
#include <iostream>
#include <conio.h>
using namespace std;
 
int main()
{
    char prostr[20][20];
    char c = '|';
    char c1;
    int n=0; //столбец
    int m=0; //строка
 
    for(int i=0; i<20; i++)   //заполняем массив
    {
        for(int j=0; j<20; j++)
        {
            prostr[i][j]='*';
        }
    }
 
 
    do
    {
        c1=_getch();
        system("cls");
 
        if(c1 == 'D' || c1 == 'd') // движение вправо
        {
            prostr[m][n]=' ';
            prostr[m][n+1]=c;
            n++;
        }
 
        if(c1 == 'A' || c1 == 'a') //движение влево
        {
            prostr[m][n]=' ';
            prostr[m][n-1]=c;
            n--;
        }
 
        if(c1 == 'S' || c1 == 's') //движение вниз
        {
            prostr[m][n]=' ';
            prostr[m+1][n]=c;
            m++;
        }
 
        if(c1 == 'W' || c1 == 'w') // движение вверх
        {
            prostr[m][n]=' ';
            prostr[m-1][n]=c;
            m--;
        }
 
        for(int i=0; i<20; i++)   //выводим массивна экран
        {
            for(int j=0; j<20; j++)
            {
                cout << prostr[i][j];
            }
            cout << endl;
        }
 
    }while (c1 != 'q');
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2014, 13:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужны некоторые пояснения (C++):

Синглтон Мейерса, нужны некоторые пояснения - C++
class Singleton{ public: static Singleton&amp; init() { static Singleton Object; return Object; } ...

Нужны пояснения - C++
Читаю &quot;С++ руководство для начинающих&quot; Герберта Шилдта. Дочитал до &quot;передача аргументов командной строки функции main()&quot;. То ли я глупый,...

Нужны пояснения по вложенным классам - C++
задался вот таким вопросом, почему не получается объявить вложенный класс следующим образом? #include &lt;iostream&gt; using namespace std; ...

Conversion by constructor , нужны пояснения - C++
Здравствуйте. Смотрю я, что пишут об этом Conversion by constructor, вижу одно: Вот, думаю, сейчас как заставлю компилятор...

Реализация связанного списка - нужны пояснения - C++
#include &lt;iostream&gt; using namespace std; class cool { public: int number; cool* next; ...

Нужны пояснения насчет компиляторов для разных ОС - C++
Всем привет ребят! Есть несколько вопросов: 1) Существуют различные компиляторы (к примеру на с++), эти компиляторы предназначены для...

4
Байт
Эксперт C
16561 / 10831 / 1646
Регистрация: 24.12.2010
Сообщений: 20,925
09.11.2014, 14:03 #2
Цитата Сообщение от IramKenZo Посмотреть сообщение
после того, как заканчивается строчка, курсор переходит на новую строку
prostr[0][20] = prostr[1][0] Так транслятор располагает
Цитата Сообщение от IramKenZo Посмотреть сообщение
но тогда почему программа не завершается с ошибкой?
Чисто случайно. Затираешь какие-то места, которые никому не принадлежат. Подвигайся еще, навярняка ошибочка выскочит
0
IramKenZo
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 55
09.11.2014, 15:06  [ТС] #3
Цитата Сообщение от Байт Посмотреть сообщение
Чисто случайно. Затираешь какие-то места, которые никому не принадлежат. Подвигайся еще, навярняка ошибочка выскочит
а можно этого как-то избежать?
0
Байт
Эксперт C
16561 / 10831 / 1646
Регистрация: 24.12.2010
Сообщений: 20,925
09.11.2014, 15:09 #4
Цитата Сообщение от IramKenZo Посмотреть сообщение
а можно этого как-то избежать?
Конечно! Просто грамотно писать программу. Проверять выход индексов за пределы диапазона.
C++
1
if (n>0) n--;
0
IramKenZo
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 55
09.11.2014, 15:46  [ТС] #5
Цитата Сообщение от Байт Посмотреть сообщение
Конечно! Просто грамотно писать программу. Проверять выход индексов за пределы диапазона.
C++
1
2
3
4
5
6
7
8
9
10
11
        if(c1 == 'D' || c1 == 'd') // движение вправо
        {
            if(n >= 19)
                n--;
            else
            {
                prostr[m][n]=' ';
                prostr[m][n+1]=c;
            }
            n++;
        }
так будет лучше?
0
09.11.2014, 15:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2014, 15:46
Привет! Вот еще темы с ответами:

Нужны небольшие пояснения по маленькому фрагменту кода, реализующего рекурсивный поиск в глубину по графу - C++
Здравствуйте, не могу разобраться в этой функции. Ниже есть ссылка на сам алгоритм. Заранее спасибо. Тут описан алгоритм. vector &lt;...

Структура "Student", нужны пояснения - C++
Доброе время суток форум. Нужна помощь в объяснении программы. Хочу в ней разобраться. Вроде в ней все выглядит знакомо, но понять ничего...

Объясните, для чего нужны некоторые строчки в коде(using namespace, new, int main) - C++
#include &lt;iostream&gt; using namespace std; //для чего эта строчка int main(void) // что нужно изменить чтобы было void main() { ...

Главная функция (вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию) - C++
Написать главную функцию, которая вводит некоторые значения и передает их и ссылки на некоторые переменные в функцию. Получив результаты...


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

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

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