Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите решить задачу на строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
wary
Дана строка символов до точки. Группы символов в ней можду одним пробелом считаются словами. Удалить из нее каждое слово четной длины.
мисс_граффити
можно кидаться удалять? dry.gif
ты сам хоть что-нибудь пробовал?
хотя бы поиск запустить и FAQ почитать...
wary
Цитата(мисс_граффити @ 9.12.2006 22:49) *

можно кидаться удалять? dry.gif
ты сам хоть что-нибудь пробовал?
хотя бы поиск запустить и FAQ почитать...

да пробовал, пока только сумел осуществить ввод до точки
Код

Program Zadacha5;
uses CRT;
type
massiv=array [1..255] of char;
var s:string;
    i:integer;
    a:massiv;
Begin
writeln('Введите строку символов до точки->');
repeat
readln(a[i]);
until a[i]=char(46);

Далее нужно присвоить строке данный массив, и самое сложное както процедить ее относительно условия...
Bokul
А для чего ты заводишь дополнительный массив? В паскале строчка и есть массив символов, и до каждого элемента ты можешь обратится по индексу.

uses CRT;
var s:string;
i:integer;
ch:char;
begin
s:='';
writeln('Введите строку символов до точки->');
repeat
readln(ch);
s:=s+ch;
until ch='.';
end.

sofware
Вот мой код:
var a,b:string;
i,j,n,l,k:integer;
s:array[1..100]of string;
begin
read(a);j:=0;
b:='';
l:=length(a);
while a<>'' do
begin
inc(j);
n:=pos(' ',a);
if n<>0 then for i:=1 to n-1 do
s[j]:=s[j]+a[i];
delete(a,1,n);
if n=0 then begin s[j]:=a;delete(a,1,length(a));end;
end;
delete(s[j],length(s[j]),1);
for i:=1 to j do
if length(s[i])mod 2=1 then b:=b+s[i]+' ';
if b[length(b)]=' ' then delete(b,length(b),1);
if b[length(b)]<>'.' then b:=b+'.';
write(b);
end.

respect.gif
wary
Цитата(Bokul @ 9.12.2006 23:36) *

А для чего ты заводишь дополнительный массив? В паскале строчка и есть массив символов, и до каждого элемента ты можешь обратится по индексу.

просто нужно чтобы когда я непосредственно вводил символы, только после ввода точки переходил на следующий этап программы

Цитата(sofware @ 10.12.2006 0:01) *

Вот мой код:

спасибо за код, но с ним программа делает несовсем то что нужно, например:
d-нечетные слова
s-четные слова
Вводим:
ddddd ssss ddddddddddd ss ddd ssssss
Получаем:
ddddd ddddddddddd ddd ssssss

А должны получить: ddddd ddddddddddd ddd dry.gif
Bokul
Цитата
просто нужно чтобы когда я непосредственно вводил символы, только после ввода точки переходил на следующий этап программы

А ты мой код запускал? Он делает все, что тебе нужно + не надо заводить массив.
Цитата
спасибо за код, но с ним программа делает несовсем то что нужно, например

Он выложил почти один и тот же код сразу в нескольких темах. Так что не надейся на его (кода) работоспособность.
wary
Цитата
А ты мой код запускал?

Да. Действительно, это гораздо лучше чем то что я накарулесил. Сенкью. good.gif
Bokul
Цитата
Действительно, это гораздо лучше чем то что я накарулесил. Сенкью.

Как дальше продвигается разработка проги, это пока первая часть? Затруднения есть?
sofware
А ТЫ не пробовал в конце точку поставить, как сказано в условии, а потом говорить, что моя задача не правильно работает cool.gif

Bokul читай условия задач!!! smile.gif
wary
Цитата(Гость @ 10.12.2006 15:52) *

А ТЫ не пробовал в конце точку поставить

Действительно все работает huh.gif, прошу народ извенить меня за мою невнимательность unsure.gif . Вопрос снят- задача решена. sofware сенкью.

Народ у меня вопрос есть по коду:

Код
s:array[1..100]of string;
- тоесть это что получается что массив может быть из строк, и при выполнении например
Код
s[1]
, получается мы обращаеся к 1-й строке массива
Bokul
yes2.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.