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

RFpro.ru: Консультации по информатике


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

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

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10948
∙ повысить рейтинг »
Роман Селиверстов
Статус: Советник
Рейтинг: 5065
∙ повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 4148
∙ повысить рейтинг »

/ НАУКА И ОБРАЗОВАНИЕ / Точные и естественные науки / Информатика

Номер выпуска:257
Дата выхода:22.10.2012, 11:00
Администратор рассылки:Андреенков Владимир (Профессор)
Подписчиков / экспертов:56 / 59
Вопросов / ответов:3 / 7

Консультация # 81563: 1) Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным. 2)Даны действительные числа X и Y, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее - их удвоенным произведением. ...


Консультация # 178167: Здравствуйте, уважаемые эксперты! Мне надо написать программу в qbasic, высчитать интеграл тремя способами Вот что у меня получилось: a0=3.056565 a1=-0.0227886 a2=-1.080304E-2 INPUT "Nijnyaya granica integrala:"; a INPUT "Verhnyaya granica integrala:"; b INPUT "Tochnost vichisleniya:"; E INPU...
Консультация # 112757: Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной( тоесть где единицы) части матрицы по рисунку 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 сделать в pascal 7.0...

Консультация # 81563:

1) Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным.

2)Даны действительные числа X и Y, не равные друг другу. Меньшее из этих двух чисел заменить половиной их суммы, а большее - их удвоенным произведением.

Дата отправки: 08.04.2007, 13:25
Вопрос задал: Leeryhomer
Всего ответов: 5
Страница онлайн-консультации »


Консультирует Сарумян:

Здравствуйте, Leeryhomer!
1)Вводите 2 игла.
Суммируйте.
Если сумма меньше 180 градусов, значит треугольник существует.
Если сумма равна 90 градусов, то треугольник прямоугольный.

2) понадобится 1 переменная для хранения промежуточных данных (допустим A).
Если Х меньшЕЕ то:
∙ А= (Х+У)/2
∙ У=2*Х*У
∙ Х=А

Иначе:
∙ А= (Х+У)/2
∙ Х=2*Х*У
∙ Х=У опечатка нужно: У=A [Gh0stik]

Консультировал: Сарумян
Дата отправки: 08.04.2007, 13:33
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Олег Владимирович:

Здравствуйте, Leeryhomer!

1. Треугольник не существует, если сумма этих углов >= 180.
Так что ставим условие: если (сумма < 180) то {существует; <...>} иначе {не существует}
Далее, если треугольник существует, то, если один из этих углов или их сумма = 90, он прямоугольный. Так что вместо <...> ставим если (первый угол = 90 ИЛИ второй угол = 90 ИЛИ первый+второй = 90) то {прямоугольный} иначе {непрямоугольный}

2. Не привлекая посторонних переменных (что более интересно), можно делать так:
если (X<Y) то {X присвоить (X+Y)/2; Y присвоить 2*Y*(2*X-Y)} иначе {Y присвоить (X+Y)/2; X присвоить 2*X*(2*Y-X)}

Что непонятно - в минифорум.

Консультировал: Олег Владимирович
Дата отправки: 08.04.2007, 13:39
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Устинов С.Е. (Профессионал):

Здравствуйте, Leeryhomer!

Напишу алгоритм, будет нужно - переведете на необходимый язык (или напишите в личку - помогу).

1. Пусть a,b - углы треугольника. Будем считать, что они уже введены.
ЕСЛИ a+b<180 ТО
{
ВЫВЕСТИ \'Треугольник существует\'
ЕСЛИ (a=90) или (b=90) или (a+b=90) ТО ВЫВЕСТИ \'Треугольник прямоугольный\' ИНАЧЕ ВЫВЕСТИ \'Треугольник не прямоугольный\'
}
ИНАЧЕ ВЫВЕСТИ \'Треугольник не существует\'

2. Будем считать, что числа X и Y введены.
S:=(X+Y)/2
ЕСЛИ X<Y ТО
{
Y:=2*X*Y
X:=S
}
ИНАЧЕ
{
X:=2*X*Y
Y:=S
}

Удачи!

Консультировал: Устинов С.Е. (Профессионал)
Дата отправки: 08.04.2007, 13:41
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Митрофанов Артем Борисович:

