Помощь - Поиск - Пользователи - Календарь
Полная версия: Вывести имя и количество букв в фамилии!
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
MAD-GTX
Помогите пожалуйста решить задачу! Завтра показывать!

Ввести ФИО как одно данное строкового типа.
Вывести имя и количество букв в фамилии!
мисс_граффити
В каком порядке расположены? Что может быть разделителем?
"Ева Мария Тереза Петровна Иванова" - это корректные входные данные? (имя - Ева Мария Тереза)
MAD-GTX
Порядок расположения: Владимир Владимирович Путин (в качестве примера) Фамалия->Имя->Отчество
Разделитеь: обычный пробел
мисс_граффити
1. Копируешь часть строки до первого пробела - это имя.
writeln(copy(fio,1,pos(' ',fio)-1));

2. можно удалить из исходной строки имя вместе с пробелом, а потом посчитать с помощью length количество символов от пробела до конца.
можно идти от конца строки и считать символы по одному, пока не встретится пробел.
MAD-GTX
Respect, но выводится фамилия,не подскажешь как вывести ИМЕННО ИМЯ,а то парюсь никак не выходит! Ответьте,PLZ!
мисс_граффити
ты посмотри, что написал:
Цитата
Порядок расположения: Владимир Владимирович Путин (в качестве примера)

Вот если введешь так - будет тебе имя.
MAD-GTX
Ой,приношу свои глубочайшие извинения за свою невнимательность!!!!!
Я хотел написать Путин Владимир Владимирович.
Что делать в таком случае?
мисс_граффити
Можно тогда, например, так: удаляем фамилию вместе с пробелом (предварительно сообщив ее длину), а потом с именем - так, как я предложила.
разумеется, если можно нарушать исходную строку.
volvo
Ну, в принципе, можно также одной строкой сделать:
  writeln(
copy( copy(fio, pos(' ', fio) + 1, length(fio)),
1,
pos(' ', copy(fio, pos(' ', fio) + 1, length(fio)))
)
);
MAD-GTX
Убийственно! Круто! Работает! Огромный респект вам за помощь! Препод завтра офигеет smile.gif
Ну а как быть с фамилией? Вывести количество букв в фамилии! (Вы уж извините,очень плохо разбираюсь в языках программирования). sad.gif
мисс_граффити
определить положение первого пробела можешь?
MAD-GTX
В общем никак не могу въехать,хоть убейте!

Добавлено через 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.

.
мисс_граффити
ты мое сообщение проигнорировал?
на вопрос не отвечаешь?
MAD-GTX
Ну первый пробел идет после Фамилии.
мисс_граффити
значит, перед первым пробелом ровно столько символов, сколько в фамилии, правда?
вот и определяй его положение с помощью pos
MAD-GTX
А!!!! Понял,вроде! Написал вот так:

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

.
По ходу дела работает,щас буду писать комментарии в программе!
Юлия и Владимир, вам ООООООООООчень большой респект!!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.