Помощь - Поиск - Пользователи - Календарь
Полная версия: Помогите с задачками
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
K0ndER
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).
мисс_граффити
М
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...


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

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

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

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

LexaKazanskij
Бывает lol.gif
K0ndER
Правильно я решил?

 {Даны числа а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
Даже если сам алгоритм и правильный, возникает вопрос: а ты уверен, что сравнение вещественных чисел через "=" даст тебе правильный результат? Я вот не уверен...
K0ndER
Ну а как правильно по Вашему?
volvo
Правильно - сравнивать вещественные числа с некоторой точностью... Если бы ты соизволил посмотреть на форуме хотя бы несколько тем, посвященных работе с Real/Double, увидел бы, что не так советуют делать:

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


а вот так:

var a, b: real;
const epsilon = 0.0001;
...
if abs(a - b) < epsilon then ...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.