Форум: Форум C++Разное
Новые темы: 00
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Туплю
 
 автор: Miha_drinking_bout   (02.10.2010 в 13:47)   письмо автору
42.5 Кб
 
 

задание в прилагаемом файле. Пытаюсь решить так:
#include<stdio.h>
#include<math.h>

main()
{
      float x,y,z,r;
      printf("vvedite x,y\n");

      scanf("%f%f",&x,&y);
      r=(x*x)+(y*y);
      r=sqrt(r);
      if (y<0||r>1||r<(-1)||r<0.027)//проверка на принадлежность области
      {
              double z;
      z=(x*(-1))-1;
      z=sqrt(z);
              printf("ne prinadlejit u=%f",z); return 0;
              }
             
             
              else
              {
               x=(x*x)-1;
              printf("Prinadlejit u=%f",x);
              return 0;
              }
      
}


Если принадлежит области - выдает правильный результат, ну а нет - то белиберда какая то. Понимаю, что где то с типами переменных затупил, а вот где не пойму. Компилирую GCC4.5.
Объясните пожалуйста в чем ошибка?

  Ответить  
 
 автор: Miha_drinking_bout   (09.11.2010 в 17:19)   письмо автору
6.4 Кб
 
   для: Miha_drinking_bout   (02.10.2010 в 13:47)
 

Решил таки. Действительно затупил. Для вычисления корня передавал отрицательное значение.
Теперь рабочий вариант выглядит так:
#include<stdio.h>
#include<math.h>

main()
{
      float x,y,z,r;
      printf("vvedite x,y\n");

      scanf("%f%f",&x,&y);
      r=(x*x)+(y*y);
      r=sqrt(r);
      if (y<0||r>1||r<(-1)||r<0.027)//проверка на принадлежность области
      {
              double z;
      z=fabs(x-1);
      z=sqrt(z);
              printf("ne prinadlejit u=%f",z); return 0;
              }
             
             
              else
              {
               x=(x*x)-1;
              printf("Prinadlejit u=%f",x);
              return 0;
              }
      
}

z=(x*(-1))-1; заменил на z=fabs(x-1);

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования