Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задача / 16 сообщений из 16, страница 1 из 1
17.01.2008, 18:07
    #35069561
Bella_8686
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Привет всем!
я до тех не понимала решать задачу!
У меня не получается!!!!
Подскажите пожалуйста!!!
Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.
Заранее спасибо!!!
...
Рейтинг: 0 / 0
17.01.2008, 18:09
    #35069567
Нахлобуч
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Где именно и что именно непонятно?
...
Рейтинг: 0 / 0
17.01.2008, 20:00
    #35069755
Bella_8686
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
понимаю устно, а решу задачу-не получается!
...
Рейтинг: 0 / 0
18.01.2008, 09:03
    #35070343
mikolas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
if x<>y then
if x>y then x:=0.5*(x+y)
else y:=0.5*(x+y);
if x<>z then
if x>z then x:=0.5*(x+z)
else z:=0.5*(x+z);
if y<>z then
if y>z then y:=0.5*(y+z)
else z:=0.5*(y+z);
...
Рейтинг: 0 / 0
18.01.2008, 09:06
    #35070346
mikolas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
вру, это для наибольшего
для наименьшего
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if x<>y then
if x<y then x:= 0 . 5 *(x+y) 
else y:= 0 . 5 *(x+y);
if x<>z then
if x<z then x:= 0 . 5 *(x+z) 
else z:= 0 . 5 *(x+z);
if y<>z then
if y<z then y:= 0 . 5 *(y+z) 
else z:= 0 . 5 *(y+z);
...
Рейтинг: 0 / 0
18.01.2008, 09:24
    #35070383
474
474
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
mikolasвру, это для наибольшего
для наименьшего
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
if x<>y then
if x<y then x:= 0 . 5 *(x+y) 
else y:= 0 . 5 *(x+y);
if x<>z then
if x<z then x:= 0 . 5 *(x+z) 
else z:= 0 . 5 *(x+z);
if y<>z then
if y<z then y:= 0 . 5 *(y+z) 
else z:= 0 . 5 *(y+z);


Без выравнивания очень непонятно и, по-моему, у вас ошибка.
...
Рейтинг: 0 / 0
18.01.2008, 10:21
    #35070559
mikolas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if x<>y then
  if x<y then 
     x:= 0 . 5 *(x+y) 
  else 
     y:= 0 . 5 *(x+y);
if x<>z then
  if x<z then 
     x:= 0 . 5 *(x+z) 
  else 
     z:= 0 . 5 *(x+z);
if y<>z then
   if y<z then 
     y:= 0 . 5 *(y+z) 
   else 
     z:= 0 . 5 *(y+z);
тоже самое с выравниванием, ошибок не нашел, удачи!
...
Рейтинг: 0 / 0
18.01.2008, 11:55
    #35070916
Задача
Bella_8686Привет всем!
я до тех не понимала решать задачу!
У меня не получается!!!!
Подскажите пожалуйста!!!
Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.
Заранее спасибо!!!
Я думаю так (решение "в лоб"):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
var x,y,z,r : real;

begin
...

  if x=y or x=z or y=z then
   begin
    return;
   end;

  r:=x+y+z;

  if r <  1  then
    begin
      if x < y and x < z then
         x:= 0 . 5  * (y+z);
      if y < z and y < x then
         y:= 0 . 5  * (x+z);
      if z < y and z < x then
         z:= 0 . 5  * (x+y);
    end;
  else
    begin
      if x < y then
        x:= 0 . 5  * (y+z);
      else
        y:= 0 . 5  * (x+z)
    end;
end.
...
Рейтинг: 0 / 0
18.01.2008, 14:08
    #35071489
474
474
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
mikolas
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
if x<>y then
  if x<y then 
     x:= 0 . 5 *(x+y) 
  else 
     y:= 0 . 5 *(x+y);
if x<>z then
  if x<z then 
     x:= 0 . 5 *(x+z) 
  else 
     z:= 0 . 5 *(x+z);
