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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2018, 20:00   #1
Vlad214587
 
Регистрация: 24.05.2017
Сообщений: 4
По умолчанию вывод слов

Нужно чтобы под s2 выводились только те слова, которые начинаются с буквы которую я выбрал, а у меня выводятся только четные как и в s1. Не совсем понимаю, что делаю не так.
Код:
program st1;
uses crt;
var
s,s1,s2:string[80];
i,k,kol:integer;
r:char;
begin
     clrscr;
     writeln('vvedite stroky:');
     readln(s);
     writeln('bukvy:');
     readln(r);
     kol:=0;
     k:=1;
     for i:=1 to length(s) do
         begin
              if((k mod 2=0) and (s[i]<>','))then
                    begin
                         s1:=s1+s[i];
                    end;
              if(s[i]=',')then
                    begin
                         k:=k+1;
                         s1:=s1+' ';
                    end;
 
         end;
         begin
               for i:=1 to length(s1) do
               if (s1[i]=r) and ((i=1) or(s1[i-1]=' ')) then
               begin
                    kol:=kol+1;
                    s2:=copy(s1,1,80);
               end;
         end;
      if kol=0 then writeln ('slov net')
         else
             begin
                  Writeln(s);
                  Writeln(s1);
                  Writeln(s2);
                  writeln(kol);
             end;
      readln
end.
 
l
Vlad214587 вне форума Ответить с цитированием
Старый 01.12.2018, 23:34   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Vlad214587 Посмотреть сообщение
Нужно чтобы под s2 выводились только те слова, которые начинаются с буквы которую я выбрал, а у меня выводятся только четные как и в s1. Не совсем понимаю, что делаю не так.
Задание своё напишите. Какие слова и куда должны выводиться?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.12.2018, 11:46   #3
Vlad214587
 
Регистрация: 24.05.2017
Сообщений: 4
По умолчанию

На ввод подаётся строка из слов через запятую, программа должна вывести все четные слова по порядку в строке начинающиеся с буквы «...», количество таких слов и строку которую изначально ввели. У меня количество и сама строка выводятся, я не понимаю как вывести именно четные слова с моей буквы у меня сейчас выводятся только все четные слова.
Vlad214587 вне форума Ответить с цитированием
Старый 02.12.2018, 12:15   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

такой вариант подойдёт?

Код:
program st1;
uses crt;
var
s0, s, OneWord:string[80];
i,k,kol:integer;
r:char;
begin
     clrscr;
     writeln('vvedite stroky:');
     // readln(s0);
     s0 := 'magma,marma,murma,purma,parma,mortal,dota,hello,past,last,pompa,pip';
     writeln('bukvy:');
     // readln(r);
     r := 'm';

     s:=s0;
     if (Length(s)>0) and (s[Length(s)]<>',') then s := s + ',';
     kol:=0;
     k:=1;
     OneWord := '';
     WriteLn;
     Write('Чётные слова, начинающие с буквы "',r,'" : ');
     for i:=1 to length(s) do
         begin
              if (s[i]=',')then
                    begin
                      if Not odd(k) and (Length(OneWord)>0) and (OneWord[1]=r) then
                      begin
                         inc(kol);
                         write(OneWord,' ');
                      end;
                      OneWord := '';
                      Inc(k)
                    end
              else
                 OneWord := OneWord + s[i];
         end;
         
      WriteLn;
      if kol=0 
           then writeln ('slov net')
           else writeln('Количество найденных слов: ',kol);
      Writeln('Исходная строка: ',s0);
      readln
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.12.2018, 14:23   #5
Vlad214587
 
Регистрация: 24.05.2017
Сообщений: 4
По умолчанию

Почти, если слов нет должна выходить только надпись что их нет, а в данной программе почему-то выходит и строка и счетчик
Vlad214587 вне форума Ответить с цитированием
Старый 02.12.2018, 16:54   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от Vlad214587 Посмотреть сообщение
На ввод подаётся строка из слов через запятую, программа должна вывести все четные слова по порядку в строке начинающиеся с буквы «...», количество таких слов и строку которую изначально ввели.
где Вы увидели:
Цитата:
Сообщение от Vlad214587 Посмотреть сообщение
и слов нет должна выходить только надпись что их нет
??
я по заданию понимаю, что нужно выводить и строку и счётчик вне зависимости от того, нашлось или нет.

если Вы считаете иначе, то никто не мешает Вам вывод строки поместить по условию kol<>0:
Код:
      if kol=0 
           then writeln ('slov net')
           else begin 
               writeln('Количество найденных слов: ',kol);
               Writeln('Исходная строка: ',s0);
           end;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод слов Chainik! Общие вопросы C/C++ 8 02.01.2015 22:39
вывод слов, заключенных в () Raper58 Помощь студентам 1 23.12.2012 17:27
вывод слов, заключенных в () Raper58 Помощь студентам 1 19.12.2012 18:13
вывод слов, заключенных в () Raper58 Помощь студентам 0 16.12.2012 13:26
Вывод слов jakson_sun Общие вопросы C/C++ 1 22.01.2009 17:12