Ввод: Петров Иван Васильевич
Вывод: Петров И. В.
Имеющаяся программа:
Program initial;
var s,p,i:string; n,m,x,y:integer;
begin
p:=' ';
write('ФИО: '); readln(s);
n:=pos(p,s); writeln(n);
delete(s,n,1); writeln(s);
m:=pos(p,s); writeln(m);
delete(s,m+2,length(s)-m); writeln(s);
insert(p,s,length(s)+1); writeln(s);
insert(p,s,n); writeln(s);
delete(s,n+2,length(s)-n-4); writeln(s);
insert(p,s,n+2); writeln(s);
end.
<b>Можно ли упростить программу? </b>
Другие языки программирования и технологии
Pascal-Напишите программу: ввод полные ФИО, вывод полное Ф и инициалы И. О. Можно ли упростить то что получилось у меня?)
Можно существенно упростить (при условии что пробел между словами только 1):
readln(s);
a:=copy(s,1,pos(' ',s));
b:=copy(s,pos(' ',s)+1,length(s));
c:=copy(b,pos(' ',b)+1,length(b));
write(a,' ', b[1]+'. ', c[1]+'.');
readln(s);
a:=copy(s,1,pos(' ',s));
b:=copy(s,pos(' ',s)+1,length(s));
c:=copy(b,pos(' ',b)+1,length(b));
write(a,' ', b[1]+'. ', c[1]+'.');
Вальпуцкий Виталий
Но пробела два.
че тут оптимизировать!!!! думаеш одна миллиардная секунды на что то повлияет. ну так если пробело может быть сколько хош ищи заглавную букву
program initial;
var
s, p: string;
n, i: integer;
w: array[1..10]of string;
begin
write('ФИО: ');
readln(s);
s := s + ' ';
for i := 1 to length(s) do
if s[i] in ['А'..'я'] then
p := p + s[i]
else if length(p) > 0 then begin
n := n + 1;
w[n] := p;
p := '';
writeln(w[n], ' ', n);
end;
if n >= 3 then
writeln(w[1] + ' ' + w[2][1] + '. ' + w[3][1] + '.')
else writeln('Неверный ввод')
end.
var
s, p: string;
n, i: integer;
w: array[1..10]of string;
begin
write('ФИО: ');
readln(s);
s := s + ' ';
for i := 1 to length(s) do
if s[i] in ['А'..'я'] then
p := p + s[i]
else if length(p) > 0 then begin
n := n + 1;
w[n] := p;
p := '';
writeln(w[n], ' ', n);
end;
if n >= 3 then
writeln(w[1] + ' ' + w[2][1] + '. ' + w[3][1] + '.')
else writeln('Неверный ввод')
end.
Сергей Лукиных
написано в среде PascalABC. Это универсальное решение
program Initial;
var
temp, f,i,o : string;
level : integer;
Begin
WriteLn('Введите Ф. И. О. ');
ReadLn(temp);
level:=88;
for index := 1 to length(temp) do // 1 или 0, я не помню)
begin
if(temp[index]!=' ') and (level==88) then level:=0;
if (level==0) and (temp[index]!=' ') then
begin
f:=f+temp[index];
level:=1;
end.
if(temp[index]==' ') and (level==1) then level:=2;
if (level==2) and (temp[index]!=' ') then
begin
i:=f+temp[index];
level:=3;
end.
if(temp[index]==' ') and (level==3) then level:=4;
if (level==4) and (temp[index]!=' ') then
begin
o:=f+temp[index];
level:=5;
end.
if(temp[index]==' ') and (level==5) then level:=99;
end.
WriteLn(f,' ',i[0],'. ',o[0],'. '); // Тут тоже не помню + надо или нет)
var
temp, f,i,o : string;
level : integer;
Begin
WriteLn('Введите Ф. И. О. ');
ReadLn(temp);
level:=88;
for index := 1 to length(temp) do // 1 или 0, я не помню)
begin
if(temp[index]!=' ') and (level==88) then level:=0;
if (level==0) and (temp[index]!=' ') then
begin
f:=f+temp[index];
level:=1;
end.
if(temp[index]==' ') and (level==1) then level:=2;
if (level==2) and (temp[index]!=' ') then
begin
i:=f+temp[index];
level:=3;
end.
if(temp[index]==' ') and (level==3) then level:=4;
if (level==4) and (temp[index]!=' ') then
begin
o:=f+temp[index];
level:=5;
end.
if(temp[index]==' ') and (level==5) then level:=99;
end.
WriteLn(f,' ',i[0],'. ',o[0],'. '); // Тут тоже не помню + надо или нет)
Pro100Y Islom
program Initial;
var
temp, f,i,o : string;
level : integer;
Begin
WriteLn('Введите Ф. И. О. ');
ReadLn(temp);
level:=88;
for index := 1 to length(temp) do // 1 или 0, я не помню)
begin
if(temp[index]!=' ') and (level==88) then level:=0;
if (level==0) and (temp[index]!=' ') then
begin
f:=f+temp[index];
level:=1;
end.
if(temp[index]==' ') and (level==1) then level:=2;
if (level==2) and (temp[index]!=' ') then
begin
i:=f+temp[index];
level:=3;
end.
if(temp[index]==' ') and (level==3) then level:=4;
if (level==4) and (temp[index]!=' ') then
begin
o:=f+temp[index];
level:=5;
end.
if(temp[index]==' ') and (level==5) then level:=99;
end.
WriteLn(f,' ',i[0],'. ',o[0],'. '); // Тут тоже не помню + надо или нет)
var
temp, f,i,o : string;
level : integer;
Begin
WriteLn('Введите Ф. И. О. ');
ReadLn(temp);
level:=88;
for index := 1 to length(temp) do // 1 или 0, я не помню)
begin
if(temp[index]!=' ') and (level==88) then level:=0;
if (level==0) and (temp[index]!=' ') then
begin
f:=f+temp[index];
level:=1;
end.
if(temp[index]==' ') and (level==1) then level:=2;
if (level==2) and (temp[index]!=' ') then
begin
i:=f+temp[index];
level:=3;
end.
if(temp[index]==' ') and (level==3) then level:=4;
if (level==4) and (temp[index]!=' ') then
begin
o:=f+temp[index];
level:=5;
end.
if(temp[index]==' ') and (level==5) then level:=99;
end.
WriteLn(f,' ',i[0],'. ',o[0],'. '); // Тут тоже не помню + надо или нет)
Затрудняюсь написать такой скрипт...
Через record легче -_-
Что за операторы такие... Это на турбо паскале?
Напишу на том, который знаю :)
VAR s:string;
BEGIN
Writeln('Введите ваше имя, фамилию, отчество, разделяя пробелом');
Readln(s);
Writeln('Ваше ФИО',' ',s);
END.
Напишу на том, который знаю :)
VAR s:string;
BEGIN
Writeln('Введите ваше имя, фамилию, отчество, разделяя пробелом');
Readln(s);
Writeln('Ваше ФИО',' ',s);
END.
Радик Хамзин
Весь фокус в том, что программа должна вывести только фамилию и инициалы...
Я пытался скинуть сюда исходник, но майл. ру мне говорит что я не достаточно хорошо сформулировал свой ответ.. пичаль
program as;
uses crt;
var s1,s2,s3:string;
begin
clrscr;
Write('Введите ФИО ч-з пробел: ');
read(s1,s2,s3);
write(s1,' ',copy(s2,0,1),'. ',copy(s3,0,1),'.');
readln;
end.
На работоспособность не проверял, только на синтакс. ошибки. Если условия на рациональность нет, вариант не плохой. И не важно сколько пробелов^,^(вроде)
uses crt;
var s1,s2,s3:string;
begin
clrscr;
Write('Введите ФИО ч-з пробел: ');
read(s1,s2,s3);
write(s1,' ',copy(s2,0,1),'. ',copy(s3,0,1),'.');
readln;
end.
На работоспособность не проверял, только на синтакс. ошибки. Если условия на рациональность нет, вариант не плохой. И не важно сколько пробелов^,^(вроде)
Тут великие люди такие игры как Скайрим не оптимизируют, а ты хочешь пять строк кода оптимизировать?
щгоргщж
Похожие вопросы
- Как на языке программирования си сделать, чтобы при вводе полного бреда программа не поломалась?
- Напишите программу на Pascal. В цистерне N литров молока.
- Люди помогите написать программы для Pascal очень срочно и очень нужно
- НАПИСАТЬ ПРОГРАММУ В ПАСКАЛЬ! Нахождение суммы чисел в матрице, ввод чисел осуществить из файла matrix.txt вывод на экран.
- Помогите ламеру написать программу на Pascal.
- Помогите написать программу в PASCAL!!!
- написать программу на Pascal.
- нужно написать программу в Pascal.
- Помогите написать программу в Pascal abc net
- Помогите написать программы по Pascal ABC