if y<>z then
   if y<z then 
     y:= 0 . 5 *(y+z) 
   else 
     z:= 0 . 5 *(y+z);
тоже самое с выравниванием, ошибок не нашел, удачи!

Давайте я поясню, что имею в виду.
Рассмотрим первую часть условия.
Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других;
x=0.1
y=0.2
z=0.3

Проверяем на условие.
x+y+z=0.6, что < 1

Ищем наименьшее из этих чисел. Это x. Его надо заменить на (0.2+0.3) * 0.5. Все, больше ничего делать не надо. Други числа заменять не нужно.

то есть должно получиться в итоге: x=0.25, y=0.2, z=0.3
Проверьте, что получится после вашего алгоритма. У меня получилось x=0.225, y=0.25, z=0.3
...
Рейтинг: 0 / 0
18.01.2008, 14:52
    #35071668
mikolas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Действительно, первое условие недоглядел, теперь догнал, пятница-развратница :)
...
Рейтинг: 0 / 0
18.01.2008, 15:29
    #35071814
mikolas
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Такой вариант, я думаю, правильный.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
if (x+y+z)< 1  then
  if (x<>y) and (x<>z) and (y<>z) then
  begin
    if (x<y) and (x<z) then 
    begin
      x= 0 . 5 *(y+z);
      return;
    end;
    if (y<x) and (y<z) then
    begin
      y= 0 . 5 *(x+z);
      return;
    end;
    if (z<x) and (z<y) then
    begin
      z= 0 . 5 *(x+y);
      return;
    end;
  end;
...
Рейтинг: 0 / 0
18.01.2008, 16:15
    #35072000
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
n - список где лежат xyz
Код: plaintext
1.
2.
3.
4.
5.
6.
n = [ 1 ,  2 ,  3 ]
no =  n.index(min(n if sum(n) <  1  else n[ 1 : 2 ]))
other = list(n)
del other[no]
n[no] = sum(other) /  2 
print n
...
Рейтинг: 0 / 0
18.01.2008, 16:19
    #35072024
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
Слегка зашибся
Код: plaintext
1.
2.
3.
4.
5.
6.
n = [- 1 ,  3 , - 2 ]
no =  n.index(min(n if sum(n) <  1  else n[ 1 : 3 ]))
other = list(n)
del other[no]
n[no] = sum(other) /  2 
print n
...
Рейтинг: 0 / 0
18.01.2008, 17:11
    #35072251
474
474
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
beluginСлегка зашибся
Код: plaintext
1.
2.
3.
4.
5.
6.
n = [- 1 ,  3 , - 2 ]
no =  n.index(min(n if sum(n) <  1  else n[ 1 : 3 ]))
other = list(n)
del other[no]
n[no] = sum(other) /  2 
print n


По-моему, ваш первый вариант был более правильным. Надо заменить меньшее из х и у, а вы ищете минимум среди х..z
...
Рейтинг: 0 / 0
18.01.2008, 18:20
    #35072492
belugin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
474
По-моему, ваш первый вариант был более правильным. Надо заменить меньшее из х и у, а вы ищете минимум среди х..z

В питоне массив начинается с нуля а второй индекс в выборке их массива - первый не попадающий элемент
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Python  2 . 5 . 1  (r251: 54863 , Apr  18   2007 ,  08 : 51 : 08 ) [MSC v. 1310   32  bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> x=[ 1 , 2 , 3 ]
>>> x[ 1 : 2 ]
[ 2 ]
>>> x[ 1 : 3 ]
[ 2 ,  3 ]
...
Рейтинг: 0 / 0
18.01.2008, 21:24
    #35072800
Bella_8686
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Задача
привет,474!
спасибо за то, что объяснял мне!Сначала не понимаю, потом поняла! вот решила задачу, и получается! большое спасибо!
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задача / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]