// PascalABC.NET 3.2, сборка 1407 от 18.03.2017 // Внимание! Если программа не работает, обновите версию!
begin var a:=ReadlnString('Вводите:').ToWords; var c:=a[0].Last; Writeln('Найдено ',a.Where(w->w.First=c).Count, ' слов, начинающихся с "',c,'"') end.
Пример Вводите: Туча дождь астроном баран арбуз зебра астра велосипед Найдено 3 слов, начинающихся с "а"
Вариант "а нас в школе учат так", который якобы "проще"
var s:string; c:char; i,k,l,p:integer; begin // Предполагается, что слова разделены ровно одним пробелом Write('Вводите: '); Readln(s); l:=Length(s); if l=1 then Writeln('Найдено одно слово') else begin p:=Pos(' ',s); if (p=0) and (s[1]=s[l]) then Writeln('Найдено одно слово') else begin c:=s[p-1]; if s[1]=c then k:=1 else k:=0; for i:=p+1 to Length(s)-1 do if (s[i]=' ') and (s[i+1]=c) then Inc(k); Writeln('Найдено ',k,' слов, начинающихся с "',c,'"') end end end.
Потому что соединение не идеально, оно прерывается, некоторые данные по пути теряются. Допустим, я хочу передать файл по интернету. Если файл небольшой, то велика вероятность, что он не пострадает. В противном случае можно потратить много времени на передачу части файла, после чего данные передадутся с ошибкой, которую мы обнаружим только после передачи всего файла. Передавая информацию пакетами же можно этого избежать, так как любая потеря данных будет сразу видна по плохому пакету. После этого можно эту ошибку сразу и обработать и, допустим запросить повтор предыдущего пакета или попытаться починить пакет, прибывший с ошибкой.
// Внимание! Если программа не работает, обновите версию!
begin
var a:=ReadlnString('Вводите:').ToWords;
var c:=a[0].Last;
Writeln('Найдено ',a.Where(w->w.First=c).Count,
' слов, начинающихся с "',c,'"')
end.
Пример
Вводите: Туча дождь астроном баран арбуз зебра астра велосипед
Найдено 3 слов, начинающихся с "а"
Вариант "а нас в школе учат так", который якобы "проще"
var
s:string;
c:char;
i,k,l,p:integer;
begin
// Предполагается, что слова разделены ровно одним пробелом
Write('Вводите: '); Readln(s);
l:=Length(s);
if l=1 then Writeln('Найдено одно слово')
else begin
p:=Pos(' ',s);
if (p=0) and (s[1]=s[l]) then Writeln('Найдено одно слово')
else begin
c:=s[p-1];
if s[1]=c then k:=1 else k:=0;
for i:=p+1 to Length(s)-1 do
if (s[i]=' ') and (s[i+1]=c) then Inc(k);
Writeln('Найдено ',k,' слов, начинающихся с "',c,'"')
end
end
end.