class CP53Doc:public CDocument{protected:CP53Doc ();DECLARE_DYNCREATE (CP53Doc);char aa [50]; // input stringint ad, ae; // ad - pointer to input char in string <aa>, ae - flag of <Enter>int ag [10]; // resultschar aj [50], ak [50], al [50];CString am [10];char ap [50];void bb ();}CP53Doc::CP53Doc (){aa [0] = 0; // input string to be displayedad = ae = 0;}void CP53Doc::bb (){int a, b;// 53.1.53.1a = b = 0;while (aa [a]){if (aa [a] == 'a') b++;a++;}ag [0] = b;// 54.2.54.2aj [a] = 0;b = a - 1;while (a){a--;aj [b - a] = aa [a];}// 55.3.55.3b++;ak [b] = 0;for (a = 0; a < b; a++){ak [a] = aa [a];if (ak [a] == 'a') ak [a] = 'b';}// 60.8.4// 61.9.5// 65.9.6a = 0;while (aa [a] >= '0' && aa [a] <= '9'){al [a] = aa [a];a++;}if (a < 49){al [a] = '.';a++;}if (a < 49){al [a] = '.';a++;}while (a < 49 && aa [a - 2]){al [a] = aa [a - 2];a++;}al [a] = 0;// 77.15.7switch (aa [0]){case 'A': am [0] = "7. Alexeev."; break;case 'B': am [0] = "7. Bulgakov."; break;case 'C': am [0] = "7. Cleopatra."; break;case 'D': am [0] = "7. Dostoevski."; break;default: am [0] = "7. Voloshin, Gogol etc.";}if (aa [0] < 'A' || aa [0] > 'Z') am [0] = "7. You should input capital letter.";// 79.17.8// 85.22.9a = 0;while (aa [a] && aa [a] != ' '){ap [a] = aa [a];a++;}ap [a] = 0;// 86.24.10a = 0;while (aa [a]) a++;ag [1] = a;}void CP53View::OnDraw (CDC *pDC){CP53Doc *pdoc = GetDocument ();ASSERT_VALID (pdoc);CString a; // output stringpDC -> TextOut (10, 10, "Input string:");pDC -> TextOut (10, 35, pdoc -> aa);if (pdoc -> ae) // flag - user pressed <Enter> to print results{a.Format ("1. Number of 'a' is equal to %i.", pdoc -> ag [0]);pDC -> TextOut (10, 85, a);a.Format ("2. %s", pdoc -> aj);pDC -> TextOut (10, 110, a);a.Format ("3. %s", pdoc -> ak);pDC -> TextOut (10, 135, a);a.Format ("4. You have pressed button '%c'.", pdoc -> aa [0]);pDC -> TextOut (10, 160, a);a.Format ("5. I know your name; your name is %s", pdoc -> aa);pDC -> TextOut (10, 185, a);a.Format ("6. %s", pdoc -> al);pDC -> TextOut (10, 210, a);pDC -> TextOut (10, 235, pdoc -> am [0]);a.Format ("8. %c", pdoc -> aa [0]);pDC -> TextOut (10, 260, a);a.Format ("9. %s", pdoc -> ap);pDC -> TextOut (10, 285, a);a.Format ("10. String %s has length %i symbols.", pdoc -> aa, pdoc -> ag [1]);pDC -> TextOut (10, 310, a);}}void CP53View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags){CP53Doc *pdoc = GetDocument ();ASSERT_VALID (pdoc);if (nChar == 8) // pressed <Backspace>{if (pdoc -> ad) {pdoc -> ad--; pdoc -> aa [pdoc -> ad] = 0;}goto aaa;}if (nChar == 13) // pressed <Enter>{pdoc -> ae = 1;pdoc -> bb ();goto aaa;}if (pdoc -> ad < 49) // adding symbol to string <aa>{pdoc -> aa [pdoc -> ad] = nChar;pdoc -> aa [pdoc -> ad + 1] = 0;pdoc -> ad++;}aaa:Invalidate ();CView::OnChar (nChar, nRepCnt, nFlags);}
программирование ардуино, распберри, и для компа
:Юрий Казекин
// p53 - string
class CP53Doc:public CDocument
{
protected:
CP53Doc ();
DECLARE_DYNCREATE (CP53Doc);
char aa [50]; // input string
int ad, ae; // ad - pointer to input char in string <aa>, ae - flag of <Enter>
int ag [10]; // results
char aj [50], ak [50], al [50];
CString am [10];
char ap [50];
void bb ();
}
CP53Doc::CP53Doc ()
{
aa [0] = 0; // input string to be displayed
ad = ae = 0;
}
void CP53Doc::bb ()
{
int a, b;
// 53.1.53.1
a = b = 0;
while (aa [a])
{
if (aa [a] == 'a') b++;
a++;
}
ag [0] = b;
// 54.2.54.2
aj [a] = 0;
b = a - 1;
while (a)
{
a--;
aj [b - a] = aa [a];
}
// 55.3.55.3
b++;
ak [b] = 0;
for (a = 0; a < b; a++)
{
ak [a] = aa [a];
if (ak [a] == 'a') ak [a] = 'b';
}
// 60.8.4
// 61.9.5
// 65.9.6
a = 0;
while (aa [a] >= '0' && aa [a] <= '9')
{
al [a] = aa [a];
a++;
}
if (a < 49)
{
al [a] = '.';
a++;
}
if (a < 49)
{
al [a] = '.';
a++;
}
while (a < 49 && aa [a - 2])
{
al [a] = aa [a - 2];
a++;
}
al [a] = 0;
// 77.15.7
switch (aa [0])
{
case 'A': am [0] = "7. Alexeev."; break;
case 'B': am [0] = "7. Bulgakov."; break;
case 'C': am [0] = "7. Cleopatra."; break;
case 'D': am [0] = "7. Dostoevski."; break;
default: am [0] = "7. Voloshin, Gogol etc.";
}
if (aa [0] < 'A' || aa [0] > 'Z') am [0] = "7. You should input capital letter.";
// 79.17.8
// 85.22.9
a = 0;
while (aa [a] && aa [a] != ' ')
{
ap [a] = aa [a];
a++;
}
ap [a] = 0;
// 86.24.10
a = 0;
while (aa [a]) a++;
ag [1] = a;
}
void CP53View::OnDraw (CDC *pDC)
{
CP53Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
CString a; // output string
pDC -> TextOut (10, 10, "Input string:");
pDC -> TextOut (10, 35, pdoc -> aa);
if (pdoc -> ae) // flag - user pressed <Enter> to print results
{
a.Format ("1. Number of 'a' is equal to %i.", pdoc -> ag [0]);
pDC -> TextOut (10, 85, a);
a.Format ("2. %s", pdoc -> aj);
pDC -> TextOut (10, 110, a);
a.Format ("3. %s", pdoc -> ak);
pDC -> TextOut (10, 135, a);
a.Format ("4. You have pressed button '%c'.", pdoc -> aa [0]);
pDC -> TextOut (10, 160, a);
a.Format ("5. I know your name; your name is %s", pdoc -> aa);
pDC -> TextOut (10, 185, a);
a.Format ("6. %s", pdoc -> al);
pDC -> TextOut (10, 210, a);
pDC -> TextOut (10, 235, pdoc -> am [0]);
a.Format ("8. %c", pdoc -> aa [0]);
pDC -> TextOut (10, 260, a);
a.Format ("9. %s", pdoc -> ap);
pDC -> TextOut (10, 285, a);
a.Format ("10. String %s has length %i symbols.", pdoc -> aa, pdoc -> ag [1]);
pDC -> TextOut (10, 310, a);
}
}
void CP53View::OnChar (UINT nChar, UINT nRepCnt, UINT nFlags)
{
CP53Doc *pdoc = GetDocument ();
ASSERT_VALID (pdoc);
if (nChar == 8) // pressed <Backspace>
{
if (pdoc -> ad) {pdoc -> ad--; pdoc -> aa [pdoc -> ad] = 0;}
goto aaa;
}
if (nChar == 13) // pressed <Enter>
{
pdoc -> ae = 1;
pdoc -> bb ();
goto aaa;
}
if (pdoc -> ad < 49) // adding symbol to string <aa>
{
pdoc -> aa [pdoc -> ad] = nChar;
pdoc -> aa [pdoc -> ad + 1] = 0;
pdoc -> ad++;
}
aaa:
Invalidate ();
CView::OnChar (nChar, nRepCnt, nFlags);
}