Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вывести имя и количество букв в фамилии!

Автор: MAD-GTX 18.02.2007 18:27

Помогите пожалуйста решить задачу! Завтра показывать!

Ввести ФИО как одно данное строкового типа.
Вывести имя и количество букв в фамилии!

Автор: мисс_граффити 18.02.2007 18:58

В каком порядке расположены? Что может быть разделителем?
"Ева Мария Тереза Петровна Иванова" - это корректные входные данные? (имя - Ева Мария Тереза)

Автор: MAD-GTX 18.02.2007 19:22

Порядок расположения: Владимир Владимирович Путин (в качестве примера) Фамалия->Имя->Отчество
Разделитеь: обычный пробел

Автор: мисс_граффити 18.02.2007 19:36

1. Копируешь часть строки до первого пробела - это имя.

writeln(copy(fio,1,pos(' ',fio)-1));

2. можно удалить из исходной строки имя вместе с пробелом, а потом посчитать с помощью length количество символов от пробела до конца.
можно идти от конца строки и считать символы по одному, пока не встретится пробел.

Автор: MAD-GTX 18.02.2007 20:06

Respect, но выводится фамилия,не подскажешь как вывести ИМЕННО ИМЯ,а то парюсь никак не выходит! Ответьте,PLZ!

Автор: мисс_граффити 18.02.2007 20:10

ты посмотри, что написал:

Цитата
Порядок расположения: Владимир Владимирович Путин (в качестве примера)

Вот если введешь так - будет тебе имя.

Автор: MAD-GTX 18.02.2007 20:15

Ой,приношу свои глубочайшие извинения за свою невнимательность!!!!!
Я хотел написать Путин Владимир Владимирович.
Что делать в таком случае?

Автор: мисс_граффити 18.02.2007 20:36

Можно тогда, например, так: удаляем фамилию вместе с пробелом (предварительно сообщив ее длину), а потом с именем - так, как я предложила.
разумеется, если можно нарушать исходную строку.

Автор: volvo 18.02.2007 20:37

Ну, в принципе, можно также одной строкой сделать:

  writeln(
copy( copy(fio, pos(' ', fio) + 1, length(fio)),
1,
pos(' ', copy(fio, pos(' ', fio) + 1, length(fio)))
)
);

Автор: MAD-GTX 18.02.2007 21:02

Убийственно! Круто! Работает! Огромный респект вам за помощь! Препод завтра офигеет smile.gif
Ну а как быть с фамилией? Вывести количество букв в фамилии! (Вы уж извините,очень плохо разбираюсь в языках программирования). sad.gif

Автор: мисс_граффити 18.02.2007 21:06

определить положение первого пробела можешь?

Автор: MAD-GTX 18.02.2007 21:17

В общем никак не могу въехать,хоть убейте!

Добавлено через 11 мин.
Я сделал так,т.е. ввел новую переменную,скопировал фамилию,определил её длину но не думаю что это целесообразно и рационально! Нельзя ли по другому?


Program name;
uses crt;
Var s:string;
i:byte;
d:string;
x:byte;
Begin
textbackground(4);
clrscr;
textbackground(4);
textcolor(15);
writeln('vvedite fio');Readln(s);
d:=(copy(s,1,pos(' ',s)-1));
x:=length(d);
writeln (x);
end.

.

Автор: мисс_граффити 18.02.2007 21:31

ты мое сообщение проигнорировал?
на вопрос не отвечаешь?

Автор: MAD-GTX 18.02.2007 21:43

Ну первый пробел идет после Фамилии.

Автор: мисс_граффити 18.02.2007 21:56

значит, перед первым пробелом ровно столько символов, сколько в фамилии, правда?
вот и определяй его положение с помощью pos

Автор: MAD-GTX 18.02.2007 22:18

А!!!! Понял,вроде! Написал вот так:


i:=((pos(' ',s))-1);

.
По ходу дела работает,щас буду писать комментарии в программе!
Юлия и Владимир, вам ООООООООООчень большой респект!!!