Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 13:26   #1
surf135
Пользователь
 
Аватар для surf135
 
Регистрация: 29.05.2010
Сообщений: 33
По умолчанию Дорешать строку

Напишите программу SPLITE(name:string var first,Last:string),
которая из параметра name,хранящего имя и фамилию
извлекает их в переменные first(имя)и last(фимилия).
Имя и фамилия разделены некоторыми числом пробелов.
Необходимо также преусмотреть обнаружение и обработку
некорректных данных.

Uses Wincrt;
var
i,j,n:byte;
last,name,first:string;
procedure splite(name:string; var first,last:string);
begin
for i:=1 to length(name) do
if name[i]<>' ' then begin first:=first+name[i];
surf135 вне форума Ответить с цитированием
Старый 02.06.2010, 13:38   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Код:
if name[i]<>' ' then
begin 
    if k=0 then 
    begin  
      first:=first+name[i];
      k:=k+1;
    end;
    if k=1 then
    begin  
      Last:=Last+name[i];
      k:=k+1;
    end;
    if k>1 then
    begin  
      error();
    end;
end;
Levsha100 вне форума Ответить с цитированием
Старый 02.06.2010, 14:11   #3
Ol'ga_new
Форумчанин
 
Регистрация: 12.05.2010
Сообщений: 125
По умолчанию

Попробуй такой вариант:
только совет: в процедуре завести переменную типа boolean;
по её значению проверять где заканчивается имя и начинается фамилия

Код:
var t:boolean;
...
{}
t:=false;{что означает не фамилия}
for i:=1 to length(name) do
  if name[i]<>' ' then 
    begin
     if t<>true then
        first:=first+ name[i] else
         last:=last+name[i];
    end 
    else t:=true;
end;{процедура готова!}
Работает при условии, что в начале строки нет пробелов.
Ol'ga_new вне форума Ответить с цитированием
Старый 02.06.2010, 16:23   #4
DoDge_VipeR
Форумчанин
 
Аватар для DoDge_VipeR
 
Регистрация: 30.04.2010
Сообщений: 317
По умолчанию

Код:
procedure splite(name:string var first,Last:string)
var s:string;
begin
s:=name;
if s='' then exit;
while pos('  ',s)<>0 do delete(s,pos('  ',s),1);// удалим лишние пробелы в строке
s:=trim(s);// удалим лишние пробелы в начале и конце
if s='' then exit;
first:=copy(s,1,pos(' ',s)-1);
last:=copy (s,pos(' ',s)+1,length(s)-pos(' ',s)+1);
end.
icq:627719[сто сорок четыре] - помогу с Pascal & Delphi!
DoDge_VipeR вне форума Ответить с цитированием
Старый 02.06.2010, 18:35   #5
surf135
Пользователь
 
Аватар для surf135
 
Регистрация: 29.05.2010
Сообщений: 33
По умолчанию

Спасибо!Большое!За Помощь!
surf135 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как дорешать chehroma Помощь студентам 0 05.05.2010 22:38
Строки в Паскале, дорешать. bingooo Помощь студентам 0 08.04.2010 22:08
помогите дорешать задачу pavelstraut Общие вопросы C/C++ 4 23.07.2009 16:53
Помогите дорешать программу darika Паскаль, Turbo Pascal, PascalABC.NET 4 14.05.2009 15:08
Помогите дорешать задачу на While Andrux Помощь студентам 12 29.12.2008 21:24