Очередной движок для решения задач.

Под номером 2.
Предназначен для вывода графики в массовом порядке. Предполагается, что в программе будет 5 групп изображений, в каждой группе 5 штук. Смена изображений осуществляется нажатием произвольной клавиши.
// Движок для решения графических задач (1)
// Язык Visual C++ 6.0
// p8Doc.h
class CP8Doc:public CDocument
{
protected:
CP8Doc ();
DECLARE_DYNCREATE (CP8Doc);
char aa [50]; // место для вводимых символов
int ca; // исходное данное - целое число
int da, db; // указатель ввода в строку данных, <Enter>
int ea, eb; // указатель чтения данных; введённое число
void ga (); // перевод данных из символьной формы в цифровую
void gb ();
};
- - - - -
// p8Doc.cpp
CP8Doc::CP8Doc ()
{
aa [0] = 0;
da = db = 0;
}
void CP8Doc::ga ()
{
db = 1;
ea = 0;
while ((aa [ea] < '0' || aa [ea] > '9') && aa [ea]) ea++;
gb ();
ca = eb;
}
void CP8Doc::gb ()
{
eb = 0;
while (aa [ea] >= '0' && aa [ea] <= '9')
{
eb = eb * 10 + aa [ea] - '0';
ea++;
}
}
- - - - -
// p8View.cpp
int d = 0; // счётчик изображений
int e = 100; // масштаб изображения
int g, h;
void CP8View::OnDraw (CDC *pDC)
{
CP8Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
CString a;
if (pdoc -> db == 0)
{
pDC -> TextOut (10, 10, "Введите целое число (1):");
pDC -> TextOut (10, 35, pdoc -> aa);
return;
}
if (pdoc -> ca == 1)
{
if (d == 0)
{
for (g = 0; g < 11; g++)
{
pDC -> MoveTo (e * g, 0);
pDC -> LineTo (e * g, e * 10);
pDC -> MoveTo (0, e * g);
pDC -> LineTo (e * 10, e * g);
}
}
}
}
void CP8View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
CP8Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
if (pdoc -> db)
{
if (d < 5) d++;
goto aaa;
}
if (nChar == 8)
{
if (pdoc -> da) {pdoc -> da--; pdoc -> aa [pdoc -> da] = 0;}
goto aaa;
}
if (nChar == 13)
{
pdoc -> ga ();
goto aaa;
}
if (pdoc -> da < 49)
{
pdoc -> aa [pdoc -> da] = nChar;
pdoc -> aa [pdoc -> da + 1] = 0;
pdoc -> da++;
}
aaa:
Invalidate ();
CView::OnChar (nChar, nRepCnt, nFlags);
}

Комментарии

  • 17 фев 2019 10:16
    Юра! пиши на нормальном языке))) не занимайся самозадротством, или тебе по кайфу называть свои методы gb()… bd(), а к элементам массива обращаться  aa[fd]! код должен быть читабельным, каждое название должно нести смысл или намек, желательно на английском языке, недопустимо нервировать других программистов, ты же не только для себя пишешь. Если это из учебника, то мой совет найди другое учебное пособие, не травмируй себе мозг, я по таким же дебильным примерам учил С/С++, но я на них не зацикливался.
  • 17 фев 2019 10:44
    А если классы, переменные не несут никакого смысла? Или этих смыслов штук шесть в одной программе, а я их хочу распространить на всю программу?
  • 17 фев 2019 12:20
    Да я тебе не про переменные, а про методы (по-другому функции), их то немного, переменные особенно локальные я бы тоже не стал никак обзывать, но методов и массивов - не так уж и много, а когда к функции обращаешься ласково по имени и тебе приятно и для других этот участок кода становится узнаваемым. Например, ga () можно назвать SymbToDigit() как вариант, легко интерпретируется как Symbol to Digit то есть символ в цифру, заодно и английский подучишь, знание языка стимулирует развитие интеллекта.
  • 17 фев 2019 12:24
    Что-то не хочется соображать. Не согласен.
  • 17 фев 2019 12:25
    ga () и gb () вызываются только один раз. Это внутренние функции, которые необязателньо помнить. Один раз использовал и всё.
  • 17 фев 2019 12:26
    Вообще написание примеров - это как бег по дороге с препятствиями. Никогда не знаешь, какие камни ВДРУГ попадутся, что придется преодолевать. Поэтому и названия единообразные. Чтоб не запоминать.
  • 17 фев 2019 12:26
    Бывает, Юра, ленность мысли))))) это не догма, но признак хорошего тона в программировании, без этой культуры твой код будет называться гавнокодом, это не в обиду тебе.
  • 17 фев 2019 12:27
    Ну я и говорю если это примеры из книжки то книжка это не ахти как написана, криво вообщем)
  • 17 фев 2019 12:27
    Такой способ можно применять, когда программа одна, объединена одной идеей. А у меня не так. У меня несколько, может быть десятки разнообразных примеров, слитых в одну программу.
  • 17 фев 2019 12:28
    Да, я тебя понял.
  • 17 фев 2019 12:28
    В книжке все OK, но мне, чтобы написать и все слить в одну - я переменные абстрагирую вот таким вот образом. От первоначальных имен ничего не остается. Никто так не пишет, даже в книжке. В книжке все понятно написано, с названиями все в порядке.
  • 17 фев 2019 12:29
    Я просто до больших программ не дошел. Другие дела есть.
  • 17 фев 2019 12:29
    Мне вон комиксы собирать и статьи с английского переводить. Есть чем заняться.
  • 17 фев 2019 12:34
    лучшая практика это как раз и клепание своего кривого говнокода, пишешь какое-нибудь "г", сталкиваешься при этом с какими-нибудь страшными трудностями, сначала думаешь лезть в петлю или утопится, потом находит озарение, лезешь сначала в книжку, если там нет то по форумам, можно наоборот сначала в сеть, если есть целый пример - копипастишь его в свою прогу и смотришь как это великолепие вместе занимается "секасом" и так далее двигаешься. Так намного интереснее, поверь, даже если результатов не видно, они точно лучше чем зачитанные до дыр бестолковые примеры.
  • 17 фев 2019 15:23
    Я хочу прочитать книжку.