Ответ перенесен как неверный в ветку форума для обсуждения сюда с комментариями Устинова С.
Перенесла Shapoklak

Консультировал: Митрофанов Артем Борисович
Дата отправки: 08.04.2007, 15:23
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Консультирует Чичерин Вадим Викторович (Профессионал):

Здравствуйте, Leeryhomer!
1. Даны углы A и B...
Если А + B < 180 то
{
C = 180 - A - И // находим третий угол
Если А = 90 или В = 90 или С = 90 то { треугольник прямоугольный }
иначе { треугольник не прямоугольный }
}
иначе
{
треугольник не существует
}
2.
A = ( X + Y ) / 2
В = 2*X*Y
Если X < Y то
{
X = A
Y = B
}
иначе
{
Y = A
X = B
}

Консультировал: Чичерин Вадим Викторович (Профессионал)
Дата отправки: 09.04.2007, 10:44
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 178167:

Здравствуйте, уважаемые эксперты!
Мне надо написать программу в qbasic, высчитать интеграл тремя способами
Вот что у меня получилось:
a0=3.056565
a1=-0.0227886
a2=-1.080304E-2
INPUT "Nijnyaya granica integrala:"; a
INPUT "Verhnyaya granica integrala:"; b
INPUT "Tochnost vichisleniya:"; E
INPUT "Kollichestvo intervalov:"; n1
'Formula srednih pryamougolnikov
n = 1
h = (b - a)
sp = h * (a2 * ((a + b) / 2) ^ 2 + a1 * ((a + b) / 2) + a0)
DO
n = 2 * n
h = (b - a) / n
s1 = sp
sp = 0
FOR i = 0 TO n - 1
sp = sp + (a2 * (a + h / 2 + i * h) ^ 2 + a1 * (a + h / 2 + i * h) + a0)
NEXT i
sp = sp * h
LOOP UNTIL ABS(sp - s1) / 3 < E OR n = n1
PRINT "Integral po formule srednih pryumougolnikov:"; sp
'formila trapecii
n = 1
h = (b - a)
st = (h / 2) * ((a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0))
DO
n = 2 * n
h = (b - a) / n
s1 = st
st = ((a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0))
FOR i = 1 TO n - 1
st = st + 2 * (a2 * (a + i * h) ^ 2 + a1 * (a + i * h) + a0)
NEXT i
st = st * (h / 2)
LOOP UNTIL ABS(st - sl) / 3 < E OR n = n1
PRINT "Integral po formule trapecii:"; st
'formula Simpsona `
n = 2
h = (b - a)
ss = (h / 3) * ((a2 * a ^ 2 + a1 * a + a0) + 4 * (a2 * ((a + b) / 2) ^ 2 + a1 * ((a + b) / 2) + a0) + (a2 * b ^ 2 + a1 * b + a0))
DO
n = 2 * n
h = (b - a) / n
s1 = ss
c = 4
x = a
ss = (a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0)
FOR i = 1 TO n - 1
x = x + h
ss = ss + c * (a2 * (a + i * h) ^ 2 + a1 * (a + i * h) + a0)
c = 6 - c
NEXT i
ss = ss * (h / 3)
LOOP UNTIL ABS(ss - sl) / 15 < E OR n = n1
PRINT "Integral po formule Simpsona:"; ss
End

При запуске программы, высчитывается только первый интеграл, а дальше программа останавливается даже без возможности выхода. При разбиении программы на три маленьких, второй и третий методы также не идут, а останавливаются после команд INPUT.
Подскажите, пожалуйста, в чем может быть ошибка
Заранее спасибо
Буду очень благодарна за ответ. Спасибо.

Дата отправки: 02.05.2010, 20:01
Вопрос задал: Ushastik1985 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Megaloman (Академик):

