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

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

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

> Обработка Строк, Помогите решить
-Alex-
сообщение 6.11.2006 22:48
Сообщение #1


Гость






Задача такова.... Дана строка символов, представляющая предложение и строки, представляющие имя и отчество. Поместить в строку - предложение после имени отчество. Имя может быть указано несколько раз. Порядок ввода исходных данных:последовательность строк, представляющих - предложение; - имя; -отчество.
Порядок вывода результатов: - преобразованное предложение!

В двух словах - это так:
к примеру, вводиться строка: Иван работает,
потом вводится его отчество: Васильевич,

И прога должна вставить его отчество после имени: Иван Васильевич работает!!!
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
arhimag
сообщение 7.11.2006 16:44
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 424
Пол: Мужской

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


program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

const

delitel = [#0..#32, '.', ',', ':', ';', '!', '?', '"'];
type
TWords = array[1..100] of string;
type
tdel = array[1..100] of string;
var
S : string;
W : twords;
D : tdel;

function words_from_string (s : string; var w : twords; var d : tdel) : integer;
var
i,j,k,count : integer;
begin
i := 1;
count := 0;
while ( i <= length(s) ) do begin
k:=i;
while( i <= length(s) ) and ( s[i] in delitel ) do
inc(i);
d[count+1] := copy (s , k, i-k );
if i <= length( s ) then begin
j := i;
while(i <= length( s )) and not( s[i] in delitel) do
inc(i);
inc(count);
w[count] := copy(s, j, i-j);
end;
end;

result := count;
end;
var count : integer;
var
name : array [ 1..100 ] of boolean;

procedure get_name (w : twords);
var i : integer;
flag : boolean;
begin
name[1]:=false;
for i:= 2 to count do
if (w[i,1] in ['A'..'Z']) or (w[i,1] in ['А'..'Я']) then begin
name[i]:=true;
if w[1]=w[i] then name[1] := true;
end else name[i]:=false;
flag:= false;
for i:=2 to count do
if name[i] then flag:=true;
if not flag then name[1]:=true;

end;

function make_s(w : twords; d : tdel; otch : string):string;
var s : string;
i : integer;
begin
s:='';
for i:= 1 to count do begin
s:= s + d[i];
s:= s + w[i];
if name[i] then s:= s +' '+ otch;
end;
result:=s;
end;




var b : string;
begin
s:='Vasa bili tut.';
b:='Ivanovich';
count := words_from_string(s,w,d);
get_name(w);
write(make_s(w,d,b));
readln;
s:='Ja i Vasa bili tut.';
b:='Ivanovich';
count := words_from_string(s,w,d);
get_name(w);
write(make_s(w,d,b));
readln;

{ TODO -oUser -cConsole Main : Insert code here }
end.

Лень искать лажу вот код, сам разбирайся ( работает под Delphi )
чтобы перевестим на паскалевский замени result на название функции

Кстати код не работает в строке "Vasa." но как исправить ты я думаю догадаешься smile.gif

Сообщение отредактировано: volvo - 7.11.2006 23:56


--------------------
Чего хочет женщина – того хочет Бог
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
-Alex-   Обработка Строк   6.11.2006 22:48
arhimag   Можешь полностью привести 2-3 примера входных данн...   6.11.2006 23:08
klem4   Вставить строку B в середину строки A, имеющей вид...   7.11.2006 8:49
Malice   Задача такова.... Дана строка символов, представл...   7.11.2006 10:22
Гость   На самом деле, всё что дано, я написал.... Вот име...   7.11.2006 14:06
Гость   И неизвестно на какой позиции стоит имя.....((( мо...   7.11.2006 14:09
Malice   Судя по условию нужно ввести _3_ строки: предложен...   7.11.2006 14:48
volvo   Тогда тебе придется создавать словарь допустимых и...   7.11.2006 14:47
arhimag   А... понял :) Задача проста как мир. Смотри проб...   7.11.2006 14:49
Гость   А... понял :) Задача проста как мир. Смотри про...   7.11.2006 14:53
arhimag   а ты сам пробывал написать? то что я тебе сказал? ...   7.11.2006 15:58
Гость   program pataya_laboratornaya; var s,name,name1:str...   7.11.2006 16:18
arhimag   program Project1; {$APPTYPE CONSOLE} uses ...   7.11.2006 16:44
Гость   Он выдает переполнение стека!!!! ...   7.11.2006 17:11
Malice   Думаю тебе нужна функция типа такой: function f(s...   7.11.2006 18:05
arhimag   уменьшь размеры типов type TWords = array[1.....   7.11.2006 18:05
Гость   Спасибо за советы..... Помогли))   7.11.2006 21:33
Гость   блин, требуется, чтобы выводил строки друг под дру...   13.11.2006 19:19


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

 



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