Помощь - Поиск - Пользователи - Календарь
Полная версия: Си
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ада и другие языки
Hunt666
Код

#include<stdio.h>
#include<math.h>
void main(void)
{
float n,x,y;
  printf("Введите х и у через пробел  \n");
  scanf("%d",x);
  scanf("%d",y);
  n=x*x+y*y;
  if (sqrt(n)<1 && y>0 && y<0.6)
  printf("попадает\n");
  else
  if (sqrt(n)>1 || y<0 || y>0.6  )
   printf("не попадает\n");
   else
     printf("на границе\n");
  
}

по условиям вроде бы все прально но почему точка все время попадает в область?
volvo
  scanf("%d",x);
scanf("%d",y);

? blink.gif

Может, лучше
  scanf("%f",&x);
scanf("%f",&y);
сделать?
Hunt666
конечно это я забыл но проблема не в этом (& поставил ничего не изменилось)
volvo
Ты на формат смотрел? Как X, Y описываются, и как ты их вводишь? Целые с Вещественными не путай!
Hunt666
да спасибо почти сработало
теперь если допустим ввести 0 0.6 пишет "не попадает" вместо "на границе"
volvo
А ты уверен, что 0.6 после того, как ты его ввел, в переменную записалось тоже как 0.6, а не как 0.600001, например? Прогони программу пошагово, или хотя бы сделай сразу после ввода данных
printf("Введено: X = %15.12f, Y = %15.12f\n", x, y);

чтобы проверить...
aleksandr-l17
Теперь этой прогой занимаюсь я ! КОНКРЕТНЫЙ БАКЛАН-ПРОГРАМИСТ Александр !
По ходу дела он действительно заместо 0.6 сохранил 0.60000001 !!! И чё делать ??? Кто мне может помочь ? Товарищи суровые програмисты сделайте пжалуйста! С меня пиво, ну или на крайняк просто спасибо скажу!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.