С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
Delphi Вывод части файла https://www.cyberforum.ru/ delphi-beginners/ thread1647251.html
Имеется текстовый файл в котором есть 2 записи разделённые пустой строкой. Имеется Edit для поискового запроса. Суть в том, что нужно сделать поиск в файле по категории т.е. вводишь номер дома и тебе в memo выдаётся вся информация об этом доме. type PNode = ^Node; Node = record Vid:string; Dom:string; Chislo:string; end; var
Delphi Генерация от и до 5 длиною без повторов
Есть процедура для проверки повторов : type TArrInt = array of Integer; procedure UniqueRandomize(var aArr : TArrInt; const aCount : Word); var i, j, Num : Integer; begin SetLength(aArr, aCount);
Delphi Отрицательные компоненты вектора заменить на 1 https://www.cyberforum.ru/ delphi-beginners/ thread1647131.html
Пожалуйста помогите Дано целое К, целочисленные векторы {X}5 i=l,2,...,45; {c}, n=l,2,...,k+10. У каждого вектора, компоненты которого образуют неубывающую последовательность, отрицательные компоненты заменить на 1.
Delphi Переписать файл в другой и выдать на печать Пожалуйста помогите Дан файл следующей структуры: 1) цех, 2) участок, 3) деталь, 4) товар, 5) потребитель, 6) план на месяц. Переписать этот файл в другой и выдать на печать информацию из исходного файла, подвести итоги по деталям, участку. https://www.cyberforum.ru/ delphi-beginners/ thread1647130.html
Delphi Расположить слова в порядке убывания их длины
Пожалуйста помогите Дана строка состоящая из слов, разделенных пробелами. Расставить слова в массиве так, чтобы они располагались в порядке убывания их длины. Если несколько слов имеют одинаковую длину, то брать их также по возрастанию предпоследней буквы слова, если такое слово состоит из одной буквы, то дополнить его случайной буквой и упорядочить.
Delphi Упорядочить слова в порядке возрастания последней буквы https://www.cyberforum.ru/ delphi-beginners/ thread1647127.html
Пожалуйста помогите Дана строка состоящая из слов, разделенных пробелами. Упорядочить слова массива в порядке возрастания последней буквы слова.
Delphi Построить на экране заданные точки Пожалуйста помогите Дано целое N и целочисленные векторы {X}, i=l,2,...,N; {Y}, j=l,2,...,N. Числа x и y являются координатами точек. Построить на экране точки, заданные последовательностью (х, у); (х,у); ...; (х,у). Точки строить поочередно, построение каждой последующей должно сопровождаться удалением предыдущей. Процесс построения выполнить дважды: первый раз от точки 1 до точки N,... https://www.cyberforum.ru/ delphi-beginners/ thread1647126.html Удалить из файла запись с заданным номером Delphi
Пожалуйста помогите Дан файл следующей структуры: 1) номер счета; 2) ФИО; 3) адрес; 4) срочность; 5) текущий год; 6) год вклада; 7) сумма вклада. Удалить из файла запись, номер которой вводится с клавиатуры. Подсчитать сумму вклада на этом счете.
Delphi Найти индексы седловых точек матрицы https://www.cyberforum.ru/ delphi-beginners/ thread1647121.html
Пожалуйста помогите Даны числа М и N и двумерный массив размером М х N. Некоторый элемент этого массива назовем Седловой точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце. Напечатать индексы седловых точек, Если Седловых точек нет, то напечатать 0.
Delphi В последовательности найти число с наибольшей суммой цифр, делящейся на 3 без остатка https://www.cyberforum.ru/ delphi-beginners/ thread1647119.html
Пожалуйста помогите Задана последовательность целых чисел. Написать программу, печатающую число с наибольшей суммой цифр, делящейся на 3 без остатка.
Число через неделю Delphi
Нужно в string указать следующую неделю (например сегодня DateToStr(Date) - 25.01.16 а нужно чтобы было 01.02.16
Delphi Сумма ряда. Вылетает программа Вычислить сумму ряда s=1+\frac{({2x})^{2}}{2!}-\frac{{(2x)}^{4}}{4!}+\frac{{(2x)}^{6}}{6!}-...+\frac{{(2x)}^{2n}}{(2n)!} с точностью e и сравнить ее с функцией f=2{sinx}^{2} var s,f,x,e,y,t:real; n:integer; begin write('Введите аргумент x= '); readln(x); write('Введите точность расчета e= '); readln(e); f:=2*sqr(sin(x)); https://www.cyberforum.ru/ delphi-beginners/ thread1647070.html
13107 / 5888 / 1707
Регистрация: 19.09.2009
Сообщений: 8,808
29.01.2016, 08:04 0

Используя стек, проверить правильность вложений операторных скобок (begin/end) - Delphi - Ответ 8683789

29.01.2016, 08:04. Показов 1932. Ответов 5
Метки (Все метки)

Ответ

Для переделки в GUI-приложение (GUI Graphic User Interface), надо заменить консольный вывод (Writeln) на вывод в экземпляр TMemo, например.
Например, так. На форму надо положить компоненты:
Delphi
1
2
3
    Button1: TButton;
    Edit1: TEdit;
    Memo1: TMemo;
В Edit1 пользователь должен ввести относительный путь файла (относительно директория, в котором расположен исполняемый файл программы). В Memo1 осуществляется вывод программы.
Для кнопки Button1 надо создать обработчик события OnClick - TForm1.Button1Click(). Код раздела implementation в модуле оформить следующим образом:
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
implementation
 
{$R *.dfm}
 
type
  //Тип основных данных.
  TData = String;
  //Указатель на элемент списка (в данном случае - стека).
  TPElem = ^TElem;
  //Элемент списка.
  TElem = record
    Data : TData;
    PNext : TPElem; //Указатель на следующий элемент списка.
  end;
 
//Добавление элемента на вершину стека.
procedure Push(var aPStack : TPElem; const aData : TData);
var
  PElem : TPElem;
begin
  New(PElem);
  PElem^.Data := aData;
  PElem^.PNext := aPStack;
  aPStack := PElem;
end;
 
{Изъятие элемента с вершины стека.
Если стек не пуст, то с вершины стека изымается элемент и возвращается
через параметр aData. В этом случае, функция возвращает значение True.
Если стек пуст, то операция отменяется, а функция возвращает значение False.}
function Pop(var aPStack : TPElem; var aData : TData) : Boolean;
var
  PDel : TPElem;
begin
  Pop := False;
  if aPStack <> nil then
  begin
    PDel := aPStack;
    aData := PDel^.Data;
    aPStack := aPStack^.PNext;
    Dispose(PDel);
    Pop := True;
  end;
end;
 
//Освобождение памяти, занятой под стек (очистка стека).
procedure StFree(var aPStack : TPElem);
var
  Data : TData;
begin
  while Pop(aPStack, Data) do;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
const
  //Множество разделителей.
  D = ['.', ',', ':', ';', '-', '+', '*', '/', '(', ')', '[', ']', '{', '}',
    '''', ' ', #9, #10, #13];
var
  f : TextFile;
  PSt : TPElem;
  i, L, P, Len, LenW : Integer;
  S, FileName : String;
  Sw : TData;
begin
  PSt := nil; //Начальная инициализация стека.
 
  Memo1.Lines.Add('------------------------------');
  //ExtractFilePath(ParamStr(0)) - полный путь директория, в котором лежит исполняемый файл программы.
  //Относительный путь (относительно директория, в котором лежит исполняемый файл программы)
  //указан в Edit1.
  FileName := ExtractFilePath(ParamStr(0)) + Edit1.Text;
  Memo1.Lines.Add('Файл: ' + FileName);
  Memo1.Lines.Add('Проверка операторных скобок.');
  AssignFile(f, FileName);
  Reset(f);
  L := 0; //Строка, на которой обнаружена ошибка.
  P := 0; //Позиция (в пределах строки), на которой обнаружена ошибка.
  while not Eof(f) do //Если не конец файла, то продолжаем цикл.
  begin
    Readln(f, S);     //Читаем очередную строку из файла.
    Inc(L);           //Номер очередной строки.
    Len := Length(S); //Длина строки.
    LenW := 0;        //Длина лексемы.
    for i := 1 to Length(S) do //Перебор всех символов строки.
      if not (S[i] in D) then  //Если символ не является разделителем.
      begin
        Inc(LenW); //Учёт текущего символа в длине лексемы.
        if (i = Len) or (S[i + 1] in D) then //Если обнаружен конец лексемы.
        begin
          Sw := AnsiUpperCase(Copy(S, i - LenW + 1, LenW)); //Выделяем лексему и преобразуем её буквы к верхнему регистру.
          if (Sw = 'BEGIN') or (Sw = 'RECORD') or (Sw = 'CLASS')
            or (Sw = 'OBJECT') or (Sw = 'UNIT')
          then                    //Если обнаружена открывающая скобка.
            Push(PSt, Sw)         //Помещаем открывающую скобку в стек.
          else if Sw = 'END' then //Если обнаружена закрывающая скобка.
          begin
            if not Pop(PSt, Sw) then //Берём с вершины стека открывающую скобку.
            begin
              P := i - LenW + 1;
              Break;
            end;
          end;
          LenW := 0;        //Обнуление длины лексемы.
        end;
      end;
    if P > 0 then
      Break;
  end;
  CloseFile(f);
 
  if P > 0 then
    Memo1.Lines.Add('Ошибка! Нет соответствующей открывающей скобки. Строка: '
      + IntToStr(L) + ', Позиция: ' + IntToStr(P))
  else if PSt <> nil then
    Memo1.Lines.Add('Ошибка! Открывающих скобок больше, чем закрывающих.')
  else
    Memo1.Lines.Add('Скобки расставлены правильно!');
 
  StFree(PSt); //Освобождение памяти, занятой для стека.
  Memo1.Lines.Add('-----');
  Memo1.Lines.Add('Память, выделенная для стека - освобождена.');
end;
 
end.


Вернуться к обсуждению:
Используя стек, проверить правильность вложений операторных скобок (begin/end) Delphi
1
Заказать работу у эксперта
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.01.2016, 08:04
Готовые ответы и решения:

Проверить парность блочных скобок begin-end
Привет,форумчане!помогите с задачкой,пожалуйста)) Напишите программу, которая во входной...

Проверить правильность расстановки скобок
Помогите написать программу.Проверить правильно ли в операторе b:=(cos(a+x)+exp(ln(a)*x)/sqr(x)...

Проверить правильность расстановки круглых скобок
помогите пожалуйста. дан текст в котором могут быть круглые скобки. Проверить правильность...

Проверить правильность расстановки круглых и квадратных скобок в выражениях
задание дана строка символов проверить правильность расстановки круглых и квадратных скобок в...

5
29.01.2016, 08:04
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.01.2016, 08:04
Помогаю со студенческими работами здесь

Проверку соблюдения баланса операторных скобок
Задан текст,написанный и находящийся в файле.Произвети проверку соблюдения баланса операторных...

begin...end тупик!
Здравствуйте!Сново тупик у меня!При решение ax^4+bx^2+c=0 у меня программа бежит сразу в низ!В чём...

Теория BEGIN..END;
Снова здрасьте! Довольно часто я встречаю примеры кода, подобные этому var F: TextFile; ...

Ошибка при if end then begin
При выполнении проверки - ошибка ! В чем может быть дело ? if...

0
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru