Ввод трёх целых чисел
Язык 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);
}
Присоединяйтесь — мы покажем вам много интересного
Присоединяйтесь к ОК, чтобы подписаться на группу и комментировать публикации.
Комментарии 29
https://www.youtube.com/watch?v=HCSDmwrMCgE
А у меня был задачник, как под MS-DOS, и я не нашёл в книжке, как ввести в программу дробные числа. Там такого не объяснялось. Зато объяснялось, что есть поля ввода, что нужно привязывать к ним специальные классы и объекты с неизвестными (пока) методами, в которых я не шарю, а Help'а нет. Вот такая вот американская гуманность.
Тогда я программировал на 486-ом (CPU 0,1 ГГц; 32 Mb RAM; 0,6 Gb HDD IDE).
Сейчас я программирую на Celeron (CPU 0,333 ГГц; 128 Mb RAM; 80 Gb HDD IDE).
Прогресс, однако.
Мне пришлось изучить C++ и классы работы с окном, а также класс хранения строковых данных CString. Кое-что пришлось угадывать "методом тыка". Например, то, что объекты класса CString можно складывать.
Программисты Microsoft очень предусмотрительны. Они предоставили максимум того, что можно сделать с классами. Раз в 10 больше того, что понадобится "среднему" пользователю...
Технологии развиваются, и любой современный язык умеет в разы больше того, что вас сейчас так восхищает
У меня есть задачники, учебники по языкам, книги по теории. Всё это достаточно интересно, чтобы не смириться со своим невежеством.
Для души - это аниме.
В школе нас заставляли учить математику и решать задачи по математике - а сейчас вдруг стало не надо? Почему?