вот такая задачка:
вводится строка: фамилия, имя, отчество; получить строку, содержащую фамилию полностью и начальные буквы инициалов.(из стандартного можно использовать length, ord, char)
вот что, получилось
program hgkf;
uses crt;
function slovo(const s:string; var i:byte):string;
var w:string;
begin
w:='';
while (s[i]<>' ') do
begin
w:=w+s[i];
i:=i+1;
end;
slovo:=w;
end;
function slovo1(const s1:string; var i:byte):string;
var w1:string; begin
w1:='';
while (s1[i]<>' ') and (i<=length(s1)) do
begin
w1:=w1+s1[i];
i:=i+1;
end;
slovo1:=w1;
end;
VAR
s,s1,s2,w,w1:string;
i:byte;
BEgIN
clrscr;
writeln ('vvedite stroky');
readln (s);
w:=slovo(s,i); s1:='';
s1:=s1+(s-w); { здесь я хочу получить строчку, содерж. только имя и отчество, но компилятор не пропускает}
w1:=slovo1(s1,i);
while i<-length(s1) do
begin
w1[0]:=w1[1];
w1:=w1+1;
end;
s2:=w+' '+char(ord(w[0]));
writeln(s2);
readln;
readln;
end.
Так пойдет ?)
const
n = 3;
P: array [1..n] of String = (
'Иванов Иван Петрович',
'Петров Сергей Сергеевич',
'Сидоров Николай Валентинович'
);
var
i: Integer;
begin
for i := 1 to n do
writeln( Copy(P[i], 1, Pos(' ', P[i])), ' ',
Copy(P[i], Pos(' ', P[i]) + 1, 1), '.', Copy(P[i] ,
Pos(' ', P[i]) + 1 + Pos(' ', Copy(P[i], Pos(' ', P[i]) + 1,255)), 1));
end.
uses crt;
function slovo(const s: string; var i: byte): string;
var w: string;
begin
w := ''; i := 1;
while s[i] <> ' ' do begin
w := w + s[i];
i := i + 1;
end;
slovo := w;
end;
function letter(const s: string; var i: byte): string;
begin
while s[i] <> ' ' do
i := i + 1;
while s[i] = ' ' do
i := i + 1;
letter := s[i];
end;
var
s, w: string;
i: byte;
begin
clrscr;
writeln('vvedite stroky');
readln(s);
w := slovo(s,i) + ' ';
w := w + letter(s, i) + '.';
w := w + letter(s, i) + '.';
writeln(w);
readln;
end.
function letter(const s: string; var i: byte): string;
begin
while s[i] <> ' ' do
i := i + 1;
while s[i] = ' ' do
i := i + 1;
letter := s[i];
end;
Смысл? Она вытаскивает из строки первый символ после пробела, начиная с той позиции, которая передана в переменной i... При этом, по окончании работы этой функции i содержит позицию возвращенного символа... Таким образом, если мы вызываем эту функцию 2 раза подряд, то она вернет первые буквы двух подряд идущих слов... Что тебе и нужно