У меня проблема! DLL библиотеки, написанные на Borland Pascal не воспринимаются TMT Pascal. Так должно быть, или я чего-то не то делаю. Как можно совместить эти языки?
Добрый день, RL! Так и должно быть. Они различаются. Вроде никак.
Ответ отправлен: 25.12.2003, 03:02 Отправитель: Drahus Отвечает Boriss
Приветствую Вас, RL! Попробуйте поместить исходник в папку проекта своего. Пусть ТМТ сам сделает все Ответ отправлен: 25.12.2003, 09:08 Отправитель: Boriss
Вопрос № 390
Здравствуйте! Помогите пожалуйста решить задачу по Pascal'у: Вычислить 0,1*x+0,3*x+0,5*x+…+2,2*x Вот и вся задача собственно... И еще вопрос, бъясните, зачем нужна строка WriteLn(‘Нажмите клавишу Enter’) в следующем программном коде: Var Count: Array [1..2] of integer; Rate: Array [1..2] of real; I: integer; Sum: real; Begin Sum:=0; For I:=1 to 2 do Begin Write(‘введите цену товара № ‘,I,’: ‘); Readln(Rate[I]); Write(‘введите количество товара № ‘,I,’: ‘); Readln(Count[I]); Sum:=Sum+Rate[I]*Count[I] End; Writeln(‘Стоимость покупки: ‘, Sum:12:2); Writeln(‘Нажмите клавишу Enter’); Readln End. А так же непонятно для чего нужны следующие символы: № ‘,I,’: ‘
в строках Write(‘введите цену товара № ‘,I,’: ‘); Readln(Rate[I]); и Write(‘введите количество товара № ‘,I,’: ‘); Readln(Count[I]); Заранее всем большое спасибо и всех с наступающим Новым годом!
Привет, Hellraiser! Попробую объяснить, но... это азы азов. Может почитаешь учебник?!.. Существует такое понятие, как - переменная. (Типа x, y, z в математике). Переменная - это именованая (имеющая имя) ячейка памяти, в которой программа хранит значения. Обращение к этой ячейке происходит по ее имени. В твоей программе есть слово "Var" - Это ключевое слово, обозначающее начало объявления переменных. Дальше, через ";" перечисленны переменные, используемые в этой программе. После имени переменной (например I) идет ":" и тип переменной. (Какие значения она может принимать. Большие или маленькие, целые или десятичные и пр.) Например I:Integer; - означает, что мы объявили переменную "I", которая может принимать значения от (примерно) - 32000 до +32000. Так вот, ты объявляешь цикл (For i:=1 to 2 do) - Это значит, что переменной
I присваевается значение 1, и цикл выполняется до тех пор, пока и не будет равна 2 (включительно). Каждый раз, возвращаяськ началу цикла, значение I увеличивается на 1. Слудовательно, в первом случае оператор Write('Введите цену товара № ',I,':'); выдаст: Введите цену товара № 1: . А во втором случае: Введите цену товара № 2: . Тоже самое со вторым оператором Write. А символ № - просто для красоты и понятности. Все, что берется в одиночные ковычки, просто выводится на экран. Например, если написать это так: Write('Введите цену товара № ,I,:); То мы получим: Введите цену товара № ,I,: - в любом случае. (Первая ковычка обозначает начало текста, вторая - его конец. Дальше, после запятой, можно повторить..) Rate и Count - это массивы переменных. То ест - большая переменная, которая хранит в себе много маленьких. Обращение к конкретному значению, происходит
с помощью индекса (цифри или переменной). Rate[I] - обозначает обращение к I-той переменной массива Rate. В данной программе переменная I имеет сначало значение 1, а затем 2. Cоответственно в первом случае мы обращаемся к первой ячейке (переменной) массива Rate, а во втором случае ко второй. Это то же самое, что написать Rate[1]; или Rate[2]; соответственно. Итак, оператор Write - выводит информацию на экран; а оператор Readln - читает информацию, введенную с клавиатуры (ожидает ввода) и переводит курсор (не видимый) на следующую строчку (после ввода числа - например 10 - нужно нажать Enter). Следовательно: Readln(Count[I]) - означает, что значение, которое ты введешь с клавиатуры, запишется на I-тое место в массиве Count. (В первом случае на первое место, во втором случае на второе). В коце программы операторы Writeln и Readln - Нужны для того, чтобы программа не прекращала свою
работу. (Чтобы записать результат в блокнотик, например). Вместо 'нажмите клавишу Enter' можно написать что угодно. Например 'Программа закончит свою работу после нажатия клавиши Enter'. А Readln - как я уже говорил, ожидает ввода. Следовательно данные на экране будут хранится столько времени, сколько тебе неоходимо. А после нажатия клавиши Enter программа закончит свою работу и вернется в операционную систему (например DOS или Windows). Что касается решения, то у тебя не правильное условие. При шаге = 0,2 - мы не получаем 2,2. 0,1; 0,3; 0,5; 0,7; 0,9; 1,1; 1,3; 1,5; 1,7; 1,9; 2,1; 2,3 :(( Но, я кое-что написал. Если надо будет переделать - пиши.
Приложение: Ответ отправлен: 25.12.2003, 23:18 Отправитель: Vitally Отвечает sir henry
Приветствую Вас, Hellraiser! 1. Объявляете массив коэффициентов и в цикле умножаете их на переменную х. 2. Она нужна исключительно для того, чтобы вывести на экран сообщение 'Нажмите клавишу Enter’. 3. Даже не знаю, что Вам ответить по этому поводу :)))). Символами здесь являются только "№" и ":", I - это уже не символ а переменная. Все, что стоит в скобках WriteWriteLn - выводится либо на экран, либо в другое устройство вывода (принтер или файл, например). WriteWriteLn - это макрос вывода чего-нибудь куда-нибудь.
Приложение: Ответ отправлен: 26.12.2003, 04:55 Отправитель: sir henry Отвечает Tancho
Доброе время суток, Hellraiser! 1) Про 0,1*x+0,3*x+0,5*x+…+2,2*x, если коеффициентый меняются шагом 0,2 то откуда взялось 2,2? Если не все коефициенты меняються с шагом 0,2 то как именно меняються? Пока неясно!Иначе, если вместо 2,2 стоить 2,1 : Var sum, rab, x : Real; begin Write('Введите Х : '); ReadLn(x); sum := 0; rab := 0.1; While rab <= 2,2 do begin sum := sum + rab*x; rab := rab + 0,2 end; WriteLn; Writeln('0,1*x+0,3*x+0,5*x+…+2,2*x для x = ',x:7:3, ' = ',sum:10:4); WriteLn('Для выход нажмите '); ReadLn; end. ; 2} а) Иначе если ты находишься у IDE прогу после завершение автоматично вернеть управление IDE и для просмотр результату
надо входить заново у Dos Shell, а это неудобно! Предполагаеться что в конце резултать тебе интерисуеть!Или не так? б) ами для таво что, то кто вводит чисель, разобратся где что вводить - разве это не понятно!
Ответ отправлен: 26.12.2003, 17:43 Отправитель: Tancho Отвечает samum2000
Доброе время суток, Hellraiser! >Вычислить 0,1*x+0,3*x+0,5*x+…+2,2*x >Вот и вся задача собственно... i:=0; res:=0; repeat inc(i,0.1); res:=res+x*i; until i=2.2 ... вот и все решение :) >И еще вопрос,зачем нужна строка WriteLn(‘Нажмите клавишу Enter’) Чтобы вывести на экран надпись "Нажмите клавишу Enter", чтобы пользователь знал, что он должен нажать Enter, а не какой-то там "Any Key" >А так же непонятно для чего нужны следующие символы: № ‘,I,’: ‘в >строках Write(‘введите цену товара № ‘,I,’: ‘); Readln(Rate[I]);и >Write(‘введите количество товара № ‘,I,’: ‘); Readln(Count[I]); По порядку: 1. Строка вида 'XXXXXXXXXXXXXXXXXX №' выведет на экран текст, в котором последним символом будет
№ (номер). 2. Запятая указывает, что после неё стоит еще что-то, что надо вывести на экран (в нашем конкретном случае это сам номер товара). 3. I - это переменная, в которой, видимо, хранится номер товара. 4. Очередная запятая - см. пункт 2. 5. ' (апостроф) указывет, что все, что будет между ним и следующим апострофом - строка. 6. Это сама строка, которая должна быть выведена после номера товара. 7. ' (апостроф) - это закрывающий апостроф (см. пункт 5) В итоге на экран будет выведено "введите цену товара № 1: " И еще одно. Эти вопросы подробно описываются в любой, даже очень старой и плохой, методичке по языку Паскаль, поэтому не надо лениться, просто открой и посмотри. >Заранее всем большое спасибо и всех с наступающим Новым годом! И тебя тоже :))) Попутного ветра! Ответ отправлен: 27.12.2003, 12:52 Отправитель: samum2000
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.