Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на языке Pascal


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Pascal

Выпуск № 452
от 28.09.2007, 14:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 246, Экспертов: 57
В номере:Вопросов: 3, Ответов: 11


Вопрос № 103005: Здравствуйте уважаемые эксперты, нужна ваша помощь. 1. Функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17 а k=1,2,3,...,12. ...
Вопрос № 103031: Уважаемые эксперты! Помогите, пожалуйста, решить 2 задачи: 1. Реализовать булеву функцию f(x, y, z) , заданную таблицей истинности: x y z f(x, y, z) 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1...
Вопрос № 103071: Добрый день.Подскажите,пожалуйста,как можно на Паскале задать натуральные числа(т.е. целые больше нуля:) )? Заранее благодарен...

Вопрос № 103.005
Здравствуйте уважаемые эксперты, нужна ваша помощь.

1. Функция x=a*sin(k*t+2)*cos(k*t). Составить алгоритм для расчета этой функции, если а изменяется от 5 до 7 с шагом 0.12, t изменяется от 4.2 до 6.2 с шагом 0.17 а k=1,2,3,...,12.

2. Найти среднее геометрическое положительных элементов каждого столбца матрицы А(10,15).

3. В строке S находится не более 80 латинских букв. Напечатать эту строку, удалив все вхождения th.

Заранее благодарен.
Отправлен: 22.09.2007, 17:56
Вопрос задал: Ezhik (статус: Практикант)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: kopfschwarz
Здравствуйте, Ezhik!
1) и 3) в приложении.
Для вычисления ср. геометрического нужна функция корня n-ой степени, которая в Pascal'е не реализована. Поэтому решение не представляется возможным.

Приложение:

---------
Please, don't say you're sorry & Express yourself, don't repress yourself!

Ответ отправил: kopfschwarz (статус: Студент)
Ответ отправлен: 22.09.2007, 18:24
Оценка за ответ: 5
Комментарий оценки:
Спасибо.

Отвечает: _killhunter_
Здравствуйте, Ezhik!
Корень n-ой степени из числа x1*x2*x3*xn вычисляется по формуле Exp((Ln(x1)+Ln(x2)+Ln(x3)+Ln(xn))/n)
Есть одна тонкость, при таком способе среднее геометрическое нуля чисел равняется 1. В этом случаее просто говориться, что так и должно быть. Это примерно то же самое, что 0! = 1.

Приложение:

Ответ отправил: _killhunter_ (статус: 1-ый класс)
Ответ отправлен: 26.09.2007, 13:38


Вопрос № 103.031
Уважаемые эксперты! Помогите, пожалуйста, решить 2 задачи:
1. Реализовать булеву функцию f(x, y, z) , заданную таблицей истинности:
x y z f(x, y, z)
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 1
1 1 1 0

Написать логическую формулу и построить схему с применением логических вентилей И, ИЛИ, НЕ
в программе Electronic Workbench (EWB) Пример для похожей талицы у меня тут: http://webfile.ru/1536050
2. С клавиатуры вводится последовательность целых чисел. Признак окончания ввода - ноль.
Найти длину максимальной подпоследовательности из идущих подряд чисел.
Заранее огромное спасибо! Swallow.
Отправлен: 22.09.2007, 21:49
Вопрос задала: Ласточка (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: kopfschwarz
Здравствуйте, Ласточка!
1) Для вашего случая получаем такую функцую:
f(x,y,z) = ( не X * Y * Z ) + (X * не Y * не Z) + (X * Y * не Z).

Картинка здесь: http://foto.mail.ru/mail/kopfschwarz/Misc/i-4.jpg

P.S. Теоретически, функцию можно было упростить до вида
f(x,y,x) = ( не X * Y * Z ) + ( X * не Z )
Но по условию, этого не требовалось...

2) Не совсем понятно условие... Если вводится целые числа, то и любая подпоследовательность будет тоже из целых чисел. Поэтому максимальной и будет сама введенная последовательность.
---------
Please, don't say you're sorry & Express yourself, don't repress yourself!
Ответ отправил: kopfschwarz (статус: Студент)
Ответ отправлен: 23.09.2007, 08:39
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо вам за помощь, kopfschwarz! Вы не представляете как важно было для меня знать решение первой задачи.

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Ласточка!

2)
Смотрите приложение.
При использовании команд:
until ((c=' ')or((c='0')and(b=' ')));
{проверяем максимальное значение}
writeln;
if a>d then d:=a;
a:=0;
until (c='0')and(b=' ');

цикл ввода закончится при нажатии цифры "0" просле пробела.
При использовании команд:
until ((c=' ')or(c='0'));
{проверяем максимальное значение}
writeln;
if a>d then d:=a;
a:=0;
until c='0';

