1)Укажите ложные утверждения:
128 — целое число
'Код' — целочисленная константа
124.98 — вещественное число
'Строка' — строковое значение
–25.6 — отрицательное целое число
2)Целочисленная переменная А — единственная переменная, используемая в некоторой программе.
Как будет выглядеть раздел описания переменных в этой программе?
3)Укажите операторы, используемые для ввода данных в Паскале:
Write
Var
Writeln
Readln
Read
Begin
Внимание! Если программа не работает, обновите версию!
procedure Preobraz(var Stroka:string);
begin
var bq:=new Queue<(integer,integer)>;
foreach var m in Stroka.Matches('\s+') do
bq.Enqueue((m.Index,m.Length));
var wq:=new Queue<(integer,string)>;
foreach var m in Stroka.Matches('\S+') do
if m.Value.Any(t->t in ['0'..'9']) then wq.Enqueue((m.Index,''))
else wq.Enqueue((m.Index,m.Value));
Stroka:='';
var pbi,pwi:integer;
while (bq.Count>0) and (wq.Count>0) do begin
(pbi,pwi):=(bq.Peek[0],wq.Peek[0]);
if pbi<pwi then begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end
else begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
while bq.Count>0 do begin
Stroka:=Stroka+bq.Peek[1]*' ';
bq.Dequeue
end;
while wq.Count>0 do begin
Stroka:=Stroka+wq.Peek[1];
wq.Dequeue
end
end;
begin
var s:=ReadlnString;
Preobraz(s);
s:='<'+s+'>'; // чтобы было видно, как работает
s.Println
end.
Главная проблема - то, что между словами может быть несколько пробелов.
Устраним её, написав функцию, которая оставляла бы между словами по 1 пробелу:
function RemoveSpaces(str : string) : string;
begin
//Тут цикл for, переписанный через while
var iter := 1;
//Проходим по строке
while (iter < str.Length) do
begin
//Если видим 2 пробела подряд, удаляем 1 и откатывает итератор.
if (str[iter] = ' ') and (str[iter + 1] = ' ') then
begin
str := str.Remove(iter, 1);
iter -= 1;
end;
iter += 1;
end;
RemoveSpaces := str;
end;
Теперь мы можем получить кол-во слов очень просто:
function CalcWords(str : string) : integer;
begin
CalcWords := RemoveSpaces(str).Split(' ').Count();
end;
Т.е. мы делим строку на массив через пробелы, и считаем кол-во элементов массива.
полный код: https://pastebin.com/A63ggdWm