1 Востаннє редагувалося Torbins (29.10.2014 22:07:52)

Тема: Обчислення виразу залежно від умов

program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils,
  Math;

var
  a, b, c, d, x, y, z : Real;
  v : Real;
begin
  { TODO -oUser -cConsole Main : Insert code here }
  Write('a='); Readln(a);
  Write('b='); Readln(b);
  Write('c='); Readln(c);
  Write('d='); Readln(d);
  Write('x='); Readln(x);
  Write('y='); Readln(y);
  Write('z='); Readln(z);
begin
  if ((sqr(c) <= (sqr(x) + sqr(y) + sqr(z))) and
     ((sqr(x) + sqr(y) + sqr(z)) <= sqr(d)) ) then
      V := (a / (max(x , max(y,z))));
   end;
    begin
      if ((sqr(x) + sqr(y) + sqr(z)) <= sqr(c) ) then
          V := (b / (min(x , min(y,z))))
      else
          V := (a + b)/2;
    end;
    Write(V);
    Readln;
end.

2

Re: Обчислення виразу залежно від умов

Додайте тег code і опис того, що вважаєте проблемою. До того - проблема сидить у вас перед комп'ютером.

Подякували: Master_Sergius1

3 Востаннє редагувалося Torbins (29.10.2014 22:19:57)

Re: Обчислення виразу залежно від умов

Ошибки в коді немає

program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
  SysUtils,
  Math;

var
  a, b, c, d, x, y, z: Real;
  V: Real;

begin
  Write('a=');
  Readln(a);
  Write('b=');
  Readln(b);
  Write('c=');
  Readln(c);
  Write('d=');
  Readln(d);
  Write('x=');
  Readln(x);
  Write('y=');
  Readln(y);
  Write('z=');
  Readln(z);

  if (sqr(c) <= sqr(x) + sqr(y) + sqr(z)) and
    (sqr(x) + sqr(y) + sqr(z) <= sqr(d)) 
  then
    V := a / max(x, max(y, z));

  if sqr(x) + sqr(y) + sqr(z) <= sqr(c) then
    V := b / min(x, min(y, z))
  else
    V := (a + b) / 2;

  Write(V);
  Readln;
end.

4

Re: Обчислення виразу залежно від умов

в мене перша умова не працює

5

Re: Обчислення виразу залежно від умов

vasyl_2013 написав:

в мене перша умова не працює

Будь ласка, конкретно опишіть, чому ви так вирішили: що саме ви очікуєте, а що отримуєте. Ми ж не телепати.

6

Re: Обчислення виразу залежно від умов

коли я вводив дані для першої умови воно її пропускає і переходить до третьої умови

7

Re: Обчислення виразу залежно від умов

vasyl_2013
При правильних значеннях змінних її не пропускає, але значення V потім усе одно затирається. Самі погляньте: умови у вас побудовані так, що незалежно від виконання першого обчислення V, завжди виконується друге або третє.

8

Re: Обчислення виразу залежно від умов

Ви не відповідаєте на моє питання - дуже хочеться відповісти "ну то вводьте дані для першої умови".
Будь ласка, опишіть проблему так, щоб її можна було відтворити (і зрозуміти, що це дійсно проблеблема). Я поки що не розумію, в чому проблема - у мене перша умова спрацьовує; швидше за все, вона спрацьовує не так, як ви хочете, але я з вас не можу цього витягнути.

9

Re: Обчислення виразу залежно від умов

koala
Поправив повідомлення Stanislav Stecenko, щоб видніше було.

10

Re: Обчислення виразу залежно від умов

Ви гадаєте, я того не бачу? Але я не можу сказати, чи хоче того автор, а він ігнорує мої прохання сказати, чого він очікує. Може, він так і хотів - звідки ви знаєте?

11

Re: Обчислення виразу залежно від умов

я хочу щоб в мене програма обраховувала першу умову

12

Re: Обчислення виразу залежно від умов

Я додав тестові повідомлення в обидві гілки першого if: http://ideone.com/Vis4oe
Як бачите, ПЕРША УМОВА ОБРАХОВУЄТЬСЯ - одне з повідомлень виводиться, залежно від введених данних. А вам треба щось інше, тільки ви цього не хочете сказати

13

Re: Обчислення виразу залежно від умов

Прикольний сервіс. Мій варіант демонстрації роботи алгоритму: http://ideone.com/4XdyxP

14

Re: Обчислення виразу залежно від умов

vasyl_2013, якщо ви все ще не здогадалися, чого ми від вас вимагаємо, то просто наведіть умову. Погодьтеся: дуже важко визначити, чи програма працює правильно, якщо невідомо, як програма має працювати, еге ж? Ну і приклад вхідних даних, який виявляє цю проблему, також наведіть.

15

Re: Обчислення виразу залежно від умов

koala
при ваших даних
а=1 в=2 с=3 d=40 x=5 y=6 z=7
тоді 3^2 <= 5^2 + 6^2 + 7^2 <= 40^2
а потім a/max(x,y,z)
1/7

16

Re: Обчислення виразу залежно від умов

vasyl_2013 написав:

koala
при ваших даних
а=1 в=2 с=3 d=40 x=5 y=6 z=7
тоді 3^2 <= 5^2 + 6^2 + 7^2 <= 40^2
а потім a/max(x,y,z)
1/7

І що з цього випливає?

17

Re: Обчислення виразу залежно від умов

випливає що V = 1/7 а не 1,5

18

Re: Обчислення виразу залежно від умов

vasyl_2013 написав:

випливає що V = 1/7 а не 1,5

І яким чином це суперечить умові?

19

Re: Обчислення виразу залежно від умов

по першій умові має бути 1/7
а воно викидає по третій умові 1,5

20 Востаннє редагувалося vasyl_2013 (30.10.2014 21:10:54)

Re: Обчислення виразу залежно від умов

{a/max(x,y,z),   якщо     c^2 <= x^2 + y^2 + z^2 <= d^2
{b/min(x,y,z),    якщо     x^2 + y^2 + z^2 <= c^2
{v=(a+b)/2,      інший випадок
це приклад