![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Новичок
Джуниор
Регистрация: 13.01.2011
Сообщений: 1
|
![]()
Здравствуйте!
Знаю, что строки - избитая тема, но помогите, пожалуйста отредактировать код, т.к. мой Паскаль еще на начальном уровне. Условие задачи: дана строка S, латиницей, слова разделены пробелами. Преобразовать в S1 и S2 в соответствии со след условиями: S1: напечатать слова, отличные от последнего слова, если в слове встречаются подряд 2 гласные. S2: напечатать все слова, отличные от последнего слова. Если слово четной длины, то дополнить его еще одной буквой так, чтобы слева и справа от этой буквы находилось одинаковое количество букв. Вот что у меня получилось: program ind; Uses Crt; var p,S1,S2,s,e,c,t:string;i,k,r:intege r; b:boolean; glas:set of char; begin glas:=['a','e','i','o','u','y']; c:='c'; writeln('Vvedite stroku latinicej'); readln(s); i:=length(s); {Ищем последнее слово} while (i>0)and(s[i]<>' ') do begin e:=s[i]+e;dec(i);end; p:='';dec(i);b:=false; {Ищем остальные слова} while (i>0) do begin if s[i]<>' ' then begin {Выбираем и запоминаем слова с 2мя гласными} if (p<>'')and ((s[i] in glas) and (s[i+1] in glas)) then begin b:=true; end; p:=s[i]+p end else begin {Записываем выбранные слова в строку S1} if (b)and(p<>e) then begin S1:=p+' '+S1; end; p:=''; b:=false; end; dec(i); end; {Перебираем все символы} for i:=1 to length(s) do if (s[i]=' ')and(s[i+1]<>' ')then inc(k)else if s[i]<>' ' then t:=t+s[i]; {Ищем слова с четной длиной и запоминаем нужное слово} while (i>0) do begin if s[i]<>' ' then begin if (p<>'')and (length(p) mod 2=0) then begin b:=true; end; p:=s[i]+p ; {Вставляем в середину букву с} k:=length(p) div 2; insert (c,p,k) end else begin {Добавляем слово в S2} if (b)and(p<>e) then begin S2:=p+' '+S2; end; p:=''; b:=false; end; dec(i); end; writeln(S1); writeln(S2); end. В случае со строкой S1 все работает, но не учитывается первое слово, даже если в нем подряд 2 гласные и оно отлично от последнего. В случае со строкой S2 выводятся только слова с четной длиной (знаю, нужно как-то прописать, чтобы прибавлялись еще и остальные, но не знаю, где), и вставляется в середину не одна буква с, а несколько... Заранее спасибо за все советы и подсказки) Последний раз редактировалось Zmen; 13.01.2011 в 16:03. |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Строки в Паскале | bingooo | Помощь студентам | 3 | 06.04.2010 18:18 |
Опять паскаль и снова строки | A.S.W | Помощь студентам | 1 | 07.01.2010 15:18 |
MDIChild снова и снова... | Siber_Dec | Общие вопросы Delphi | 2 | 13.12.2009 03:24 |
Строки с паскале | Dog | Помощь студентам | 2 | 11.10.2009 19:49 |
строки в паскале | Странница | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 03.06.2009 20:49 |