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'е не реализована. Поэтому решение не представляется возможным.
Ответ отправил: 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
Написать логическую формулу и построить схему с применением логических вентилей И, ИЛИ, НЕ
в программе 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).
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
Program primer;
Var a: integer;
Begin
Repeat
Write('Введите а: ');
Readln(a);
Until a<=0;
End.
--------- Это круто - машина состояний с бесконечным циклом