Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 57

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

09.11.2014, 13:42. Показов 718. Ответов 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2014, 13:42
Ответы с готовыми решениями:

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

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

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

4
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2014, 14:03
Цитата Сообщение от IramKenZo Посмотреть сообщение
после того, как заканчивается строчка, курсор переходит на новую строку
prostr[0][20] = prostr[1][0] Так транслятор располагает
Цитата Сообщение от IramKenZo Посмотреть сообщение
но тогда почему программа не завершается с ошибкой?
Чисто случайно. Затираешь какие-то места, которые никому не принадлежат. Подвигайся еще, навярняка ошибочка выскочит
0
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 57
09.11.2014, 15:06  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
Чисто случайно. Затираешь какие-то места, которые никому не принадлежат. Подвигайся еще, навярняка ошибочка выскочит
а можно этого как-то избежать?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
09.11.2014, 15:09
Цитата Сообщение от IramKenZo Посмотреть сообщение
а можно этого как-то избежать?
Конечно! Просто грамотно писать программу. Проверять выход индексов за пределы диапазона.
C++
1
if (n>0) n--;
0
1 / 1 / 0
Регистрация: 02.11.2014
Сообщений: 57
09.11.2014, 15:46  [ТС]
Цитата Сообщение от Байт Посмотреть сообщение
Конечно! Просто грамотно писать программу. Проверять выход индексов за пределы диапазона.
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2014, 15:46
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru