1 / 1 / 0
Регистрация: 07.02.2011
Сообщений: 86
1

Перевести с Дельфи на Паскаль

13.07.2011, 09:04. Показов 1034. Ответов 6
Метки нет (Все метки)

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
program Project1;
 
//Возвращает заглавную версию буквы для кодовой страницы CP866.
function UpCase866(const aChar : Char) : Char;
begin
  case aChar of
    #$A0..#$AF : UpCase866 := Char( Ord(aChar) - $20 ); //Буквы: а..п.
    #$E0..#$EF : UpCase866 := Char( Ord(aChar) - $50 ); //Буквы: р..я.
    #$F1 : UpCase866 := #$F0; (*Буква ё.*)
  else
    UpCase866 := UpCase(aChar); //Все другие символы.
  end;
end;
 
const
  //Множество разделителей слов.
  D = ['.', ',', ':', ';', '!', '?', '-', ' ', #9, #10, #13];
  //Множество звонких согласных букв.
  Da = ['Б', 'В', 'Г', 'Д', 'Ж', 'З', 'Л', 'М', 'Н', 'Р'];
var
  S : String;
  Ch : Char;
  i, j, Len : Integer;
  D1, D2, DTmp : set of Char;
begin
  repeat
    Writeln('Задайте строку:');
    Readln(S);
 
    Len := Length(S);
    D1 := [];
    D2 := [];
    DTmp := [];
    j := 0;
    for i := 1 to Len do begin
      //Пропускаем разделители.
      if S[i] in D then Continue;
      //Формируем множество звонких согласных букв, которые
      //присутствуют в текущем слове.
      Ch := UpCase866(S[i]);
      if Ch in Da then DTmp := DTmp + [Ch];
      //Отслеживаем конец слова.
      if (i = Len) or (S[i + 1] in D) then begin
        //Порядковый номер слова.
        Inc(j);
        if j mod 2 <> 0 then begin
          //На первом нечётном слове инициализируем множество D1.
          if j = 1 then D1 := DTmp;
          //Во множество D1 попадают только те звонкие согласные
          //буквы, которые присутствуют одновременно и в D1 и в DTmp.
          D1 := D1 * DTmp; //Если слово нечётное.
          //Если D1 стало пустым - нет смысла продолжать обработку.
          if D1 = [] then Break;
        end else
          D2 := D2 + DTmp //Если слово чётное.
        ;
        //Обнуляем временное множество.
        DTmp := [];
      end;
    end;
 
    //Результирующее множество: все найденные звонкие согласные буквы,
    //которые присутствуют в каждом нечётном слове, но не присутствуют
    //ни в одном чётном слове.
    DTmp := D1 - D2;
 
    //Распечатка результатов.
    if DTmp = [] then begin
      Writeln('Нет ни одной звонкой согласной буквы, которая бы');
      Writeln('присутствовала в каждом нечётном слове, но не присутствовала');
      Writeln('ни в одном чётном слове.');
    end else begin
      Writeln('Перечень звонких согласных букв, которые присутствуют');
      Writeln('в каждом нечётном слове, но не присутствуют');
      Writeln('ни в одном чётном слове:');
      i := 0;
      for Ch := #0 to #255 do begin
        if not (Ch in DTmp) then Continue;
        Inc(i);
        if i > 1 then Write(', ');
        Write(Ch);
      end;
      Writeln;
    end;
    Writeln;
 
    Writeln('Повторить - Enter. Выход - любой символ + Enter.');
    Readln(S);
  until S <> '';
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2011, 09:04
Ответы с готовыми решениями:

Массивы, дельфи консольная, паскаль
Массивы, дельфи консольная. 1) Продемонстрируйте работу сортировки массива методом вставки. Для...

нужно перейти из дельфи а паскаль
uses SysUtils, math; var rad, x, e, s, y, a: real; i: integer; function...

Перевести текстовый код на Дельфи
помогите перекинуть код из паскаля в делфи uses crt; const nmax=20; mar:array of...

Перевести с С++ на Паскаль
Вот это перевести в Паскаль. Язык С++ только начинаю изучать и перевести самостоятельно не могу....

6
1 / 1 / 0
Регистрация: 07.02.2011
Сообщений: 86
13.07.2011, 09:06  [ТС] 2
комментарии тоже оставьте ,пожалуйста,в соответствующих местах
0
1587 / 660 / 225
Регистрация: 09.06.2011
Сообщений: 1,334
13.07.2011, 09:49 3
Акромя кодировки касательно русских букв и заключение коментариев в {...}, вместо // - никаких изменений не нужно.
0
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
13.07.2011, 11:07 4
Два слэша тоже в паскалях за комментарий отвечают... а вот шестнадцатеричные коды символов в функции придётся исправить...
0
Почетный модератор
64271 / 47570 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
13.07.2011, 11:12 5
Цитата Сообщение от p@$#@ Посмотреть сообщение
Два слэша тоже в паскалях за комментарий отвечают... а вот шестнадцатеричные коды символов в функции придётся исправить...
В Турбо Паскале два слеша нельзя, а шестнадцатеричные коды символов читает нормально.
0
1 / 1 / 0
Регистрация: 07.02.2011
Сообщений: 86
13.07.2011, 17:06  [ТС] 6
Просто переведите код с Дельфи на Паскаль :-)
0
Почетный модератор
64271 / 47570 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
13.07.2011, 17:15 7
Kartasskiy, Вам же написали что ничего переводить не нужно, все будет работать и в Паскале, единственно нужно или убрать комментарии вида
//Возвращает заглавную версию буквы для кодовой страницы CP866.
или заключить их в фигурные скобки
{Возвращает заглавную версию буквы для кодовой страницы CP866.}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2011, 17:15
Помогаю со студенческими работами здесь

Перевести на Паскаль
#include &lt;iostream&gt; using namespace std; int main(){ int a={0}, i, b, j, n, t; ...

Перевести С++ в Паскаль
Здравствуйте, нужна помощь в переводе С++ на язык Паскаля) спасибо заранее #include &lt;iostream&gt;...

Перевести С ++ в паскаль
Здравствуйте, нужна помощь в переводе С++ на язык Паскаля) спасибо заранее #include &lt;iostream&gt;...

Перевести с С на Паскаль
#include &lt;stdio.h&gt; #define N 4 void swap(int *a, int *b) { int t; t=*a; *a=*b;


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru