IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
Closed Topic Открыть новую тему 
> Исправить ошибки, Исправить переведенную программу
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Я просил помочь перевести программу на паскаль( Перевести программу на Pascal )
Мне помогли, но программа не компилируется. Пожалуйста помогите это исправить!


const
n = 3;
A: array[0 .. pred(n), 0 .. pred(n)] of double = (
(10, 1, 1), (2, 10, 1), (2, 2, 10)
);
B: array[0 .. pred(n)] of double = (
12, 13, 14
);

var
X: array[0 .. pred(n)] of double;
i, j, k: integer;
multiplier: double;

begin
writeln('Linear system of equations:');
writeln;

for i := 0 to pred(n) do begin
for j := 0 to pred(n-1) do
write('(', A[i][j]:0:2, ') * x', j, ' + ');
writeln('(', A[i][n-1]:0:2, ') * x', pred(n), ' = ', B[i]:0:2);
end;

for i := 0 to pred(n-1) do begin
for j := i+1 to pred(n) do begin
multiplier := A[j][i] / A[i][i];
for k := 0 to pred(n) do
A[j][k] := A[j][k] - A[i][k] * multiplier;
B[j] := B[j] - B[i] * multiplier;
end;
end;

for i := n-1 downto 0 do begin
X[i] := B[i];
for j := n-1 downto succ(i) do
X[i] := X[i] - A[i][j] * X[j];
X[i] := X[i] / A[i][i];
end;

writeln;
writeln('Result vector X:');
for i := 0 to pred(n) do begin
writeln('X[', i, '] = ', X[i]:0:2);
end;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Да что ты? Хочешь скриншот? Она не только компилируется, но и результат выдает:

Цитата
Linear system of equations:

(10.00) * x0 + (1.00) * x1 + (1.00) * x2 = 12.00
(2.00) * x0 + (10.00) * x1 + (1.00) * x2 = 13.00
(2.00) * x0 + (2.00) * x1 + (10.00) * x2 = 14.00

Result vector X:
X[0] = 1.00
X[1] = 1.00
X[2] = 1.00


(еще одно вот такое высказывание - буду минусовать без предупреждения!!!)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Пишет Must be in 8087 mode to compile this mega_chok.gif
Может проблема с компилятором???

Сообщение отредактировано: Accer -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


первой строкой напиши
{$N+}
действительно, "проблема с компилятором" (с)
настройки другие.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Спасибо мисс_граффити, это помогло. Можете рассказать об этой команде?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






В FAQ-е была тема "Директивы компилятора", вот {$N} - одна из них...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


По хорошему, надо не лепить в каждой программе {$N+}, а настроить компилятор: Options->Compiler-> Отметить 8087/80287.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 20
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Сопроцессор-я не совсем понял, для чего он нужен.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
По хорошему, надо не лепить в каждой программе {$N+}, а настроить компилятор: Options->Compiler-> Отметить 8087/80287.
Это - ОЧЕНЬ спорное утверждение.. Ну, установил я у себя эту опцию, и что? Завтра пошел к другу, а у него не установлена - опять перенастраивать? А в университете вообще по мозгам могут дать за перенастройку компилятора. А вот с директивой (которая, кстати, имеет преимущество над настройками среды) все будет в порядке...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(Accer @ 2.01.2008 13:22) *

Сопроцессор-я не совсем понял, для чего он нужен.

Для обработки чисел с плавающей точкой: single, double, extended.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(volvo @ 2.01.2008 13:23) *

Это - ОЧЕНЬ спорное утверждение..
Хочешь поспорить?
Пожалуйста...

Во-первых, следует вспомнить (а тем, кто не знал - узнать), для чего нужна эта опция.
Первоначально в IBM PC (а также IBM PC XT) устанавливался процессор Intel 8088 и пустое гнездо для математического сопроцессора Intel 8087. В дальнейшем на смену IBM PC (XT) пришли IBM PC AT, собранные на процессоре Intel 80286, но также с пустым гнездом под сопроцессор. Примерно аналогичная ситуация произршла и с AT 386, правда, уже не IBM, а Compaq, но не суть важно. И сопроцессор там был уже 80387, оснащенный рядом новых команд.
Начиная с 80486 Intel располагает устройство для обработки чисел с плавающей точкой (FPU) внутри самого процессора. Надобность в гнезде для сопроцессора, а также в самом сопроцессоре отпала, а также ВСЕ выпускаемые компьютеры автоматически оказывались оснащенными FPU.
Borland Pascal 7.0 был разработан в расчете на компьютеры с процессорами 8086/88 и 80286, т.е. на те, кда мог как присутствовать, так и отсутствовать блок FPU. Отсюда и наличие переключателей в опциях компилятора.
Таким образом, на ВСЕХ компьютерах с процессорами 486 и выше, а также на 386, 286 и 86/88, оснащенных блоком FPU должны быть именно рекомендуемые установки.
Если где-нибудь сегодня обнаружите компьютер, на котором используется ТР 7.0 и не имеющий FPU - сообщите мне.
Цитата
Ну, установил я у себя эту опцию, и что? Завтра пошел к другу, а у него не установлена - опять перенастраивать?
Ну, вообще-то - да. Если видишь, что у друга что-то настроено НЕПРАВИЛЬНО, то почему бы не исправить?
Цитата
А в университете вообще по мозгам могут дать за перенастройку компилятора.
Если в университете неправильно настроен компилятор, то по мозгам надо давать сисадмину.
Цитата
А вот с директивой (которая, кстати, имеет преимущество над настройками среды) все будет в порядке...
Что касается лирективы, то возражений по существу нет (т.к. быть не может), но есть несколько соображений, по которым это может оказаться не совсем удобным:
1. Кто сказал, что директива {$N+} чем-то дучше остальных? Следовательно, если уж явно описывать ее, то вполне логично точно также явно описать и еще два десятка директив.
2. Запоминание строки с двумя десятками директив - удовольствие ниже срежнего.
3. При различии в настройках при компиляции различных модулей и основной программы могут возникнуть проблемы. Поэтому "компилировать все с настройками по умолчанию" заведомо надежнее, чем "компилировать все с индивидуальными настройками".
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






Цитата
Ну, вообще-то - да. Если видишь, что у друга что-то настроено НЕПРАВИЛЬНО, то почему бы не исправить?
Да ты что? А друг, вот незадача, разрабатывает приложения под компьютер БЕЗ сопроцессора, и ему эта "галочка" ни никаким боком просто не сдалась в настройках (вот бывают же в наше время такие раритеты, да? И еще работают... И работают исправно, заметь. У меня есть несколько знакомых, которые пишут под 286 процессор - без сопроцессора, и хозяева не собираются менять аппаратуру)...

И вообще: что у тебя за привычка, расскажи мне? Почему надо дать ДУРНОЙ совет, и считать себя просто гением? Что бы ты сказал, если бы кто-то пришел к тебе домой и поменял ТЕБЕ установки компилятора? Для чего ВООБЩЕ по-твоему нужны директивы компилятора? Просто так? Для красоты? Ан нет, вообще-то они как раз и используются (если ты этого делать не хочешь, или не умеешь - это не повод давать идиотских советов по перенастройке "всего и вся" НА СВОЙ ВКУС) для того, чтобы независимо от настроек IDE программа работала одинаково... Да что я с тобой говорю-то вообще? Человек, не имеющий TP лезет в каждую тему раздела "Задачи" и о чем-то с умным видом рассуждает... dry.gif

Цитата
Кто сказал, что директива {$N+} чем-то дучше остальных? Следовательно, если уж явно описывать ее, то вполне логично точно также явно описать и еще два десятка директив.
Если то значение, которым ты пользуешься ОТЛИЧАЕТСЯ от значения по умолчанию - то да, надо... А ты что, этого тоже не делаешь?

Цитата
2. Запоминание строки с двумя десятками директив - удовольствие ниже срежнего.
Программирование вообще удовольствие ниже среднего...

