Ñîñòàâèì ïðîãðàììó, êîòîðàÿ çàïðàøèâàåò äâå ñòðîêè ïî ÷åòûðå ñèìâîëà, ñîñòîÿùèå èç öèôð.  ñëó÷àå ââîäà ñèìâîëîâ, îòëè÷íûõ îò öèôð, äîëæíî îòîáðàæàòüñÿ ñîîòâåòñòâóþùåå ñîîáùåíèå, à ïðîãðàììà äîëæíà çàâåðøàòüñÿ. Ïðîãðàììà îáúåäèíÿåò ââåäåííûå ñòðîêè, çàòåì ïðåîáðàçóåò èñõîäíûå ñòðîêè â ÷èñëà, ïîäñ÷èòûâàåò èõ ñóììó, ïðåîáðàçóåò ðåçóëüòàò â ñòðîêó è ïå÷àòàåò ñòðîêè, ïîëó÷åííûå â ðåçóëüòàòå îáúåäèíåíèÿ è ïðåîáðàçîâàíèÿ ñóììû ÷èñåë â ñòðîêó.
Ðàáîòó ïðîãðàììû ìîæíî ïðåäñòàâèòü â âèäå òðåõ ñàìîñòîÿòåëüíûõ ôðàãìåíòîâ: ââîä ïåðâîé è âòîðîé ñòðîê è ïðåîáðàçîâàíèå èõ â ÷èñëî, âûâîä íà ýêðàí ðåçóëüòàòà îáúåäèíåíèÿ ñòðîê è ñóììèðîâàíèÿ ÷èñåë.
Âûâîä íà ýêðàí ðåçóëüòàòîâ îðãàíèçóåì ñ ïîìîùüþ ñòàíäàðòíûõ ïðîöåäóð âûâîäà Writeln, à äëÿ ââîäà ñòðîê è ïðåîáðàçîâàíèÿ èõ â ÷èñëà ñîçäàäèì ïðîöåäóðó Inp_Str. Äëÿ ïåðåäà÷è äàííûõ ìåæäó ïðîöåäóðîé è îñíîâíîé ïðîãðàììîé ââåäåì ôîðìàëüíûå ïàðàìåòðû-ïåðåìåííûå S òèïà string è X òèïà integer.
Äëÿ ïðåîáðàçîâàíèÿ ââåäåííîé ñòðîêè â ÷èñëî ïðèìåíèì ñòàíäàðòíóþ ôóíêöèþ Val, à äëÿ àíàëèçà îïåðàöèè ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî ââåäåì ëîêàëüíóþ ïåðåìåííóþ Code öåëîãî òèïà. Ïîñëå ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî ïðîâåðèì çíà÷åíèå ïåðåìåííîé Code, åñëè îíî íå ðàâíî 0, òî çíà÷èò â ñòðîêå íå âñå ñèìâîëû ÿâëÿþòñÿ öèôðàìè. Çíà÷åíèå Code óêàæåò ïîçèöèþ ïåðâîãî ñèìâîëà â ñòðîêå, íå ÿâëÿþùåãîñÿ öèôðîé.  ýòîì ñëó÷àå íàïå÷àòàåì íà ýêðàíå ñîîáùåíèå îá îøèáêå è óêàæåì ïîçèöèþ íåâåðíî ââåäåííîãî ñèìâîëà â ñòðîêå, ïîñëå ÷åãî ïðåðâåì ðàáîòó ïðîãðàììû, èñïîëüçóÿ ñòàíäàðòíóþ ïðîöåäóðó Halt. Òåêñò ïðîöåäóðû Inp_Str áóäåò âûãëÿäåòü ñëåäóþùèì îáðàçîì:
procedure Inp_Str(var S: string: var X:integer);
{Ïðîöåäóðà ââîäà ñòðîêè öèôð è ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî}
var
Cod: integer; {Ðåçóëüòàò ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî}
begin
Write('Ââåäèòå ñòðîêó öèôð');
Readln(S);
VAR(S, X, Cod); {Ïðåîáðàçîâàíèå ñòðîêè S â öåëîå ÷èñëî X}
if Cod <> 0 then {Åñëè íå âñå ñèìâîëû â ñòðîêå ÿâëÿþòñÿ öèôðàìè}
begin
Writeln('Îøèáêà! Â ïîçèöèè '.Cod.' ââåäåííîé ñòðîêè íå öèôðà');
Halt(l); {Ïðåðûâàíèå ïðîãðàììû}
end;
end;
Ñ ó÷åòîì âûøåñêàçàííîãî ïîëíûé òåêñò ïðîãðàììû ðåøåíèÿ çàäà÷è áóäåò çàïèñàí ñëåäóþùèì îáðàçîì:
program Demo_Val_Str;
var SI. S2 : string:
XI, X2 : integer;
procedure Inp_Str(var S; string; var X:integer);
{Ïðîöåäóðà ââîäà ñòðîêè öèôð è ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî}
var
Cod: integer; {Ðåçóëüòàò ïðåîáðàçîâàíèÿ ñòðîêè â ÷èñëî}
begin
Write('Ââåäèòå ñòðîêó öèôð');
Readln(S):
VaR(S, X, Cod); {Ïðåîáðàçîâàíèå ñòðîêè S â öåëîå ÷èñëî X}
if Cod <> 0 then {Åñëè íå âñå ñèìâîëû â ñòðîêå ÿâëÿþòñÿ öèôðàìè}
begin
Writeln('Îøèáêà! Â ïîçèöèè '.Cod,' ââåäåííîé ñòðîêè íå öèôðà');
Halt(l); {Ïðåðûâàíèå ïðîãðàììû}
end;
end;
begin {Íà÷àëî îñíîâíîé ïðîãðàììû}
Inp_Str(Sl,Xl); {Âûçîâ ïðîöåäóðû ââîäà ñòðîêè ñ ôàêòè÷åñêèìè ïàðàìåòðàìè-ïåðåìåííûìè S1.X1}
Inp_Str(S2,X2); {Âûçîâ ïðîöåäóðû ââîäà ñòðîêè ñ ôàêòè÷åñêèìè ïàðàìåòðàìè-ïåðåìåííûìè S2,X2}
Writeln('Ðåçóëüòàò ñêëåèâàíèÿ ñòðîê -> ',Concat(Sl.S2));
Writelï('Ñóììà ââåäåííûõ ÷èñåë= '.Õ1+Õ2);
end.
Çàïóñòèòå èíòåãðèðîâàííóþ ñðåäó ïðîãðàììèðîâàíèÿ. Ââåäèòå òåêñò ïðîãðàììû Demo_Val_Str è çàïèøèòå ôàéë íà äèñê ïîä ñîîòâåòñòâóþùèì èìåíåì, à çàòåì îòêîìïèëèðóéòå åãî. Ïîñëå óñïåøíîãî çàâåðøåíèÿ êîìïèëÿöèè ïðîâåðüòå ðàáîòó ïðîãðàììû ñ îòëàäêîé â ïîøàãîâîì ðåæèìå, îòñëåæèâàÿ çíà÷åíèÿ ïåðåìåííûõ SI, S2, XI, Õ2.
|