Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33

Указательный тип

20.10.2019, 11:27. Показов 1427. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такое задание : Сформировать динамическую строку, элементами которой есть цифры и знаки арифметики. Вывести строку на экран, и проверить корректно ли заданы арифметические операции.

Есть такой код, он не дописан, и пишет что ELEM и NEXT не обьявлены в типе POINTER, не знаю как пофиксить и дописать код.
(Знаки вопроса, это то, что я не знаю как записать).

Заранее благодарю!

Pascal
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
program test;
type
    zv = ^pointer ;
    pointer = record
            elem : char;
            next : zv
    end;
 
var
   vlan, vslov : zv;
   sym : char;
begin
   writeln('Enter your symbols (end with " "): ');
   read(sym);
   new(vslov);
   vslov^.elem:=sym;
   vslov^.next:=nil;
   vlan:=vslov;
   repeat
         read(sym);
         new(vlan^.next);
         vlan:=vlan^.next;
         vlan^.elem:=sym;
         vlan^.next:=nil;
   until sym=' ';
vlan:=vslov;
while vlan^.next <> nil do
      begin
           if (vlan^.elem = '0'..'9') and // как тут правильно указать?
           (vlan^.next = ['+', '-', '*', '/']) // и тут
           then
           ????????? что?
           vlan:=vlan^.next.next;
      end;
writeln;
vlan:=vslov;
while vlan^.next <> nil do;
      begin
           write(vlan^.elem);
           vlan:=vlan^.next;
      end;
writeln;
if ???????? then
writeln('The line is OK.')
else
writeln('The line is incorrect.')
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.10.2019, 11:27
Ответы с готовыми решениями:

Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов?
Как сделать тип данных или уже есть такой тип данных который состоит из всех печатыемых символов? Если есть то как он называется ?

Дано описание массива, у которого индексы имеют ограниченный тип над integer, а тип элемента – integer или real
Дано описание массива, у которого индексы имеют ограниченный тип над integer, а тип элемента – integer или real. Выведите на экран, сколько...

Какой функцией можно преобразовать тип byte в тип string и наоборот?
Вот моя проблема, у меня конченое действие будет выводить число в 10 С.С и в типе byte, а мне надо ее еще перевести в 2 С.С , но при...

10
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
20.10.2019, 14:10
Не надо использовать имеющиеся идентификаторы (pointer) иным образом без особой на то нужды.
Pascal
1
2
3
4
5
6
type
  PNode = ^TNode;
  TNode = record
    Next: PNode;
    Data: Char;
  end;
Правда такой способ хранения допустим только в учебных целях -- на хранение одного символа в байт тратится 5 или 6 (с учетом выравнивания) байт памяти -- безумное расточительство.

Не пойдет ли в качестве динамической строки вот такое?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  PString = ^String;
 
function NewStr(const s: String): PString;
var r: PString;
begin
  GetMem(r,Length(s)+1); r^:=s;
  NewStr:=r;
end;
 
procedure DisposeStr(p: PString);
begin
  FreeMem(p,Length(p^)+1);
end;
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
28.10.2019, 20:55  [ТС]
bormant, Не совсем понимаю, как эта динамическая строка работает(сори образование никуда не годиться, преподают всякую ересь вместо чего-то нужного), можно как нибудь показать, как это засунуть в ту програму, что я не смог дописать? И если не сложно, обьясните что мне нужно вставить, или как переписать програму. Заранее спасибо.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.10.2019, 21:12
Цитата Сообщение от Андркус Посмотреть сообщение
как эта динамическая строка работает
Обычная строка, размещенная в динамической памяти.
По условию вам нужно проверить, что строка, состоящая только из цифр и знаков арифметических операций, является корректным выражением. Очевидно, что такая строка может начинаться с необязательного "-" или "+", затем может следовать число (одна или несколько цифр), затем конец или один из знаков операций и снова число, и т.д.
Вот эти условия вам и нужно проверить... Точнее построить алгоритм, который проверяет соблюдение этих условий, и записать его на языке Паскаль.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
28.10.2019, 21:20  [ТС]
bormant, Но есть одна проблема, я не знаю как это записать. Еще не доводилось иметь с таким дело. Учебник прочесал вдоль и впоперек, нужной инфы не нашел. На форуме так же.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.10.2019, 22:02
Один из очевидных подходов -- конечный автомат с описанием состояний и переходов между ними и его реализация в том или ином виде.
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
28.10.2019, 22:06  [ТС]
bormant, Не совсем понял, но прошу, хотя бы натолкните на правильные записи тех алгоритмов на проверку условий. Спасибо.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.10.2019, 22:11
Для общего понимания:
http://rsdn.org/article/alg/statemachine.xml
http://pascal.sources.ru/articles/formal.htm
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
28.10.2019, 22:46  [ТС]
bormant,

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
type
  PString = ^String;
 
function NewStr(const s: String): PString;
var r: PString;
begin
  GetMem(r,Length(s)+1); r^:=s;
  NewStr:=r;
end;
 
procedure DisposeStr(p: PString);
begin
  FreeMem(p,Length(p^)+1);
end;
Сдесь выдает ошибку, указатели на ссылочные типы недопустимы, что делать? Можно ли как нибудь иначе создать динамическую строку?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
 Аватар для bormant
7816 / 4635 / 2837
Регистрация: 22.11.2013
Сообщений: 13,158
Записей в блоге: 1
28.10.2019, 22:50
Цитата Сообщение от Андркус Посмотреть сообщение
выдает ошибку, указатели на ссылочные типы недопустимы, что делать?
Перестать писать в разделе Turbo Pascal и отправиться в раздел, посвященный используемому вами диалекту языка либо в общий раздел, явно указав используемый транслятор.
Куда перенести тему, в общий раздел Pascal или PascalABC.NET?
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 33
28.10.2019, 22:51  [ТС]
bormant, давайте в общий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.10.2019, 22:51
Помогаю со студенческими работами здесь

Дано описание массива, у которого индексы имеют перечислимый тип, а тип элемента – integer или real. Выведите на экран,
Дано описание массива, у которого индексы имеют перечислимый тип, а тип элемента – integer или real. Выведите на экран, сколько места в...

Ссылочный тип (тип указатель)
Такая проблема. Дали лабораторную работу на эту тему, однако как обычно ничего не объяснили. Покидайте пожалуйста примеры программ на тип...

От мыши болит указательный палец
Здравствуйте! Сама не программист, но очень много работаю за компьютером, конкретно заболел сустав указательного пальца правой руки....

Поменять указательный доступ к эллементам на индексной
Есть функция которая ищет минимальный четный эллемент массива, нужно поменять указательный доступ к эллементам на индексной.int*...

Реализовать внешнюю функцию с именем make _ тип (), где тип — тип реализуемой структуры
Реализовать внешнюю функцию с именем make _ тип (), где тип — тип реализуемой структуры. Функция должна получать в качестве аргументов...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru