Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Помогите с задачками

Автор: K0ndER 16.09.2007 23:04

1. Даны числа а,b,с,d,e,f. Напечатать координаты точки пересечения прямых, описываемых уравнениями a*х+b*y=c и d*х+e*y=f, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.

2. Дана функция 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.

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

Автор: мисс_граффити 16.09.2007 23:19

М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...


2. Что не получается?
Свои мысли и попытки решить - в студию.

Автор: LexaKazanskij 17.09.2007 0:09

Вопрос по поводу третьего (как найти среднее геометрическое) :
Надо каждое положительное перемножить и из этого вычислить корень степени количества положительных? wacko.gif

 ! 
тему переименуй, иначе она будет закрыта


Автор: LexaKazanskij 17.09.2007 1:21

Я не понял: это я создал тему? blink.gif

М
виноват, обращение к автору темы smile.gif


Автор: LexaKazanskij 17.09.2007 1:56

Бывает lol.gif

Автор: K0ndER 21.09.2007 22:01

Правильно я решил?

 {Даны числа а1,b1,с1,а2,b2,с2. Напечатать координаты точки пересечения прямых, описываемых уравнениями a1*х+b1*y=c1 и a2*х+b2*y=c2, либо сообщить, что эти прямые совпадают, не пересекаются или вовсе не существуют.}

Program Intersection;
Uses Crt;
Var a1, b1, c1, {коэффициенты уравнения первой прямой}
a2, b2, c2, {коэффициенты уравнения второй прямой}
x, y : Real; {координаты точки пересечения }
Test, NTest : Integer;
BEGIN
ClrScr; {очистка экрана}
Write('Введите количество тестов : ');
ReadLn(NTest);
For Test := 1 to NTest do {цикл по всем тестам задачи}
begin
Write('Тест ', Test, '. Введите a1, b1, c1 : ');
ReadLn( a1, b1, c1);
Write(' Введите a2, b2, c2 : ');
ReadLn( a2, b2, c2);
WriteLn; Write('О т в е т : ');
If ( (a1=0) and (b1=0) ) or ( (a2=0) and (b2=0) )
then WriteLn( 'это не прямая (прямые). ' )
else
if (a1*b2=a2*b1) and (a1*c2=a2*c1) {условие совпадения}
then WriteLn( 'прямые совпадают.' )
else
if a1*b2 = a2*b1 {условие параллельности}
then WriteLn('прямые параллельны.')
else begin x:=(c1*b2-c2*b1)/(b1*a2-b2*a1);
y:=(c2*a1-c1*a2)/(b1*a2-b2*a1);
WriteLn('координаты точки пересечения :',
' x = ', x : 5 : 2 , ', y = ', y : 5 : 2);
end; WriteLn
end;
ReadLn
END.

Автор: volvo 21.09.2007 22:10

Даже если сам алгоритм и правильный, возникает вопрос: а ты уверен, что сравнение вещественных чисел через "=" даст тебе правильный результат? Я вот не уверен...

Автор: K0ndER 21.09.2007 23:27

Ну а как правильно по Вашему?

Автор: volvo 21.09.2007 23:33

Правильно - сравнивать вещественные числа с некоторой точностью... Если бы ты соизволил посмотреть на форуме хотя бы несколько тем, посвященных работе с Real/Double, увидел бы, что не так советуют делать:

var a, b: real;
...
if a = b then ...


а вот так:

var a, b: real;
const epsilon = 0.0001;
...
if abs(a - b) < epsilon then ...