Здравствуйте, Ushastik1985.
Я обнаружил в Вашем коде ошибки (Вы перепутали l (эль) и 1 (единицу), плюс считаю более надёжным изменить условие Untill
Не проверял правильность, как Вы запрограммировали формулы, есть некоторые сомнения.
Было бы лучше, если бы Вы явно написали Вашу подинтегральную функцию и, соответственно,
Формулу прямоугольников, Формулу трапеций, Формула Симпсона, чтобы не искать их по справочникам,
чтобы можно было тщательнее проверить Ваш код
Ниже Ваш слегка подправленный код

Код :
a0 = 3.056565
a1 = -.0227886#
a2 = -1.080304E-02

INPUT "Нижняя граница интеграла:"; a
INPUT "Верхняя граница интеграла:"; b
INPUT "Точность вычисления:"; E
INPUT "Количество интегралов:"; n1

' ---------------------------------------------------------------------
'Формула средних прямоугольников

n = 1
h = (b - a)
sp = h * (a2 * ((a + b) / 2) ^ 2 + a1 * ((a + b) / 2) + a0)

DO
  n = 2 * n
  h = (b - a) / n
  s1 = sp
  sp = 0

  FOR i = 0 TO n - 1
    sp = sp + (a2 * (a + h / 2 + i * h) ^ 2 + a1 * (a + h / 2 + i * h) + a0)
  NEXT i

  sp = sp * h

LOOP UNTIL ABS(sp - s1) / 3 < E OR n >= n1   ' !!! Надёжнее >=

PRINT "Интеграл по формуле средних прямоугольников:"; sp

' ---------------------------------------------------------------------

'Формула трапеции
n = 1
h = (b - a)
st = (h / 2) * ((a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0))

DO
  n = 2 * n
  h = (b - a) / n
  s1 = st
  st = ((a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0))

  FOR i = 1 TO n - 1
    st = st + 2 * (a2 * (a + i * h) ^ 2 + a1 * (a + i * h) + a0)
  NEXT i
  st = st * (h / 2)
LOOP UNTIL ABS(st - s1) / 3 < E OR n >= n1     ' !!! Ошибка было sl а надо s1

PRINT "Интеграл по формуле трапеции:"; st

' ---------------------------------------------------------------------

'Формула Симпсона

n = 2
h = (b - a)

ss = (h / 3) * ((a2 * a ^ 2 + a1 * a + a0) + 4 * (a2 * ((a + b) / 2) ^ 2 + a1 * ((a + b) / 2) + a0) + (a2 * b ^ 2 + a1 * b + a0))

DO
  n = 2 * n
  h = (b - a) / n
  s1 = ss
  c = 4
  x = a
  ss = (a2 * a ^ 2 + a1 * a + a0) + (a2 * b ^ 2 + a1 * b + a0)

  FOR i = 1 TO n - 1
   x = x + h
   ss = ss + c * (a2 * (a + i * h) ^ 2 + a1 * (a + i * h) + a0)
   c = 6 - c
  NEXT i

  ss = ss * (h / 3)

LOOP UNTIL ABS(ss - s1) / 15 < E OR n >= n1     ' !!! Ошибка было sl а надо s1

PRINT "Интеграл по формуле Симпсона:"; ss

END



Однако, на мой взгляд, задачу было бы правильнее решить в виде последовательного вызова функций для каждого метода, причём каждая функция при вычислении подинтегральной функции могла бы обращаться к оформиленной общей функции для трёх методов, например

Код :
FUNCTION PodInt (x)
   ' Код для вычисления подинтегральной функции
   PodInt= ..................................
END FUNCTION


Если приведёте все формулы, с удовольствием их перепрограммирую так, как я считаю нужным

Консультировал: Megaloman (Академик)
Дата отправки: 02.05.2010, 21:34
Рейтинг ответа:

НЕ одобряю 0 одобряю!

Консультация # 112757:

Дана действительная квадратная матрица порядка n. Найти наибольшее из значений элементов, расположенных в заштрихованной( тоесть где единицы) части матрицы по рисунку

0 0 0 0 1
0 0 0 1 1
0 0 1 1 1
0 0 0 1 1
0 0 0 0 1
сделать в pascal 7.0

Дата отправки: 07.12.2007, 06:23
Вопрос задал: Николаев Денис
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Модератор):

Здравствуйте, Николаев Денис!

Смотрте приложение.
Удачи!

Приложение:

Консультировал: Зенченко Константин Николаевич (Модератор)
Дата отправки: 07.12.2007, 14:35
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!



В избранное