Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 93
1

Множественный тип, готовая программа

16.11.2018, 15:22. Показов 1168. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый день! Имеется программа на делфи.
Она отслеживает согласные буквы в вводимом тексте и печатает их в алфавитном порядке, нужно чтобы программа отслеживала такие буквы только в каждом нечетном слове вводимого текста. Программа была написана для такого условия, но работает некорректным образом. Кто может, прошу, поправьте, пожалуйста.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
program Project4;
 
{$APPTYPE CONSOLE}
 
uses
  SysUtils;
 
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Множество согласных букв.
  Db =
  [
    'B', 'C', 'D', 'F', 'G', 'H',
    'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R',
    'S', 'T', 'V', 'W', 'X', 'Z',
    'b', 'c', 'd', 'f', 'g', 'h',
    'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r',
    's', 't', 'v', 'w', 'x', 'z'];
var
  S : String;
  i, j, Len, Pos1, CntW : Integer;
  DRes, DTmp : set of Char;
  Ch : Char;
begin
  repeat
    Writeln('input string:');
    Readln(S);
 
    Len := Length(S);
    //Результирующее множество.
    DRes := [];
    //Множество согласных букв в очередном нечётном слове.
    DTmp := [];
    //Счётчик слов.
    CntW := 0;
    //Позиция начала слова.
    Pos1 := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Отслеживаем начало слова.
      if (i = 1) or (S[i - 1] in D) then Pos1 := i;
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        Inc(CntW);
        //Если слово чётное - пропускаем итерацию.
        if CntW mod 2 = 0 then Continue;
        //Составляем множество согласных букв очередного нечётного слова.
        for j := Pos1 to i do
          if S[j] in Db then DTmp := DTmp + [ S[j] ]
        ;
        //Инициализируем DRes на первом найденном нечётном слове.
        if CntW = 1 then DRes := DTmp;
        //Множество согласных букв, которые присутствуют в каждом нечётном слове.
        DRes := DRes * DTmp;
        //Если DRes оказалось пустым - выходим из цикла.
        if DRes = [] then Break;
        //Обнуление множества.
        DTmp := [];
      end;
    end;
 
    if DRes = [] then begin
      Writeln('No consonant letters found.');
    end else begin
      Writeln('Set of consonant letters.');
      for Ch := #0 to #255 do begin
        if Ch in DRes then Writeln(Ch);
      end;
    end;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2018, 15:22
Ответы с готовыми решениями:

Множественный тип. Перечислимый тип
Прошу помочь с задачей "В диалоговое окно водится последовательность символов длиной не более 4....

Множественный тип. Перечислимый тип
Прошу помочь с задачей "Вводится последовательность символов длиной не более 4. Если все...

Множественный тип
Дана последовательность слов, разделенных пробелами, в конце точка. Определить, сколько слов этой...

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

5
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2018, 15:34 2
Чтобы только нечетные слова:
- замените в тексте все разделители на пробелы
- объявите переменную типа TStringList
- создайте объект этого типа
- передайте в его gelimitedtext строку, получите массив слов
-берите нечетные слова
for i:=0 to L.count-1 do
if i mod 2=0 then...//индекс четный, номер нечетный
Почитайте про класс TStringList, например здесь
http://www.delphibasics.ru/tstringlist.php
0
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 93
16.11.2018, 15:42  [ТС] 3
TurboDelphi не работает с Tstring же? Как быть тогда. Код должен пахать на TurboDelpi
0
Модератор
9459 / 6212 / 2420
Регистрация: 21.01.2014
Сообщений: 26,489
Записей в блоге: 3
16.11.2018, 16:15 4
1. А где изначально было хоть слово сказано про TurboDelphi?
2. А кто Вам говорит про тип TString? Вам предлагают работу с TStrings - это разные вещи!
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2018, 16:22 5
Лучший ответ Сообщение было отмечено ZX Spectrum-128 как решение

Решение

А Вы в своем коде напишите
Delphi
1
2
3
uses Classes;
......................
var t:TStringList;
Запустите и узнаете есть ли этот класс.
0
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 93
16.11.2018, 16:55  [ТС] 6
Спасибо
0
16.11.2018, 16:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.11.2018, 16:55
Помогаю со студенческими работами здесь

Множественный тип данных
Помогите пожалуйста!!! Дана строка состоящая из латинских букв и цифр используя множественный тип...

Очень надо. Множественный и перечислимый тип
учусь работать с Delphi и дошел до множественного типа. Кому не сложно сделайте программу для...

Простая программа Турфирма почти готовая, но надо доделать
Всем привет, скажу сразу на Delphi я мало что понимаю, мне задали сделать программку ТУРФИРМА, вот...

Есть готовая программа. Нужно её переделать и присоединить модули
Есть готовая программа. Нужно её переделать и присоединить модули. uses crt; function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru