Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 20.10.2019
Сообщений: 3
1

Меньшее из двух чисел заменить их полусуммой, а большее – их удвоенным произведением

20.10.2019, 12:49. Просмотров 1057. Ответов 2
Метки нет (Все метки)


Написала программу по задаче: Даны действительные числа x, y (x ( y). Меньшее из этих двух чисел заменить их полу суммой, а большее – их удвоенным произведением.
При проверке значений х>у, х<у программа работает правильно, но при х=у, вместо того, чтобы написать ответа нет, программа считает по формуле. Прошу помочь найти ошибку
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
    float x,y;
    printf("\n Input two values:x,y\n");
    scanf("%f%f",&x,&y);
    switch(x<y)
    {
        case 1:{x=(x+y)/2; y=2*x*y;}break;
        case 0:{x=2*x*y;y=(x+y)/2;}break;
        default: printf("There is no answer \n");
    }
    printf("\n x=%f y=%f",x,y);
    getch();
    return 0;  
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.10.2019, 12:49
Ответы с готовыми решениями:

Большее из двух чисел заменить их полусуммой, а меньшее удвоенным произведением
Даны два числа. Большее из этих двух чисел заменить их полусуммой, а меньшее удвоенным...

Меньшее из двух чисел заменить их полусуммой, а большее – их удвоенным произведением
Даны действительные числа x,y. Меньшее из этих двух чисел заменить их полусуммой, а большее – их...

Разветвляющиеся алгоритмы: меньшее из двух чисел заменить их полусуммой, а большее – удвоенным произведением
Даны действительные числа Х и У (Х¹У). Меньшее из этих двух чисел заменить их полу суммой, а...

Большее из данных чисел заменить их полусуммой, а меньшее удвоенным произведением
2 написать проги разветвляющей структуры используя IF даны 2 числа. большее из этих чисел...

__________________
Помогаю в написании студенческих работ здесь.
2
Продавец времени
4917 / 2694 / 620
Регистрация: 12.03.2015
Сообщений: 13,068
20.10.2019, 13:04 2
Цитата Сообщение от Майкрофт Посмотреть сообщение
Даны действительные числа x, y (x ( y). Меньшее из этих двух чисел заменить их полу суммой, а большее – их удвоенным произведением.
В условии нет switch-case.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
#include <conio.h>
 
int main()
{
  float x, y;
  printf("\n Input two values:x,y\n");
  scanf("%f%f", &x, &y);
  
  if (x == y) printf("There is no answer \n");
  else
  {
    if (x < y) printf("\n x = %f y = %f", (x + y) / 2, 2 * x * y); 
    else       printf("\n x = %f y = %f", 2 * x * y, (x + y) / 2); 
  }
 
  getch();
  return 0;
}
0
196 / 230 / 33
Регистрация: 29.03.2019
Сообщений: 657
20.10.2019, 14:03 3
Лучший ответ Сообщение было отмечено Майкрофт как решение

Решение

Цитата Сообщение от Майкрофт Посмотреть сообщение
Прошу помочь найти ошибку
Ошибка в логике алгоритма. Ваш алгоритм выглядит так: если x < y то делать это, во всех остальных случаях делать то. Т.е. если вы намерены использовать ветвление построением таблицы переходов (switch/case), то в case 0 надо добавить еще это:
C
1
2
3
4
switch (y > x) {
  case 1: ...;
  case 0: ...; /* вот здесь будет то что вы ождиали в default: */
}
Добавлено через 4 минуты
Кликните здесь для просмотра всего текста
C
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
#include <stdio.h>
 
int main(int argc, char ** argv)
{
  float x, y;
  printf("\n Input two values:x,y\n");
  scanf("%f%f", &x, &y);
  switch(x < y) {
    case 1: {
      x = (x + y) / 2;
      y = 2 * x * y;
      break;
    }
    case 0: {
      switch (x > y) {
        case 1: {
          x = 2 * x * y;
          y = (x + y) / 2;
          break;
        }
        case 0: printf("There is no answer \n");
      }
    }
  }
  printf("\n x=%f y=%f",x,y);
  getchar();
  return 0;  
}


Добавлено через 7 минут
Майкрофт, еще ошибка в том что вы перезаписываете исходные значения, что сказывается на дальнейших вычислениях.

Добавлено через 11 минут
Кликните здесь для просмотра всего текста
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main(int argc, char ** argv)
{
  float x, y, tmpx, tmpy;
  printf("\n Input two values:x,y\n");
  scanf("%f%f", &x, &y);
  if (x != y) {
    tmpx = x;
    tmpy = y;
    x > y ? x = x * y * 2 : (y = x * y * 2);
    x > y ? y = (tmpx + tmpy) / 2 : (x = (tmpx + tmpy) / 2);
  }
  printf("\n x=%f y=%f",x,y);
  getchar();
  return 0;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2019, 14:03

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Даны числа. Меньшее из этих чисел заменить их полусуммой, а большее – их удвоенным произведением
Даны действительные числа x, y (x≠ y). Меньшее из этих двух чисел заменить их полусуммой, а большее...

Меньшее из двух чисел заменить их полусуммой, а большее -их удвоенным произведением
Даны действительные числа х,y (xy не равен Y) меньшее из этих двух чисел заменить их полусуммой, а...

Меньшее из двух чисел заменить их полусуммой, а большее — их удвоенным произведением
Нужна помощь в решении задачи С++ билдере, задача выглядит так- Даны действительные числа x, y ...

Большее из двух чисел заменить их полусуммой, а меньшее удвоенным произведением
Помогите пожалуйста составить простенький код для Visual Basic 6.0, к сожалению сама я не могу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.