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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2017, 12:16   #1
Alexey1002
 
Регистрация: 14.11.2017
Сообщений: 9
По умолчанию Дана строка символов, содержащая слова

Здравствуйте. Помогите пожалуйста с кодом. Считает слова, которые ввожу в строку, но не получается сделать так, чтобы после задания мной длины слов считал слова именно нужной длины.
Задание: Дана строка символов, содержащая слова. Используя функцию, определить количество слова, имеющих заданную длину n.
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

  var
    str: string;
    i, count, n: byte;
    flag: boolean;
begin
Writeln('Vvedite slova v stroku cherez probel (V konce ENTER):');
    readln(str);
    Writeln('Zadaem dlinu slov, kol-vo kotorih nado nayti:');
    readln(n);
    count:=0;
    flag := false;
    for i:=1 to length(str) do begin
        if (str[i] <> ' ') and (flag = false) and (length(str[i])=n) then begin
                   count := count + 1;
            flag := true;
        end
        else
            if str[i] = ' ' then
                flag := false;
    end;
    Writeln('Kol-vo slov v stroke:   ',count);
    Writeln('END');
    Readln;
end.
Alexey1002 вне форума Ответить с цитированием
Старый 20.11.2017, 13:22   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

попробуйте так:

Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

  var
    MyStr, oneWord: string;
    i, count, n: byte;
begin
    Writeln('Vvedite slova v stroku cherez probel (V konce ENTER):');
    readln(MyStr);
    Writeln('Zadaem dlinu slov, kol-vo kotorih nado nayti:');
    readln(n);

    count:=0;
    MyStr := MyStr + ' ';
    oneWord := '';    
    for i:=1 to length(MyStr) do begin
        if (MyStr[i] <> ' ') then oneWord := oneWord + MyStr[i]
        else begin
           if Length(oneWord)=n then Inc(count);
           oneWord := '';
        end;
    end;
    Writeln('Kol-vo slov v stroke s dlinoi ',n,' = ',count);
    Readln;
end.

Цитата:
Сообщение от Alexey1002 Посмотреть сообщение
Используя функцию, определить количество слова, имеющих заданную длину n.
а если с функцией, то так:

Код:
program Project1;

{$APPTYPE CONSOLE}

uses  SysUtils;

  function CountWordByThisLength(const s : string; const n : integer) : integer;
  var ss, oneWord: string;
    i, count: integer;
  begin
    count:=0;
    ss := s + ' ';
    oneWord := '';    
    for i:=1 to length(ss) do begin
        if (ss[i] <> ' ') then oneWord := oneWord + ss[i]
        else begin
           if Length(oneWord)=n then Inc(count);
           oneWord := '';
        end;
    end;
    CountWordByThisLength := count
  end;

  var
    MyStr: string;
    n : integer;
begin
    Writeln('Vwwvedite slova v stroku cherez probel (V konce ENTER):');
    readln(MyStr);
    Writeln('Zadaem dlinu slov, kol-vo kotorih nado nayti:');
    readln(n);

    Writeln('Kol-vo slov v stroke s dlinoi ',n,' = ', CountWordByThisLength(MyStr, n));
    Readln;
end.

Последний раз редактировалось Serge_Bliznykov; 20.11.2017 в 13:30.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 20.11.2017, 17:43   #3
Alexey1002
 
Регистрация: 14.11.2017
Сообщений: 9
По умолчанию

Огромное Вам спасибо, работает! А то я уже и так, и так перепробовал
Alexey1002 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана строка, содержащая некоторый текст (включая пробелы и знаки препинания). Под словом понимается набор символов, не содержащий пробелов и ограниченный пробелами или началом/конц Владимир20178 Помощь студентам 4 29.06.2017 14:29
Дана строка, содержащая текст. Найти длину самого короткого слова и самого длинного слова. KorsD Microsoft Office Excel 3 16.05.2015 04:22
Дана строка символов. Найти слова, которые имеют четную длину и начинаются с заданного символа. На паскале! marinadanilova Помощь студентам 8 29.10.2014 18:43
Дана строка символов - найти слова с одинаковыми буквами Almos Паскаль, Turbo Pascal, PascalABC.NET 1 22.06.2012 02:20
Дана строка символов, содержащая слова. Определить количество слов, последний и предпоследний символы кот RamZax Паскаль, Turbo Pascal, PascalABC.NET 2 17.06.2010 14:06