Форум программистов, компьютерный форум CyberForum.ru

посчитать число точек, находящиеся внутри круга - C++

Восстановить пароль Регистрация
 
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
30.03.2010, 16:54     посчитать число точек, находящиеся внутри круга #1
Всем привет
Есть такое задание: посчитать число точек, находящиеся внутри круга радиусом r с центром в точке с координатами (1,1); координаты заданы массивами X(10), Y(10).

Все-бы то ничего, и задание понятно, но работа с классами... Что это я прочитал, толком ничего так и не понял, и как их правильно применять тоже.

Решил пока просто сделать прогу без классов, но и тут застрял....
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
 
int main()
 
{
 
   int i , j, x[10], y[10];
rand();
    double r, k;
 
    for (i=0; i<10; i++)
    {
 
x[i] = rand() % 9;
}
        for (j=0; j<10; j++)
        {
 
 
            y[j] = rand() % 9;
 
      }
 
 
    k=sqrt(x[i]*x[i]+y[j]*y[j]);
 
    cout <<"Vveite radius r";
    cin >>r;
 
   for (i = 0; i < 10; i++)
    {
        for (j=0; j<10; j++)
        {
    if (k>r) cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[j] <<" Za kolom ";
    if (k<r) cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[j] <<" V koli ";
        }
    }
cout<<k;
 
 
    return (0);
    //SYSTEM "PAUSE";
}
Оно выводит циклом (ну я сам туда его загнал), а как сделать вывод только один раз - проблема... Если кому не сложно - помогите, пожалуйста. А потом уже за классы возьмусь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2010, 16:54     посчитать число точек, находящиеся внутри круга
Посмотрите здесь:

вычислите количество точек с целочисленными координатами,находящиеся в круге C++
C++ Заменить символы, находящиеся внутри скобок, на символ "звездочка"
C++ Алгоритм поиска точек внутри плоской фигуры
Дано вещественное число A и целое число N. Вывести A в степени N (код внутри) C++
C++ Определить радиус и центр наибольшей окружности в области заданных точек, внутри которой нет точек
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,977
30.03.2010, 17:31     посчитать число точек, находящиеся внутри круга #2
я думаю должно быть как-то так: (код не проверял)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class Circule
{
   public:
     Circule()
     {
         initCircule(1,1,1);
     }
     Circule(int x, int y, int radius)
     {
        initCircule(x,y, radius);
     }
     bool isInCircule(int x, int y)
      {
        //делаем математику
         if()//точка поподает в круг 
          {
                 return true;
          }
           return false;
      }
   private:
   void initCircule(int x, int y)  
   {
       //инициализируем переменную (в вашем примере это "к"), в общем правельную формулу ставьте))
       val = sqrt(x*x+y*y)*radius; //повтарюсь - формула от балды!
   }
   int val;
}
 
void main()
{
   Circule c; //круг с началом координат 1.1 и радиусом 1
   Circule c1(10, 10, 5); // круг с началом координат 10.10 и радиусом 5  
   if(c.isInCircule(1,1))
   {
         //точка 1.1 - попадает в круг
   }
  else
   {
        //точка 1.1 не попадает в круг
   }
}
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
30.03.2010, 17:32  [ТС]     посчитать число точек, находящиеся внутри круга #3
l_a_m, огромное спасибо, но я думал с начала свое до ума довести, а потом уже за классы хвататься...
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,977
30.03.2010, 17:37     посчитать число точек, находящиеся внутри круга #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
29
30
31
32
33
34
35
36
37
38
int main()
 
{
 
   int x[10], y[10];
   
rand();
    double r, k;
 
    for (int i=0; i<10; i++)
    {
 
x[i] = rand() % 9;
y[i] = rand() % 9;
 }
 
    k=sqrt(x[i]*x[i]+y[j]*y[j]);
 
    cout <<"Vveite radius r";
    cin >>r;
 
   for (i = 0; i < 10; i++)
    {
    if (k>r) 
   {
   cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" Za kolom "; 
   }
   else
   { 
      cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" V koli ";
   }
    }
cout<<k;
 
 
    return (0);
    //SYSTEM "PAUSE";
}
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
30.03.2010, 20:08  [ТС]     посчитать число точек, находящиеся внутри круга #5
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
29
30
31
32
33
34
35
36
37
38
39
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
 
int main()
 
{
 
int x[10], y[10], i;
 
rand();
double r, k;
 
for (int i=0; i<10; i++)
{
 
x[i] = rand() %5;
y[i] = rand() %5;
}
 
k=sqrt((x[i]-1)*(x[i]-1)+(y[i]-1)*(y[i]-1));
 
cout <<"Vveite radius r";
cin >>r;
 
if (k>r)
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" Za kolom ";
}
else
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" V koli ";
}
 
cout<<"\nVidstan' vid tsentru do to4ku "<<k;
 
return (0);
}
Вот так Работает, спасибо. Теперь за классы....

Добавлено через 1 час 40 минут
Поскольку завтра сдавать, то решил делать "в лоб". Но все равно 2 ошибки:

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
 
 
class TPoint
{
    public:
    int x,y;
 
};
 
int main()
 
{
TPoint Points[10];
int x[10], y[10], i;
 
rand();
double r,k;
 
 
 
for (int i=0; i<10; i++)
{
 
x[i] = rand() %10;
y[i] = rand() %10;
 
}
 
Points[0].x=x[i]; Points[0].y=y[i];
 
 
 
 
cout <<"Vveite radius r= ";
cin >>r;
 
for (i=0; i<10; i++)
{
  x=Points[i].x[i];
  y=Points[i].y[i];
 
k=sqrt((x[i]-1)*(x[i]-1)+(y[i]-1)*(y[i]-1));
}
if (k>r)
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" Za kolom ";
}
else
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" V koli ";
}
 
