/* p11

Ввод трёх целых чисел
Язык Visual C++ 6.0 */
Файл «p11Doc.h»
class CP11Doc:public CDocument
{
protected:
CP11Doc ();
DECLARE_DYNCREATE (CP11Doc);
int aa, ab, ac; // исходные данные - целые числа
int ad, ae, af; // исходные данные - натуральные числа
int ag, ah; // указатель ввода в строку данных, <Enter>
int ai, aj; // внутренние переменные для передачи данных
char ba [50]; // место для вводимых символов
CString bd [10]; // вывод информации на экран
int bg [10];
void ca (); // перевод данных из символьной формы в цифровую
void cb ();
};
Файл «p11Doc.cpp»
CP11Doc::CP11Doc ()
{
aa = ab = ac = ag = ah = 0;
ba [0] = bg [0] = 0;
}
void CP11Doc::ca ()
{
ah = 1; // флаг начала обработки
ai = 0; // временный счётчик символов массива
while ((ba [ai] < '0' || ba [ai] > '9') && ba [ai] != '-' && ba [ai]) ai++;
cb ();
aa = aj;
while ((ba [ai] < '0' || ba [ai] > '9') && ba [ai] != '-' && ba [ai]) ai++;
cb ();
ab = aj;
while ((ba [ai] < '0' || ba [ai] > '9') && ba [ai] != '-' && ba [ai]) ai++;
cb ();
ac = aj; // данные занесены
}
void CP11Doc::cb ()
{
int a;
aj = 0; // целое число, извлекаемое из массива
a = 1; // знак извлекаемого числа
if (ba [ai] == '-') {a = -1; ai++;}
while (ba [ai] >= '0' && ba [ai] <= '9')
{
aj = aj * 10 + ba [ai] - '0';
ai++;
}
aj *= a;
}
Файл «p11View.cpp»
void CP11View::OnDraw (CDC* pDC)
{
CP11Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
CString a; // выводимая строка
pDC -> TextOut (10, 10, "Введите три целых числа:");
pDC -> TextOut (10, 35, pdoc -> ba);
a.Format ("code = %i", pdoc -> bg [0]); // код вводимого символа
pDC -> TextOut (10, 60, a);
if (pdoc -> ah) // <Enter>
{
a.Format ("%i %i %i", pdoc -> aa, pdoc -> ab, pdoc -> ac);
pDC -> TextOut (10, 85, a);
}
}
void CP11View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
CP11Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
pdoc -> bg [0] = nChar;
if (nChar == 8) // Обработка <Backspace>
{
if (pdoc -> ag) {pdoc -> ag--; pdoc -> ba [pdoc -> ag] = 0;}
goto aaa;
}
if (nChar == 13) // Обработка <Enter>
{
pdoc -> ca ();
goto aaa;
}
if (pdoc -> ag < 49) // Ограничение на длину вводимой строки
{
pdoc -> ba [pdoc -> ag] = nChar; // Добавление символа к массиву строки
pdoc -> ba [pdoc -> ag + 1] = 0;
pdoc -> ag++;
}
aaa:
Invalidate ();
CView::OnChar (nChar, nRepCnt, nFlags);
}

Комментарии

  • 11 ноя 2017 08:13
    ну как бы вы не первый такой.. я в 91 так же изучал. Интернет тогда просто физически не существовал и книг не было от слова совсем. Все что было - пару текстовых файлов с книгами. И были это времена DOS и Turbo C++ 1.0
  • 11 ноя 2017 08:16
    Естественно никто не объяснял и не помогал. Просто не было рядом знающих людей. Потому все сам. Методом тыка и чтение исходников стандартных библиотек.
  • 11 ноя 2017 08:20
    " Например, то, что объекты класса CString можно складывать." - операция конкатенации является стандартной для базовых типов. К тому же, в С++ (как и в других языках), существует такая штука как operator. Вот она то как раз и предназначена для того что бы вы могли создать действие в своем классе. Т.е. описываете правили сложения (или другие операторы) двух экземпляров ваших классов.
  • 11 ноя 2017 08:24
    " Они предоставили максимум того, что можно сделать с классами."  если бы вы изучали что то более современное, то были бы уже не удивлены, а просто шокированы. :-)
    Технологии развиваются, и любой современный язык умеет в разы больше того, что вас сейчас так восхищает :-)
  • 11 ноя 2017 16:27
    Зато очень огорчает, как написаны учебники. Знания приходится добывать чуть ли не ломом и лопатой. Чтобы прочитать задачник, пришлось применить вот такой вот "лом".
  • 11 ноя 2017 19:01
    Ну задачник это наверное не лучший способ научится программировать. В реальной жизни уравнения считать приходится не часто. Обычно это довольно специфические задачи.
  • 12 ноя 2017 02:16
    Хочу научиться решать задачи. В школе всё-таки не научили.
    У меня есть задачники, учебники по языкам, книги по теории. Всё это достаточно интересно, чтобы не смириться со своим невежеством.
  • 12 ноя 2017 02:17
    Ну и плюс ко всему, программирование всё-таки здорово помогает, когда имеешь дело с компьютером. Я расскажу об этом в других постах.
  • 12 ноя 2017 04:51
    ну если просто для души хочется порешать задачки - почему нет. Очень даже )
  • 12 ноя 2017 07:21
    Это не для души. Это для ума.
    Для души - это аниме.
    В школе нас заставляли учить математику и решать задачи по математике - а сейчас вдруг стало не надо? Почему?
  • 12 ноя 2017 15:52
    Я думаю каждый волен сам решать нужна ли ему математика после школы. Многие решают что не нужна. В итоге не могут посчитать проценты по кредиту :-)
  • 12 ноя 2017 17:30
    А способности-то куда тогда девать? Зачем их развивать? Зачем углубленные школы, олимпиады, засиживаться до ночи над заданиями?
  • 13 ноя 2017 06:18
    Я же говорю, кому это надо, сам понимает куда и зачем применять. А тот кому не понятно - вдалбливать бесполезно.
  • Комментарий удалён.
  • 13 ноя 2017 06:19
    А способности развивать надо. Знания лишними не будут ни когда.