Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Си

Автор: Hunt666 1.03.2007 2:51

Код

#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 1.03.2007 2:59

  scanf("%d",x);
scanf("%d",y);

? blink.gif

Может, лучше
  scanf("%f",&x);
scanf("%f",&y);
сделать?

Автор: Hunt666 1.03.2007 3:05

конечно это я забыл но проблема не в этом (& поставил ничего не изменилось)

Автор: volvo 1.03.2007 3:14

Ты на формат смотрел? Как X, Y описываются, и как ты их вводишь? Целые с Вещественными не путай!

Автор: Hunt666 1.03.2007 3:27

да спасибо почти сработало
теперь если допустим ввести 0 0.6 пишет "не попадает" вместо "на границе"

Автор: volvo 1.03.2007 3:44

А ты уверен, что 0.6 после того, как ты его ввел, в переменную записалось тоже как 0.6, а не как 0.600001, например? Прогони программу пошагово, или хотя бы сделай сразу после ввода данных

printf("Введено: X = %15.12f, Y = %15.12f\n", x, y);

чтобы проверить...

Автор: aleksandr-l17 15.03.2007 3:00

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