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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2010, 20:19   #1
Legky
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 19
По умолчанию Строка (String)

Дано строку символов, который состоит из отдельных слов, разделенных интервалом. Вывести на печать все слова строки, содержащие четное число букв.

Сам код про-ги:


Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;
  const n=' ';
  var s:string;
  p,i,k,ns,ds:string;


begin
writeln('Input string');
readln(s);
writeln('slova s chetnim kol-vom bykv');
k:=length(s);
ns:=i;
i:=1;
while i<>k do
while S[i]<>n do
i:=i+1;
ds:=i-ns;
p:=length(ds);
if p mod 2=0 then
writeln(copy(s,ns,ds));
i:=i+1;
readln;readln;
  { TODO -oUser -cConsole Main : Insert code here }
end.
где р-переменная для обозначения длины слова, k-переменная для обозначения длины строчки, ns - начало слова, ds-длина слова,i-индекс, n - интервал(в данном случае пробел).
программу обязательно надо сделать через while, через for нельзя(требование учительницы).
Проблема, скорее всего, в этом отрывке:

Код:
k:=length(s);
ns:=i;
i:=1;
while i<>k do
while S[i]<>n do
i:=i+1;
ds:=i-ns;
p:=length(ds);
Возможно, что не понадобится константа n.

Очень надо ваша помощь.
Legky вне форума Ответить с цитированием
Старый 19.12.2010, 21:33   #2
iBuTTHead
Пользователь
 
Регистрация: 05.11.2010
Сообщений: 35
По умолчанию

Так... Ну я предлогаю такой вариант.

Код:
while k<length[stroka] do
               begin
                 slovo:='';
                 while (stroka[k]<>' ')and(k<length(stroka)) do
                         begin
                            slovo:=slovo+stroka[k];
                            k:=k+1;     
                         end;
                 if length(slovo) mod 2 = 0 then
                            Writteln(slovo);
                 k:=k+1
                end;
На мой взгляд вы используете слишком много лишних переменных.
iBuTTHead вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка (String) Legky Помощь студентам 2 19.12.2010 20:23
Строка в БД NeVerSS БД в Delphi 3 12.09.2010 21:05
String большого размера, более 255 String[255] bitSoft Общие вопросы Delphi 9 28.03.2010 19:45
Как получить адрес String строки или преобразовать String madboy4ik Общие вопросы по Java, Java SE, Kotlin 6 15.01.2010 11:57
Строка состаяния или загрузачная строка Sergeu Мультимедиа в Delphi 8 27.08.2008 10:32