powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задача
16 сообщений из 16, страница 1 из 1
Задача
    #35069561
Bella_8686
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем!
я до тех не понимала решать задачу!
У меня не получается!!!!
Подскажите пожалуйста!!!
Если сумма трех попарно различных действительных чисел x, y, z меньше единицы, то наименьшее из этих трех чисел заменить полусуммой двух других; в противном случае заменить меньшее из x и y полусуммой двух оставшихся значений.
Заранее спасибо!!!
...
Рейтинг: 0 / 0
Задача
    #35069567
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где именно и что именно непонятно?
...
Рейтинг: 0 / 0
Задача
    #35069755
Bella_8686
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понимаю устно, а решу задачу-не получается!
...
Рейтинг: 0 / 0
Задача
    #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
Задача
    #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
Задача
    #35070383
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
Задача
    #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
Задача
    #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
Задача
    #35071489
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
Задача
    #35071668
mikolas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, первое условие недоглядел, теперь догнал, пятница-развратница :)
...
Рейтинг: 0 / 0
Задача
    #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
Задача
    #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
Задача
    #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
Задача
    #35072251
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
Задача
    #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
Задача
    #35072800
Bella_8686
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет,474!
спасибо за то, что объяснял мне!Сначала не понимаю, потом поняла! вот решила задачу, и получается! большое спасибо!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Задача
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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