Перейти к содержанию
    

2 вопроса по паскалю

1) как сделать приведение типов если есть выражение a:=b1000 + b[i+x]; причем а-longint а b - megatype который обявлен как array[1..100] of integer

2) препод говорил про функции приводящие символьную переменную в число и наоборот - подскажите что за ф-ции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

a:=b1000 + b[i+x];

Смотря что у Вас стоИт между b и 1000 :) Пропустили знак какой ?

2) препод говорил про функции приводящие символьную переменную в число и наоборот - подскажите что за ф-ции?

Процедуры (не функции - это не Си)

val() и str()

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Процедуры (не функции - это не Си)

Как раз-таки функции, раз значение возвращают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как раз-таки функции, раз значение возвращают.

Апядь холевара :)

Оне ж не так возвращают

MyVar := val(...);

а в параметрах по ссылке. Стало быть как функция они не возвращают ничего.

Неча развращать студентов :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

между 1000 и b стоит умножение *

тогда

a:= b[i]*1000 + b[i+x];

не нуждается в "ручном" приведении типов, т.к. выражение справа тоже будет типа longint

Компилер это видит благодаря тому, что в выражении присутствует константа. Раз так - сразу понятно, что в случае если b будет равно максимально представимому целому (MAXINT), результат выражения никогда не станет больше максимально возможного longint

Вот если бы

var
a:longint;
b:megatype;
i,x,m:integer;

begin
m:= func; // здесь мы получили значение m хз откуда и хз какое
a:= b[i]*m + b[i+x]; // то здесь нормальный компилер должен матюкнуццо "invalid type cast"
end;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а у меня пишет type mismatch... лан, ломать над этим голову не буду... сделаю по-другому

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

версия 7.1

по-моему я разобрался - здесь ошибок не выдает ... осталось еще другое подправить и будет все пучком...

а как в сурец сделать так чтоб компилятор написал туда мое имя фамилию и другие данные?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как в сурец сделать так чтоб компилятор написал туда мое имя фамилию и другие данные?

Ниасилил.

Кто куда должен писать ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ниасилил.

Кто куда должен писать ?

 

Дык, компилятор, в сурец! :-)

 

Видимо так:

const MyName : string = '_Ivan_33';

 

(Не помню, поймёт bp7 такое, или надо var)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

(Не помню, поймёт bp7 такое, или надо var)

Понять-то поймет, тока это уже не просто в сурец пойдет, а и в ехешник :)

ежели просто в сурец - то можно и в каменте (*Иванов Иван Иваныч*).

Но, подозреваю, что суровый препод мог "предложить" написать программу, которая открывает свой собственный сурец и добавляет туда эти самые ФИО. Вот поэтому и не понял :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Понять-то поймет, тока это уже не просто в сурец пойдет, а и в ехешник :)

Дык! И препод сможет увидеть, что автор изготовил программу самолично, а не взял у товарища:)

Но, подозреваю, что суровый препод мог "предложить" написать программу, которая открывает свой собственный сурец и добавляет туда эти самые ФИО. Вот поэтому и не понял :)

Неужели бывают такие жестокие преподы?! :)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Апядь холевара :)

Оне ж не так возвращают

MyVar := val(...);

а в параметрах по ссылке. Стало быть как функция они не возвращают ничего.

Неча развращать студентов :)

Я, конечно, понимаю, что Паскакаль дебильнй язык, но про эти "функции" всегда думал, что это не функции и не процедуры, а лишь указание компилятору считать аргументы другим типом. То есть, оператор преобразования типа. Если же это действительно реальные функции, которым что-то передается и они генерируют вызов - то какие еще могут быть разговоры о паскале? Нахрена он это все делает? Есть символьная переменная, какие проблемы сложить ее с int? Сложи младший байт, затем к старшим прибавь 0 с переносом. Неужели паскаль вызывает функцию, которая возвращает то же число, но с добавлением нулевых байтов, и только это число можно использовать для сложения с int?

Изменено пользователем 777777

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...