цикл ввода закончится при нажатии "0" в любом месте последовательности.
В качестве разделителя последовательностей чисел используется пробел.
Т.к. с числами больше ничего не делается, сами числа не формируются и не запоминаются.
Удачи!

Приложение:

---------
И только наступив на грабли мы приобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: Специалист)
Ответ отправлен: 24.09.2007, 16:11
Оценка за ответ: 5
Комментарий оценки:
Огромное спаибо за решение второй задачи, Константин Николаевич! Вы мне очень помогли.

Отвечает: Артём1983
Здравствуйте, Ласточка!
Отвечу только на второй вопрос.
В приложении код ко второму вопросу

Приложение:

Ответ отправил: Артём1983 (статус: 3-ий класс)
Ответ отправлен: 24.09.2007, 19:31
Оценка за ответ: 5
Комментарий оценки:
Спасибо за помощь, Артём1983!

Отвечает: Багиев Александр
Здравствуйте, Ласточка!
1. Объясню, как определять формулу по таблице истинности. Берешь те строки, в которых итоговое значение равно 1. У нас их 3:
0 1 1 1
1 0 0 1
1 1 0 1

Теперь возьмем сложение трех произведений x,y,z:
f := (x and y and z) or (x and y and z) or (x and y and z);

Теперь поставим отрицание у тех переменных, где у нас в таблице стоит сооветственно ноль:
f := ((not x) and y and z) or (x and (not y) and (not z)) or (x and y and (not z));

Вот это и есть формула в полной форме. Естественно, ее можно упростить.
Подробнее об этом можно найти в курсе дискретной математики.

2. Вводим числа в массив A пока не встретится ноль. Size - размер полученного массива.
MaxLen - длина максимальной последовательности.
CurLen - длина текущей последовательности.

Приложение:

Ответ отправил: Багиев Александр (статус: 2-ой класс)
Ответ отправлен: 26.09.2007, 11:49
Оценка за ответ: 5
Комментарий оценки:
Огромное спасибо за решения, Багиев Александр!


Вопрос № 103.071
Добрый день.Подскажите,пожалуйста,как можно на Паскале задать натуральные числа(т.е. целые больше нуля:) )?

Заранее благодарен
Отправлен: 23.09.2007, 13:21
Вопрос задал: Akella (статус: Посетитель)
Всего ответов: 5
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Coupler
Здравствуйте, Akella!
С диапазоном от 0 до n существует несколько подходящих типов:
Byte (диапазон 0..255)
Word (диапазон 0..65536).
Остальные целочисленные типы Pascal:
- shortint (-128 .. 127), integer (-32768 .. 32767), longint(-2147483648 .. 2147483647).
Если Вам нужно очень большое натуральное число, то это осуществимо с помощью длинной арифметики (динамические массивы).
Ответ отправил: Coupler (статус: Практикант)
Ответ отправлен: 23.09.2007, 13:31

Отвечает: kopfschwarz
Здравствуйте, Akella!
Я, возможно, могу ошибаться (хотя почему-то уверен в правильности), но есть еще тип LongWord(от 0 до ~4 млрд)
---------
Please, don't say you're sorry & Express yourself, don't repress yourself!
Ответ отправил: kopfschwarz (статус: Студент)
Ответ отправлен: 23.09.2007, 14:02

Отвечает: Yandrey
Здравствуйте, Akella!
К натуральным можно отнести тип byte 0-255 или word 0-65535 но в принципе можно и другие цифровые типы использовать, при необходимости используя функцию, которая проверяет, является ли число натуральным, либо при записи в переменную приводить к виду натурального числа.
Ответ отправил: Yandrey (статус: 10-ый класс)
Ответ отправлен: 23.09.2007, 14:06

Отвечает: Артём1983
Здравствуйте, Akella!
На Паскале задать натуральные числа можно с помощью типа "integer"
var
a:integer;
если принципиально пужно больше нуля то советую завести свой тип например:
type
MyInteger: 0..100;
var
a:MyInteger;
или же использовать типы Byte или Word
var
b:byte;
w:word;
Ответ отправил: Артём1983 (статус: 3-ий класс)
Ответ отправлен: 23.09.2007, 16:43

Отвечает: Вологин Всеволод Вячеславович
Здравствуйте, Akella!

Program primer;
Var a: integer;
Begin
Repeat
Write('Введите а: ');
Readln(a);
Until a<=0;
End.
---------
Это круто - машина состояний с бесконечным циклом
Ответ отправил: Вологин Всеволод Вячеславович (статус: 2-ой класс)
Ответ отправлен: 25.09.2007, 11:44


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Техподдержка портала, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.60.05 от 27.09.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное