Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C#] Найти окружность для множества точек, (условие ниже) 
:(
    Опции темы
Christina
Дата 6.4.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.4.2007
Где: Minsk

Репутация: нет
Всего: нет



(MICROSOFT VISIAL STUDIO)
Помогите, пожалуйста, решить задачу на языке С#. Дано множество точек на плоскости. Можно ли найти окружность с центром координат, на которой лежит наибольшее количество точек данного множества.

PM MAIL   Вверх
Дрон
Дата 6.4.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


Профиль
Группа: Участник Клуба
Сообщений: 3179
Регистрация: 29.12.2002
Где: Санкт-Петербург

Репутация: нет
Всего: 93



Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 



Это сообщение отредактировал(а) Дрон - 6.4.2007, 18:20


--------------------
Да. Именно так.
PM   Вверх
rasik
Дата 6.4.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.2.2006

Репутация: 2
Всего: 3



Центр окружности зафиксирован?
PM MAIL ICQ   Вверх
Christina
Дата 6.4.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.4.2007
Где: Minsk

Репутация: нет
Всего: нет



Код


//==================  class Сircumference
using System;
using System.Collections.Generic;
using System.Text;

namespace Geometry
{
    // Наследовать можно только от одного класса!
    class Сircumference : Figure
    {
        public Сircumference (double r)
        {
            base.FigureCount = 1;
            base.FigureParams = new double[1];
            base.FigureParams[0] = r;
            if (r > 0) base.reality = true;
                else base.reality = false;
        }

        public override double Area()
        {
            return Math.PI*base.FigureParams[0]*base.FigureParams[0];
        }
        public override double LengthOfBorder()
        {
            return 2*Math.PI*base.FigureParams[0];
        }
    }
}




M
Alexeis
Модератор: используйте подсветку кода http://forum.vingrad.ru/index.php?showtopic=126445


Это сообщение отредактировал(а) Alexeis - 6.4.2007, 23:39
PM MAIL   Вверх
Christina
  Дата 6.4.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.4.2007
Где: Minsk

Репутация: нет
Всего: нет



Пожалуйста, напишите код Сircumference. smile 
PM MAIL   Вверх
rasik
Дата 6.4.2007, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.2.2006

Репутация: 2
Всего: 3



Не понял зачем описывать класс "окружность". В чем состоит задание? В нахождение количества точек которые лежат на окружности центр которой находится в начале координат? Или нет?
PM MAIL ICQ   Вверх
xess
Дата 7.4.2007, 02:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 9.3.2007

Репутация: нет
Всего: нет



Цитата(Christina @ 6.4.2007,  18:07)
(MICROSOFT VISIAL STUDIO)
Помогите, пожалуйста, решить задачу на языке С#. Дано множество точек на плоскости. Можно ли найти окружность с центром координат, на которой лежит наибольшее количество точек данного множества.

Да, есть смысл уточнить задание.
т.е. окружность должна проходить через наибольшее кол-во точек центр которой в центре координат или центр окружности не фиксирован?

Это сообщение отредактировал(а) xess - 7.4.2007, 02:05
PM MAIL   Вверх
Christina
Дата 7.4.2007, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.4.2007
Где: Minsk

Репутация: нет
Всего: нет



окружность должна проходить через наибольшее кол-во точек центр которой в центре координат 
PM MAIL   Вверх
rasik
Дата 7.4.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 16.2.2006

Репутация: 2
Всего: 3



Предлагаю такое решение. Надеюсь это то что нужно:

Код

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;

namespace Circumference
{
    class Program
    {
        static void Main(string[] args)
        {
            // Таблица пар значений вида: (радиус окружности) - (количество точек)
            Hashtable circumferenceTable = new Hashtable();

            // Координаты точки которые будем вводить по ходу выполнения программы
            double x, y;

            // Счетчик точек
            int i = 0; 
            
            // Цикл в котором вводятся точки. Ввод заканчивается когда введенные координаты = 0 
            while (true)
            {
                i++; // Увеличиваем счетчик точек
                Console.WriteLine("Point #{0}", i);
                Console.Write("Coordinate X: ");
                x = Double.Parse(Console.ReadLine()); // Считывем координату х
                Console.Write("Coordinate Y: ");
                y = Double.Parse(Console.ReadLine()); // Считываем координату у
                
                // Если координаты х и у равны 0 - заканчиваем ввод точек
                if (x == 0 && y == 0)
                    break;

                // Вычисляем радиус окружности как модуль вектора (х, у)
                double radius = Math.Sqrt(x * x + y * y);
                
                // Проверка существования в таблице окружности с найденным радиусом
                if (circumferenceTable[radius] == null)
                    // Если радиус окружности не записан в таблицу - 
                    // добавляем ее радиус в таблицу(начальное количество точек на такой окружности - 1)
                    circumferenceTable.Add(radius, 1);
                else
                    // Если радиус окружности найден в таблице -
                    // увеличиваем счетчик точек для такой окружности на 1
                    circumferenceTable[radius] = Convert.ToInt32(circumferenceTable[radius]) + 1;
            }

            // Элемент таблицы - окружность с радиусом 0 с 0 точек на ней
            DictionaryEntry circumference = new DictionaryEntry(0, 0);  
            
            // Поиск элемента таблицы с наибольшим количеством точек
            foreach (DictionaryEntry dictEntry in circumferenceTable)
                if(Convert.ToInt32(dictEntry.Value) > Convert.ToInt32(circumference.Value)) 
                    circumference = dictEntry;
            
            // Вывод результатов на экран
            Console.WriteLine("Circumference radius = {0}", circumference.Key);
            Console.WriteLine("Number of points on found circumference = {0}", circumference.Value);
        }
    }
}


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

Это сообщение отредактировал(а) rasik - 7.4.2007, 14:02
PM MAIL ICQ   Вверх
Christina
Дата 8.4.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 6.4.2007
Где: Minsk

Репутация: нет
Всего: нет



Спасибо большое
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.