Procedure GetWord(s:string; var from:integer; var w:string; var len:integer); { Ищет в строке s слово, начиная с позиции from. Если слово w найдено, from будет указывать на его начало, а в len будет находиться длина эого слова. если слово не найдено, w='', len=0 Слова раздеяются минимум одним пробелом, за исключением первого и последнего слова, у которых пробел может находиться только с одной стороны. } var i,n:integer; stop:Boolean; begin n:=Length(s); i:=from; stop:=false; while (i<=n) and (not stop) do if s[i]=' ' then Inc(i) else stop:=true; if i>n then begin len:=0; w:='' end else begin from:=i; stop:=false; while (i<=n) and (not stop) do if s[i]<>' ' then Inc(i) else stop:=true; if i>n then len:=n-from+1 else len:=i-from; w:=Copy(s,from,len) end end;
var s1,wd,wdmax:string; ic,L,Lmax:integer;
begin Write('Введите строку: '); Readln(s1); ic:=1; Lmax:=0; repeat GetWord(s1,ic,wd,L); if (L>0) and (L>Lmax) then begin Lmax:=L; wdmax:=wd end; ic:=ic+L+1 until L=0; Writeln('Самое длинное слово "',wdmax,'" длины ',Lmax) end.
Тестовое решение: Введите строку: Это пример тестовой строки с произвольным числом пробелов. Самое длинное слово "произвольным" длины 12
1. Внимательно читаем условие задания. Требуется составить и использовать процедуру, которая считает сумму двух одинаковых чисел. Остальное текстуально относится к самой программе: ввод данных, проверка условия с зацикливанием и вывод.
// PascalABC.NET 3.3, сборка 1599 от 17.12.2017 // Внимание! Если программа не работает, обновите версию!
procedure Strange(a,b:real; var c:real; var flag:boolean); begin flag:=a=b; if flag then c:=a+b end;
begin var a,b,c:real; var f:boolean; while true do begin (a,b):=ReadReal2('Введите пару чисел:'); Strange(a,b,c,f); if f then begin Writeln('Сумма равна ',c); break end else Writeln('Числа не равны') end end.
Пример Введите пару чисел: 2 4.5 Числа не равны Введите пару чисел: 4 4 Сумма равна 8
2. Можно представить, что автор задания не в ладах с русским языком и на самом деле процедура должна сделать все сама, а программа - только вызвать эту процедуру. Тогда решение может быть таким.
procedure Strange2; begin while true do begin var (a,b):=ReadReal2('Введите пару чисел:'); if a=b then begin Writeln('Сумма равна ',a+b); exit end; Writeln('Числа не равны') end end;
begin Strange2 end.
Пример Введите пару чисел: 4.5 4.4 Числа не равны Введите пару чисел: 3.6 3.6 Сумма равна 7.2
начало
ввод числа В
если B<4 то B:=B*3 если B>=4 то В:=В-3
вывод В
конец
если нужна программа
var
b:integer;
begin
read (b);
if b<4 then b:=b*3 else b:=b-3;
write(b);
end.