cout<<"\nVidstan' vid tsentru do to4ku= "<<k<<"\n";
 
system("PAUSE");
return (0);
}
ему не нравится x=Points[i].x[i];
y=Points[i].y[i];
И чего ему надо?
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,977
31.03.2010, 09:50     посчитать число точек, находящиеся внутри круга #6
всё правильно :-) у Вас же

C++
1
2
3
4
5
class TPoint
{
    public:
    int x,y;
};
это переменные, а не массив переменных. т.е. Вы не можете обращаться так: x=Points[i].x[i]; а правильное обращение будет выглядеть так: x=Points[i].x; но это не совсем правильный вариант :-) Лучше опешите класс круг, который будет принимать структуру точка - это будет более красиво выглядеть :-)
а ещё мне кажется что у Вас ошибка в коде:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
for (i=0; i<10; i++)
{
  x=Points[i].x[i];
  y=Points[i].y[i];
 
k=sqrt((x[i]-1)*(x[i]-1)+(y[i]-1)*(y[i]-1)); 
/* здесь у вас значение "к" - берётся  только для последней точки. 
Если я правильно помню, то Вам нужно пересчитывать значение 
"к" для каждой точки, а не только для 9-й. 
Ещё заметил, возможно Вы хотели сделать так: k=sqrt((x[i-1])*(x[i-1])+(y[i-1])*(y[i-1]));
это Вы ссылаетесь на i-1-й элемент массива, а когда вы делаете y[i]-1, то вы от значения 
в массиве y[i] вычитаете 1*/
}
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
31.03.2010, 20:10  [ТС]     посчитать число точек, находящиеся внутри круга #7
l_a_m, огромное спасибо, еще внес поправки. И немного переделал, чтоб пока считало только для 1-й, то есть убрал цикл в конце. Но все-равно ему еще что-то не нравится, и именно в
x = Points[i].x[i];
y = Points[i].y[i];

Вот код:
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
 
 
class TPoint
{
    public:
    int x,y;
 
};
 
int main()
 
{
TPoint Points[10];
int x[10], y[10], i;
 
rand();
double r,k;
 
 
 
for (int i=0; i<10; i++)
{
 
x[i] = rand() %10;
y[i] = rand() %10;
 
}
 
Points[i].x; Points[i].y;
 
 
 
 
cout <<"Vveite radius r= ";
cin >>r;
 
for (i=0; i<10; i++)
{
  x = Points[i].x[i];
  y = Points[i].y[i];
 
 
  k=sqrt((x[i-1])*(x[i-1])+(y[i-1])*(y[i-1]));
 
}
 
if (k>r)
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" Za kolom ";
}
else
{
cout <<" \nTo4ka z koord x= "<< x[i] <<" y= "<< y[i] <<" V koli ";
}
 
cout<<"\nVidstan' vid tsentru do to4ku= "<<k<<"\n";
 
system("PAUSE");
return (0);
}
Конечно, корректнее было бы описать круг, но у меня уже нету сил... Сдавать срочно надо. И мне еще кровь из носу, но на пятницу надо сделать то же самое (прогу), только со структурами или списками. Лучше списками.
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
01.04.2010, 23:47  [ТС]     посчитать число точек, находящиеся внутри круга #8
Ну неужели никто не знает?
Maxim Prishchepa
Эксперт С++
 Аватар для Maxim Prishchepa
1762 / 985 / 60
Регистрация: 29.03.2010
Сообщений: 2,977
02.04.2010, 10:31     посчитать число точек, находящиеся внутри круга #9
Повторюсь, у Вас объект класса Points содержит переменные x и y, а не массив переменных x[] и y[]; т.е. Вы не можете обращаться к переменной, как к массиву переменных. Правильный вариант Points[i].x !!!(без ни каких скобок возле x и y)!!! и ещё не понятна строка 33, в ней нет ни какого смысла - удалите её, да бы глаза не муляла :-)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2010, 10:55     посчитать число точек, находящиеся внутри круга
Еще ссылки по теме:

C++ Отпечатать расстояния от начала координат для тех точек,которые принадлежат кругу с заданным радиусом, и число таких точек.
Задать массив точек, и определить радиус и центр окружности, на которой лежит наибольшее число точек C++
C++ Найти число точек, находящихся внутри круга радиусом r с центром в заданной точке

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

Или воспользуйтесь поиском по форуму:
MR_Andrew
12 / 12 / 2
Регистрация: 19.12.2009
Сообщений: 106
02.04.2010, 10:55  [ТС]     посчитать число точек, находящиеся внутри круга #10
Цитата Сообщение от l_a_m Посмотреть сообщение
Повторюсь, у Вас объект класса Points содержит переменные x и y, а не массив переменных x[] и y[]; т.е. Вы не можете обращаться к переменной, как к массиву переменных. Правильный вариант Points[i].x !!!(без ни каких скобок возле x и y)!!! и ещё не понятна строка 33, в ней нет ни какого смысла - удалите её, да бы глаза не муляла :-)
Хорошо, спасибо. вечером еще покручу. и надо браться за списки, тут уже покруче будет... Или хотя-бы структуры.
Yandex
Объявления
02.04.2010, 10:55     посчитать число точек, находящиеся внутри круга
Ответ Создать тему
Опции темы

Текущее время: 14:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru