IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> преобразования строк
18192123
сообщение 26.11.2006 16:58
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


вот такая задачка:
вводится строка: фамилия, имя, отчество; получить строку, содержащую фамилию полностью и начальные буквы инициалов.(из стандартного можно использовать 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.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 26.11.2006 17:34
Сообщение #2


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


!smoke2.gif

Так пойдет ?)

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.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.11.2006 18:00
Сообщение #3


Гость






Цитата
из стандартного можно использовать length, ord, char
blink.gif

Я бы вот так делал:
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.
 К началу страницы 
+ Ответить 
18192123
сообщение 26.11.2006 18:46
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 26.11.2006 18:00) *

blink.gif


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;





объясни, пожалуйста, в чем смысл ф-ции letter и что она делает
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 26.11.2006 18:54
Сообщение #5


Гость






Смысл? Она вытаскивает из строки первый символ после пробела, начиная с той позиции, которая передана в переменной i... При этом, по окончании работы этой функции i содержит позицию возвращенного символа... Таким образом, если мы вызываем эту функцию 2 раза подряд, то она вернет первые буквы двух подряд идущих слов... Что тебе и нужно smile.gif
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 21.06.2025 7:24
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"