Цитата
3. При различии в настройках при компиляции различных модулей и основной программы могут возникнуть проблемы. Поэтому "компилировать все с настройками по умолчанию" заведомо надежнее, чем "компилировать все с индивидуальными настройками".
Начало фразы правильное, а вот окончание - ну, как всегда у тебя - ты опять извращаешься, и потом-таки будешь говорить, что "ты это и имел в виду"... Так вот, для того, чтобы НЕ было проблем при компилировании модулей и программ с настройками по умолчанию, надо пользоваться директивами... Повторяю для тебя специально вопрос еще раз: почему приоритет директивы выше приоритета настроек через IDE? Почему ты вообще решил, что все пользуются только IDE? Если ты пользуешься ей (это я загнул, конечно, ибо ты теоретик, Turbo Pascal-ем не пользуешься вообще, только раздаешь налево/направо советы, как другие должны им пользоваться) - это еще ничего не значит, есть и консольные компиляторы (никогда не писал программы, которые не помещаются в 640К, выделенные IDE Паскаля?), при работе с которыми гораздо проще записать строку директив, чем вызывать TPC/TPCX с десятком - другим ключей (CFG-файлы можешь не предлагать, будет отвергнуто с цитатой твоих же слов)...

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Интересно, а к организаторам олимпиад по программированию тоже надо прийти и настроить компилятор под себя правильно? Или отсылать им решения без директив ("А что, у меня-то работает!"), а потом возмущаться и орать, что все места куплены, а твоя супер-пупер программка по их мнению даже не откомпилировалась?

Цитата
1. Кто сказал, что директива {$N+} чем-то дучше остальных? Следовательно, если уж явно описывать ее, то вполне логично точно также явно описать и еще два десятка директив.

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

ровно так же, как условия ничуть не хуже циклов... но ты же используешь то, что нужно в условиях данной задачи.

Цитата
2. Запоминание строки с двумя десятками директив - удовольствие ниже срежнего.

Почему же? Отличная тренировка памяти... Если хелпом пользоваться не получается...

Вот, еще пример.
Сможешь сделать настройками компилятора аналог такой вещи:
{$I-}
reset(f);
{$I+}
if IOResult<>0 then...

то есть изменить настройки для какого-то кусочка программы?

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Цитата(volvo @ 2.01.2008 16:16) *
А друг, вот незадача, разрабатывает приложения под компьютер БЕЗ сопроцессора,
Не надо путать правило с исключением.
Настроики по умолчанию должны охватывать наиболее общие случаи, а директивы - применять во всяких экзотических исключениях.
Цитата
Почему надо дать ДУРНОЙ совет, и считать себя просто гением?
Грубить не надо.
Цитата
Что бы ты сказал, если бы кто-то пришел к тебе домой и поменял ТЕБЕ установки компилятора?
Я пришел к Accer'у домой и поменял у него настройки компилятора?
Я ПОСОВЕТОВАЛ ему так сделал. И, думаю, ему следует последовать этому примеру в отношении своего приятеля.
Не надо мне приписывать требования хозяйничать на чужом компьютере (хотя, признаю, для краткости не делал необходимых оговорок, поэтому мог быть неверно понят).
Цитата
Для чего ВООБЩЕ по-твоему нужны директивы компилятора? Просто так? Для красоты?
См. выше - в НЕСТАНДАРТНЫХ случаях.
Цитата
...для того, чтобы независимо от настроек IDE программа работала одинаково... Да что я с тобой говорю-то вообще? Человек, не имеющий TP лезет в каждую тему раздела "Задачи" и о чем-то с умным видом рассуждает... dry.gif
Да. Предпочитаю программы, которые бы работали одинаково независимо от применяемого компилятора.
Цитата

Если то значение, которым ты пользуешься ОТЛИЧАЕТСЯ от значения по умолчанию - то да, надо...
Именно. Но ТОЛЬКО в этом случае, а не всегда.
Цитата
Программирование вообще удовольствие ниже среднего...
Это кому как. Я, например, нередко делаю это для своего удоволствия.
Цитата
Так вот, для того, чтобы НЕ было проблем при компилировании модулей и программ с настройками по умолчанию, надо пользоваться директивами...
Не согласен.
Директивами следует пользоваться ТОЛЬКО тогда, когда понимаешь, для чего это нужно.
Цитата
Повторяю для тебя специально вопрос еще раз: почему приоритет директивы выше приоритета настроек через IDE?
Именно потому, что везде, кроме специально оговоренных исключений, должно действовать правило.
Цитата
Почему ты вообще решил, что все пользуются только IDE?
Ты думаешь, я ошибся?
Давай спросим у Accer'a. ;)
Цитата
(никогда не писал программы, которые не помещаются в 640К, выделенные IDE Паскаля?)
2.8 Мб подойдет?
И вообще, мы тут собрались, чтобы пальцы гнуть?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


все, хватит оффтопа.
вопрос с некомпилирующейся программой решен. тема закрыта.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 23:26
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name