Пользователей: 0
Гостей: 197
Всего: 197

» Подробно
» Сегодня


Привет, Гость!

Ник


Пароль


Запомнить?




» Добавить в избранное

» Сделать стартовой

Главная
Форум
Обзор игры
Мир Зоны
Файлы
Галерея
Разное






Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 7 из 9Первая«456789 »
Быстрый переход:


 

Автор Сообщение
Psychologist
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 1808
Откуда: Челябинск
Занятие: Стихоплётство, туризм :)
Возраст: 27

12-12-2010
11-04-2010 18:45 GMT3 часа #1223360   Split
EventType : visualstudio8setup P1 : 10861
P2 : 9.0.30729.01.30_orcas_x86_net P3 : pr P4 : inst P5 : f
P6 : gencomp90 P7 : baseret_failure P8 : - P9 : 1603 P10 : -


Это подпись ошибки.
А в сетапнике пишут это:


Не знаете в чём проблема?

Ах, да, и кинь пожалуйста ту ссылку на тот полный пакет.

Вот допол. сведения из install.log:
The following properties have been set:
Property: [AdminUser] = true {boolean}
Property: [ProcessorArchitecture] = Intel {string}
Property: [VersionNT] = 5.1.3 {version}
Running checks for package 'Установщик Windows 3.1', phase BuildList
The following properties have been set for package 'Установщик Windows 3.1':
Running checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe'
Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '3.1': false
Result of running operator 'ValueExists' on property 'Version9x': false
Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.0.3': false
Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false
Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false
Result of checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' is 'Install'
'Установщик Windows 3.1' RunCheck result: Install Needed
Running checks for package '.NET Framework 3.5 SP1', phase BuildList
Reading value 'SP' of registry key 'HKLM\Software\Microsoft\NET Framework Setup\NDP\v3.5\1049'
Read integer value 1
Setting value '1 {int}' for property 'DotNet35SP'
The following properties have been set for package '.NET Framework 3.5 SP1':
Property: [DotNet35SP] = 1 {int}
Running checks for command 'DotNetFX35SP1\dotNetFx35setup.exe'
Result of running operator 'ValueGreaterThanEqualTo' on property 'DotNet35SP' and value '1': true
Result of checks for command 'DotNetFX35SP1\dotNetFx35setup.exe' is 'Bypass'
'.NET Framework 3.5 SP1' RunCheck result: No Install Needed
EULA for components 'Установщик Windows 3.1' was accepted.
Copying files to temporary directory "C:\WINDOWS\Temp\VSD1A1.tmp\"
Downloading files to "C:\WINDOWS\Temp\VSD1A1.tmp\"
(11.04.2010 18:40:35) Downloading 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' from 'http://go.microsoft.com/fwlink/?LinkId=49256' to 'C:\WINDOWS\Temp\VSD1A1.tmp\'
Download completed at 11.04.2010 18:41:26
Verifying file integrity of C:\WINDOWS\Temp\VSD1A1.tmp\WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe
WinVerifyTrust returned 0
File trusted
Running checks for package 'Установщик Windows 3.1', phase BeforePackage
The following properties have been set for package 'Установщик Windows 3.1':
Running checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe'
Result of running operator 'VersionGreaterThanOrEqualTo' on property 'VersionMsi' and value '3.1': false
Result of running operator 'ValueExists' on property 'Version9x': false
Result of running operator 'VersionLessThan' on property 'VersionNT' and value '5.0.3': false
Result of running operator 'ValueNotEqualTo' on property 'ProcessorArchitecture' and value 'Intel': false
Result of running operator 'ValueEqualTo' on property 'AdminUser' and value 'false': false
Result of checks for command 'WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' is 'Install'
'Установщик Windows 3.1' RunCheck result: Install Needed
Verifying file integrity of C:\WINDOWS\Temp\VSD1A1.tmp\WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe
WinVerifyTrust returned 0
File trusted
Installing using command 'C:\WINDOWS\Temp\VSD1A1.tmp\WindowsInstaller3_1\WindowsInstaller-KB893803-v2-x86.exe' and parameters '/quiet /norestart'
Process exited with code 1603
Status of package 'Установщик Windows 3.1' after install is 'InstallFailed'


И ещё добавлю, пробывал Ваш проект установить, тот что вначале темы, он мне и говорит, шуруй за доп. сведениями в инсталл.лог.


И все мы ждем чего-то. Работа - дом - работа ©
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
11-04-2010 21:24 GMT3 часа #1223500   Split
Сталкер Монолита
полная версия есть на той же странице откуда ты качал
в самом низу есть вот это:
На этом DVD все продукты Express и дополнительные компоненты записаны в виде единого файла образа ISO. и ссылка.
я качал не совсем отсюда( а с англоязычной версии сайта майкрософт) - но это тоже самое - диск в формате ISO.(ISO распаковывается обычным винраром - но очень долго)

во вторых там вверху написано: Не забудьте запустить WindowsUpdate, чтобы установить последние обновления.
У меня винда лицензионная - качает обновления постоянно - так что проблем не бывает.
а у тебя как? возможно чего то не хватает на твоем компе - на висте ведь работало.

насчет своего проекта - не знаю. singapur22 его ставил себе на комп для проверки - говорил что все работает.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Psychologist
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 1808
Откуда: Челябинск
Занятие: Стихоплётство, туризм :)
Возраст: 27

12-12-2010
11-04-2010 23:11 GMT3 часа #1223592   Split
erlik
Попробуем.
А про проект - та же ошибка, установщик не хочет ставить. И когда с ISO запускал, то же самое.

А винда у меня пиратская, похоже. Просто как-то комп слетел, вызвали Комп. помощь, вот нам и поставили XP под Vist'у (загрузка такая же, к примеру).


И все мы ждем чего-то. Работа - дом - работа ©
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

11-04-2010 23:26 GMT3 часа #1223614   Split
Сталкер Монолита
Можно попробовать установить отдельно.
http://support.microsoft.com/kb/893803


Psychologist
[3] Новобранец
Онлайн статус=0  Профиль    




Посты: 1808
Откуда: Челябинск
Занятие: Стихоплётство, туризм :)
Возраст: 27

12-12-2010
12-04-2010 14:34 GMT3 часа #1223963   Split
Cos
Пишет мол что уже выше обновление стоит, не надо устанавливать.
Чёрте что творится.


И все мы ждем чего-то. Работа - дом - работа ©
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
12-04-2010 19:48 GMT3 часа #1224242   Split
singapur22
тут к тебе вопрос созрел.
ты с классами больше меня разобрался - объясни чем так уж плох код приведенный первым в сравнении со вторым.
Это в общем тот вариант (второй) который мне гуру с одного форума накатали - предварительно разнеся мой вариант в пух и прах.
Хотя мой - вполне рабочий (в первом было два метода потом я их объединил )- и задачи создавать идеальный класс у меня не было.

Код:
public class Triangle
    {

        public bool IsInside(int npol, float[] xp, float[] yp, float x, float y)
        {

            int c = 0;
            for (int i = 0, j = npol - 1; i < npol; j = i++)
            {
                if ((((yp[i] <= y) && (y < yp[j])) || ((yp[j] <= y) && (y < yp[i]))) &&
                  (x > (xp[j] - xp[i]) * (y - yp[i]) / (yp[j] - yp[i]) + xp[i]))
                    c = 1 - c;
            }
          return  c == 1 // точка внутри
            }

   
            private static void Main()
            {


                float[] xp = { 0, 2, 4 }; // масcив  х вершин
                float[] yp = { 0, 2, 2 }; // массив  у вершин
                float x = 2;
                float y = 1;
                int npol = xp.Length;

                Triangle t = new Triangle();
                bool result = t.IsInside(npol, xp, yp, x, y);

                Console.WriteLine(result ? "Внутри" : "Снаружи");
                Console.ReadKey();
            }

    }
   


Код:
namespace CyberForum {
    public struct Point {
        private float _x;
        private float _y;

        public Point(float x, float y) {
            _x = x;
            _y = y;
        }

        public float X {
            get { return _x; }
            set { _x = value; }
        }

        public float Y {
            get { return _y; }
            set { _y = value; }
        }
    }

    public class Triangle {
        private Point _a;
        private Point _b;
        private Point _c;

        public Triangle(Point a, Point b, Point c) {
            _a = a;
            _b = b;
            _c = c;
        }

        public bool IsInside(Point p) {
            // тут твой код. без глобальных переменных: всё на стеке
            return true;
        }

   

        public Point A {
            get { return _a; }
        }

        public Point B {
            get { return _b; }
        }

        public Point C {
            get { return _c; }
        }

    }

    public static class Program {

        private static void Main() {
            Point p1 = new Point(0, 0);
            Point p2 = new Point(0, 10);
            Point p3 = new Point(10, 0);
            Point p4 = new Point(1, 1);

            Triangle t = new Triangle(p1, p2, p3);

            Console.WriteLine(t.IsInside(p4) ? "Внутри" : "Снаружи");
            Console.ReadKey();
        }

    }
}


Зачем надо вообще указывать namespace в данном случае?
метод Main прятать в дополнительный класс public static class Program ?
и все эти get, set ?


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

12-04-2010 20:54 GMT3 часа #1224305   Split
erlik
Цитата
метод Main прятать в дополнительный класс public static class Program ?

Это впринципе первое что бросается в глаза. Первый приведенный класс больше похож на программу тестирование некой идеи, чем на модуль. Первостепенная и основная цель создания класса - создание функционального куска/блока/модуля программы для дальнейшего интегрирования в любые проекты. В идеале, опытный программист работающий в определенной, узкой сфере деятельности в определенный момент только и занимается тем, что соединяет готовые блоки (написанные им и другими),
получая необходимый функционал за максимально короткое время. Это и есть одна из целей ООП - принцип "разделяй и властвуй".

Что станет с классом Triangle в первом случае если из него убрать метод Main? Он станет абсолютно бесполезным, ибо одна из функциональных частей как раз там и находится (все эти массивы xp, yp). В идеале класс как и математическая функция - черный ящик, задаем входные данные и получаем некие данные на выходе, причем чем меньше доступных методов и входных данных - тем лучше. Вторым вариантом IsInside гораздо проще и приятнее пользоваться, хотя мне кажется или варианты методов IsInside в двух случаях несут разную функциональность (точка во-втором случае и "что-то" в первом)?

Цитата
и все эти get, set ?

Кажется эта тема уже здесь проскакивала, и насколько я понял в данном случае нужны они скорее для расширения будущей функциональности, тогда, когда закрытость переменных _x и _y будет действительно необходима, но в принципе даже сейчас такой код приятнее, чем прямое обращение к переменным.

Цитата
Зачем надо вообще указывать namespace в данном случае?

В данном случае, таким образом, господа с CyberForum.ru хотят избежать переопределения классов Point и Triangle, которые с высокой вероятностью уже существуют в .NET. Ибо если случится так, что в программу уже будет включено пространство имён System.Drawing, компилятору может совсем не понравится такой "override классов".

Сообщение было успешно отредактировано Cos (12-04-2010 20:54 GMT3 часа, назад)

erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
12-04-2010 21:28 GMT3 часа #1224387   Split
Cos
Цитата
варианты методов IsInside в двух случаях несут разную функциональность (точка во-втором случае и "что-то" в первом)

в первом случае тоже точка - только разделенная на координаты х и y - просто если брать второй вариант - то само тело функции определения принадлежности точки полигону
нужно слегка переписать.
И у меня кстати кол-во вершин ничем не ограничено в отличие от второго варианта - подходящего только для треугольника - но я так понимаю что в свете принципов ООП это как раз так и надо. То есть узкая специализация класса.

Ну в общем ты мне хорошо объяснил что к чему. Спасибо.
Недостатки моей конструкции я в принципе понял. Но вторая конструкция пока сложновата для меня. Да и необходимости пока не было создавать.
Ну согласись разве есть смысл писать для кода в 200-500 строк (маленькой програмки для себя ) целый модуль такого вида.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

12-04-2010 22:11 GMT3 часа #1224438   Split
erlik
Цитата
Ну согласись разве есть смысл писать для кода в 200-500 строк (маленькой програмки для себя ) целый модуль такого вида.

Я так понимаю что тов. с CyberForum просто стараются объять сразу множество аспектов, так что бы функциональная часть работала и вместе с тем и основные принципы ООП присутствовали, пускай даже если последние вкупе с выкрутасами самого C# порой неочивидны. Но как ни крути, но второй вариант это нечто к чем стоит стремиться, не сразу, не для мгновенной реализации идей, но в долгосрочной перспективе . Универсальность и возможность повторного использования, минимальное кол-во открытых методов, без попыток объедения сразу нескольких идей/объектов в один класс (треугольники и точки например). Наилучший пример здесь - сама библиотека .NET с тысячами узкоспециализированных и на первый взгляд сложно используемых классов, но объеденных разными уровнями наследования, в единую систему, где незнание реализации класса точки не мешает использовать (и что важно - понять реализацию) класс треугольника.

Цитата
Но вторая конструкция пока сложновата для меня.

Первое что можно сделать (если есть желание) - посмотреть нельзя ли ограничится использованием уже готового в .NET класса точек (и возможно треугольников), ну и возможно (временно) убрав методы X/Y (с их get / set). Будет уже значительно проще.
Вместо готового Point можно взять и этот, но например объявив его как класс а не структуру, будет привычнее выглядеть... хоть и придется быть более аккуратным в плане их присваивания:
http://msdn.microsoft.com/ru-ru/library/saxz13w4%28v=VS.90%29.aspx


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
13-04-2010 12:11 GMT3 часа #1224727   Split
erlik Как уже объяснил Cos, вторая конструкция более правильная и профессиональная, но и она использует бессмысленную структуру Point. Не пойму, для какой цели нужно было создавать уже существующую в пространстве имён System.Windows структуру Point, кстати имеющую более широкие возможности.

И на счёт { get; set; }. Использование свойств позволяет значительно повысить уровень безопасности. При объявлении свойств, компилятор создаёт закрытое, анонимное резервное поле, что предотвращает случайное переопределение параметров. Использование свойств не только желаемо, но даже рекомендуемо. При данной реализации, например в случае с классом Triangle, мы получаем некий закрытый блок, где доступ к параметрам производится только через специальные методы доступа, это и будет являться одним из наивысших уровней безопасности и профессионализма.

Сообщение было успешно отредактировано singapur22 (13-04-2010 12:11 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
13-04-2010 16:55 GMT3 часа #1224836   Split
singapur22
Нифига не получается создать класс - вот этот модуль под спойлером неправильно считает.
мой первый код вычисляет все верно - а этот не хочет. В чем ошибка - не знаю - так как пока не понял всего алгоритма создания модуля.

Я вместо Point оставил все таки массивы иксов и игреков - так как функция требует именно их.
а для точки применил существующий класс PointF .


Код:
namespace NewTriangle
{
   

    public class Triangle
    {
        private float [] _a;  // вот здесь я так понимаю мы создаем закрытие переменные
        private  float [] _b;

/ /здесь назначаем закрытым переменным значение аргументов которые принимает новый класс
        public Triangle(float[] X, float[] Y)
        {
            _a = X;   
            _b = Y;
           
        }

        public bool IsInside(PointF p)
        {
            int npol = 3;
            int c = 0;
            for (int i = 0, j = npol - 1; i < npol; j = i++)
            {
                if ((((Y[i] <= p.Y) && (p.Y < Y[j])) || ((Y[j] <= p.Y) && (p.Y < Y[i]))) &&
              (p.X > (Y[j] - X[i]) * (p.Y - Y[i]) / (Y[j] - Y[i]) + X[i]))
                    c = 1 - c;
            }
            return c == 1;  // точка внутри
        }

       
// вот здесь не совсем понимаю что мы делаем - но без этого код вообще не работает
        public float [] X
        {
            get { return _a; }
        }

        public float [] Y
        {
            get { return _b; }
        }

       

    }

    public static class Program
    {

        private static void Main()
        {
           
            PointF p4 = new PointF(2, 1);

            float[] xp = { 0, 0, 3, 3 }; // масив  х вершин
            float[] yp = { 0, 3, 3, 0 }; // массив  у вершин
            Triangle t = new Triangle(xp, yp);
           

            Console.WriteLine(t.IsInside(p4) ? "Внутри" : "Снаружи");
            Console.ReadKey();
        }

    }
}


добавлено спустя 10 минут

блин с координатами напутал - нужно же только три передавать - для треугольника.
Однако все равно неверно выходит.

добавлено спустя 2 минут

не все таки не то. Первый с измененным вариантом передачи координат точки через PointF p = new PointF(2, 1.9f); показывает верно - а этот новый когда передаю
PointF p4 = new PointF(2, 1.9f);

float[] xp = { 0, 2, 4 }; // масив х вершин
float[] yp = { 0, 2, 2 }; // массив у вершин
Triangle t = new Triangle(xp, yp);

уже не то выдает.

добавлено спустя 13 минут

Вот я запутался с координатами - давно с ними не работал - оказывается все таки оба кода верно работают(ошибочная координата просто была).
Но вот комментариев по конструкции класса я все так жду singapur22, Cos

Сообщение было успешно отредактировано erlik (13-04-2010 16:55 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
13-04-2010 17:34 GMT3 часа #1224876   Split
erlik Всё равно не понял, зачем понадобилось использование отдельных массивов для каждой стороны вектора. Не проще использовать массив векторов?

PointF[] vertexes {get; set;}

Получим более простой код:

Код:
class Triangle
{
    private PointF[] _vertexes;

    public PointF[] Vertices
    {
        get
        {
            return _vertexes;
        }
    }

    public Triangle(PointF[] vertexes)
    {
        _vertexes = vertexes;
    }

    public bool IsInside(PointF p)
    {
        int c = 0;
        int count = _vertexes.Count;

        for (int i = 0, j = count-1; i < count; j = i++)
            {
                if ((((_vertexes[i].Y <= p.Y) &&
                    (p.Y < _vertexes[j].Y)) ||
                    ((_vertexes[j].Y <= p.Y) &&
                    (p.Y < _vertexes[i].Y))) &&
                    (p.X > (_vertexes[j].Y - _vertexes[i].X) *
                    (p.Y - _vertexes[i].Y) /
                    (_vertexes[j].Y - _vertexes[i].Y) + _vertexes[j].X))
                c = 1 - c;
            }
            return c == 1;
       
       
    }
}


Возможно гдето допустил ошибку, но смысл я думаю ты понял.

Да и смысл от этой затеи каков? Я так понимаю, тебе эта лабуда нужна для 2D графики. Если так, то всё это ни к чему, когда есть специальный класс HitTestResult возвращающий объект визуализации захватывающий указанную координату на 2D плоскости. Тоесть именно твоё разрабатываемое действие, только в обратном направлении, что имеет гораздо больший круг применения.
Код с применением данного класса становится невероятно коротким:

Код:
HitTestResult HTR = VisualTreeHelper.HitTest(world, point);
if (HTR == null) return null;
else return HTR.VisualHit;

Сообщение было успешно отредактировано singapur22 (13-04-2010 17:34 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
13-04-2010 17:32 GMT3 часа #1224886   Split
singapur22
да я просто не был уверен что верно переделаю функцию под массив векторов - к тому же изначально это функция написанная на С++ (помнишь я ее на lua переводил?) была сделана именно под массив иксов и игреков.

добавлено спустя 3 минут

эта лабуда мне нужна просто для практики создания классов и больше ни для чего.
вообще я этот код писал для одного чела на КиберФоруме который в C# еще меньше меня знает
там очень много студентов которым лень решать элементарные задачки - а я на этих задачках практикуюсь - хорошая разминка для мозгов. Вчера вот две задачки с линк запросами решил.

Сообщение было успешно отредактировано erlik (13-04-2010 17:32 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
Cos
[20] Сталкер
Онлайн статус=0  Профиль    




Посты: 2692
Откуда:
Занятие:
Возраст:

13-04-2010 17:40 GMT3 часа #1224892   Split
erlik
Ну раз
Цитата
та лабуда мне нужна просто для практики создания классов и больше ни для чего.

Тогда думаю это будет справедливо:

Цитата
блин с координатами напутал - нужно же только три передавать - для треугольника.

Ага, я тоже не сразу понял что там за треугольник с двумя точками).

Цитата
Но вот комментариев по конструкции класса

Мое мнение - во-первых я бы сперва озвучил конечную цель класса
Triangle - представлять некий треугольник и в качестве основного функционала возвращать принадлежность той или иной точки к нему, либо же:
Цитата
первом случае тоже точка - только разделенная на координаты х и y - просто если брать второй вариант - то само тело функции определения принадлежности точки полигону
В итоге получается что половина кода от одной идеи, а вторая от другой и каждая пытается угодить другой, из-за этого и смешивание точек (метод IsInside) с одной стороны и "флоатов" их представляющих с другой. А все из-за того что:
Цитата
Я вместо Point оставил все таки массивы иксов и игреков - так как функция требует именно их.

Вывод - нужно переделывать либо функцию, которая будет "искать" точки только в треугольниках, либо весь класс который вместо треугольников будет представлять сразу полигон / произвольную форму. Тогда и от "неудобных"

Цитата

Код:
        public float [] X
        {
            get { return _a; }
        }

        public float [] Y
        {
            get { return _b; }
        }




можно будет избавится (хотя и сейчас они нужны лишь формально).


singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
13-04-2010 17:37 GMT3 часа #1224893   Split
erlik
Цитата
там очень много студентов которым лень решать элементарные задачки
Ну дак надо за это брать деньги. Уверяю, студенты готовы платить за выполнение задач, если сумма оплаты в пределах разумного


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
13-04-2010 18:01 GMT3 часа #1224920   Split
Cos

Цитата
Ага, я тоже не сразу понял что там за треугольник с двумя точками).

это был четырех угольник с координатами A(x=0,y=0) , B(x=0,y=3, C(x=3,y=3), D(x=3,y=0)
в порядке обхода вершин по часовой стрелке
float[] xp = { 0, 0, 3, 3 }; // масив х вершин
float[] yp = { 0, 3, 3, 0 }; // массив у вершин


Цитата
цель класса
Triangle - представлять некий треугольник и в качестве основного функционала возвращать принадлежность той или иной точки к нему

хотел именно этого.

Цитата
переделывать либо функцию, которая будет "искать" точки только в треугольниках,


так она и так ограничена только треугольниками - в ней же задано число вершин npol=3.
правда это не дает избежать ошибки как у меня когда я вместо координат треугольника сунул в массив координаты четырех угольника.

но как это сделать пока не очень представляю - наверно надо все таки делать как том варианте с форума - когда классу Треугольник изначально задано только три вектора.

singapur22
ну я как то не привык брать деньги за это...


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
13-04-2010 18:29 GMT3 часа #1224958   Split
erlik Я понял такой смысл. Имеем формулу определения хита поинтом треугольника. Как в любой схеме графикостроения код должен опираться на систему полигональности. Тоесть любой проверяемый объект должен представляться как набор полигональных треугольников. При определении хита координаты по объекту, должен проверяться весь список треугольников объекта, и возвращать не только результат получения хита true/false, но и иметь возможность подключения метода возвращающего хитуемый треугольник (список вертексов представляющий треугольник). А так же ближайший вертекс и расстояния до всех имеющихся вертексов в списке треугольников.
Это в идеале. В твоём упрощённом виде, код должен операться на данную систему но с одним лишь методом возвращения результата хита.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
lesnik38
[1] Странник
Онлайн статус=0  Профиль    




Посты: 11
Откуда:
Занятие:
Возраст:

13-04-2010 20:35 GMT3 часа #1225168   Split
Привет сталкеры!Как дела?


erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
14-04-2010 19:14 GMT3 часа #1225840   Split
singapur22, Cos
Зацените мой новый класс... точнее структуру.
Оказывается структуры то создавать полезнее в плане производительности, чем классы - меньше ресурсов жрут будучи нессылочным типом. Синтаксис имеют такой же как и класс и если нет необходимости использовать наследование, то структура вполне заменяет класс.

Вопрос имеется - я в этой структуре использовал одни и те же переменные в разных методах для разных целей - допустимо ли такое?
Просто подумал - а почему бы не сделать именно так. раз уж экономить ресурсы, то стоит ли создавать кучу переменных - на каждую ведь своя доля памяти выделяется.
Хотя все работает как надо, но возможны ли какие то коллизии из-за этого?


Код:
namespace MyLinq
{
    struct Simbol
    {
        // поля структуры
        private string str;
        private int count;
        private IEnumerable<char> simbols;
       

        // конструктор с параметрами
        public Simbol(string s)
        {
            str = s;
            count = 0;
            simbols = null;
             
        }

       
        // методы структуры

        // возвращаем  те элементы последовательности которые встречаются в ней только один раз
        public IEnumerable<char> SingleElements()
        {
            simbols =
            from s in str.ToCharArray()
            where (s != ' ')
            group s by s into группа
            where (группа.Count() == 1)
            select группа.First();
            return simbols;
        }

         // универсальный метод - принимает число и ищет элементы которые встречаются указанное число раз
        public IEnumerable<char> Elements(int number)
        {
            simbols =
            from s in str.ToCharArray()
            where (s != ' ')
            group s by s into группа
            where (группа.Count() == number)
            select группа.First();
            return simbols;
        }


   

        // возвращает кол-во встреченных в последовательности указанных символов
        public int CountChar(char ch)
        {
            simbols =
             from s in str.ToCharArray()
             where (s == ch)
             select s;
             return simbols.Count();

        }


     // получаем все различающиеся элементы последовательности без учета пробелов
        public IEnumerable<char> DifferentElements()
        {
            simbols = str.Distinct().Where(c => c != ' ').Select(t => t);
            return simbols;
        }

          // получаем общее кол-во символов без учета пробелов
        public int CountAllElements()
        {
            count = str.ToCharArray().Where(c => c != ' ').Count();
            return count;
        }

     
  }



    public static class Program
    {

        public static void Main()
    {

        Console.WriteLine("Введите строку: ");
        string s = Console.ReadLine(); 

        Simbol str = new Simbol(s);
        var single =  str.SingleElements();
        var different= str.DifferentElements();
        // общее число символов
        int countall = str.CountAllElements();
       // элементы которые встречаются указанное число раз
        var sim = str.Elements(2);
       // кол-во элементов которое встречается указанное число раз
        int v = str.Elements(2).Count();
       // кол-во различающихся элементов
        int countdif = str.DifferentElements().Count();
       // кол-во элементов встречающихся только один раз
        int countsingle = str.SingleElements().Count();
        // кол-во указанных элементов в последовательности
        int coll = str.CountChar('a');
     
        Console.WriteLine("Одиночные элементы:");
        foreach (var ch in single)
        {
            Console.WriteLine(ch);
        }

        Console.WriteLine("Все  различные элементы:");
        foreach (var ch in different)
        {
            Console.WriteLine(ch);
        }

        Console.WriteLine("Элементы встречающиеся заданное число раз:");
        foreach (var ch in sim)
        {
            Console.WriteLine(ch);
        }

       
        Console.WriteLine("Количество одиночных элeментов: {0}", countsingle);
        Console.WriteLine("Количество различающихся элeментов: {0}", countdif);
        Console.WriteLine("Количество указанных элeментов: {0}", coll);
       Console.WriteLine("Количество элeментов в указанном кол-ве: {0}", v);
        Console.WriteLine("Общее число элeментов: {0}", countall);
       
        Console.ReadKey();
   
        }
    }
}



Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
14-04-2010 20:12 GMT3 часа #1225873   Split
erlik
Цитата
Вопрос имеется - я в этой структуре использовал одни и те же переменные в разных методах для разных целей - допустимо ли такое?
Вполне. Но только если переменные переопределяются при вызове каждого метода. Тоесть, не являются переменными, содержащими определённые данные объекта структуры.

добавлено спустя 29 минут

Кстати, забыл про многопоточность. Если планируется использование объекта структуры в разных потоках, то боюсь ни к чему хорошему это не приведёт. Как говорится, ложные результаты обеспечены.

Сообщение было успешно отредактировано singapur22 (14-04-2010 20:12 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
14-04-2010 20:18 GMT3 часа #1225907   Split
singapur22
ну значит в моей структуре коллизий вроде как не должно быть...

слушай я вот думаю, а как создать метод который можно вызывать через имя клаcса
типа как Console.WriteLine()

или метод который можно вызывать без создания экземпляра класса
допустим у меня есть метод str.CountChar('a'); str - это экземпляр моей структуры создаваемый после вызова конструктора с параметром string
а как сделать метод который можно вызывать так
string str ="строка"
int j = str.CountChar('a');

добавлено спустя 55 секунд
Цитата
Если планируется использование объекта структуры в разных потоках, то боюсь ни к чему хорошему это не приведёт.

ага - значит все таки лучше доп. переменные ввести?

Сообщение было успешно отредактировано erlik (14-04-2010 20:18 GMT3 часа, назад)

Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
14-04-2010 21:28 GMT3 часа #1225967   Split
erlik
Цитата
слушай я вот думаю, а как создать метод который можно вызывать через имя клаcса
типа как Console.WriteLine()
Это результат статического класса и (или) метода.

Код:
public static class BlaBla
{
      public static void Metod()
      {
             ...
      }
}

...
       BlaBla.Metod();
...


Цитата
string str ="строка"
int j = str.CountChar('a');
К сведенью. Тип "string", является классом библиотеки Framework. Путь к данному классу:

System.string

В редакторе есть полезное свойство. Щёлкни например по слову string в своём коде, или перемести курсор печати любым доступным способом к данному слову в коде. И нажми F12. Откроется страница с метаданными данного класса. Уверяю, ты там найдёшь не мало полезного.

Сообщение было успешно отредактировано singapur22 (14-04-2010 21:28 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
14-04-2010 22:43 GMT3 часа #1226050   Split
singapur22
да я знаю что это класс (и про F12 тоже )- и что можно писать скажем как string.Concat(str, str2) так и String.Concat(str, str2)
как string str = "строка" так и String str = "строка"
просто в случае со скажем str.Replace("подстрока", "шаблон") мы просто создаем переменную str которой назначаем значение и потом применяем этот метод к данной переменной.
мы же экземпляр класса через new не создаем. Или в данном случае это и есть экземпляр класса - вот это я не пойму...


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
15-04-2010 14:22 GMT3 часа #1226371   Split
erlik По сути string, это одно из ключевых слов языка, и создание пустого экземпляра через new здесь не приемлемо, так как оно не является сборкой класса, или структуры.
Это будет равносильно выражению:

class Blabla = new class();

Согласись, глупо выглядит.
Поэтому выражение:

string blabla = "строка";

единственно верное.

Другое дело, псевдоним System.String. Взаимозаменяемый класс ключевого слова string. Пока к проекту подключена сборка с классом System.String (библиотека mscorlib, подключена по умолчанию), ключевое слово string можно использовать как экземпляр класса System.String.
Вот здесь уже можно создавать новые экземпляры класса, через ключевое слово new. В связи с взаимозаменяемостью, выражение:

System.String BlaBla = new System.String(...);

можно смело заменять выражением:

string BlaBla = new string(...);

Что будет абсолютно аналогично. Как и обратная взаимозаменяемость.
Выражение:

string blabla = "строка";

аналогична выражению:

System.String blabla = "строка";


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
15-04-2010 15:36 GMT3 часа #1226428   Split
singapur22
Так со static методами я разобрался (тебе спасибо что подсказал про них) - тоже удобная штука хотя и есть свои ограничения.
Насчет string это все более менее понятно, но как создавать метод который принимает строку в качестве первого аргумента (то есть перед оператором точка ) я пока все равно не въехал.

Сейчас пытаюсь с указателями разобраться- используются они только в небезопасном коде
попробовал вот так получить доступ к переменным структуры (к переменным класса вообще нельзя)
Simbol h = new Simbol();
Simbol*p;// объявляем указатель
p=&h; // присваиваем ему адрес
p-> count = 10; // получаем доступ
однако компилятор сказал что "невозможно объявить указатель на управляемый тип"
модификатор unsafe перед Main (и структуру я тоже объявил как unsafe) у меня стоял и в опциях разрешение на опасный код есть. Видимо тут дело в другом...

у этих указателей еще куча всяких применений есть - но это еще надо изучать.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
15-04-2010 17:45 GMT3 часа #1226540   Split
erlik
Цитата
Насчет string это все более менее понятно, но как создавать метод который принимает строку в качестве первого аргумента (то есть перед оператором точка ) я пока все равно не въехал.


А я не въехал, что ты имеешь ввиду. Приведи наглядный пример.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
15-04-2010 17:57 GMT3 часа #1226551   Split
singapur22
ну я имел виду чтобы методу можно было передавать строку в качестве вызывающего аргумента перед оператором точка (ну у класса стринг же целая куча таких методов ) - и при этом не создавать объект класса. только как ты пояснил все работает из-за того есть ключевое слов string - эквивалент класса - а раз создать свое ключевое слово для своего класса мы не можем - тогда значит ничего сделать нельзя.

К тому ж в свете существования static методов это уже не актуально.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
15-04-2010 18:21 GMT3 часа #1226596   Split
erlik
Цитата
К тому ж в свете существования static методов это уже не актуально.
Вот ты и сам ответил на свой вопрос. К сведенью, статическими могут быть не только классы и их элементы, но и все типы элементов обычного (не статического) класса. Например:

Код:
class BlaBla
{
    public static BlaBla Empty = значение;

    public void Metod()
    {
         ...
    {
}


Создание элемента класса BlaBla с одновременной установкой определённого ему значения будет выглядеть так:

BlaBla Name = BlaBla.Empty;

Name.Metod();


Как видишь, обошлись без конструктора с ключевым словом new.


Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.
erlik
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2338
Откуда: Набережные Челны
Занятие: В чем сила, брат? В AutoIT3 и WinAPI.
Возраст: 47

18-03-2015
15-04-2010 19:52 GMT3 часа #1226753   Split
singapur22
ты загрузку и скачивание файлов\данных в инете через код пробовал?
а то у меня скачать то файл по uri получается, а вот закачать - че то не то.
сервер ответ дает - и в консоль этот ответ выводится - но это как я понял совсем не то выводится -
там нет ссылок на мой файл. И значит файл не закачался.

Код:
using System.Net;

WebClient client = new WebClient();
Uri uri2 = new Uri("http://radikal.ru");
byte[] response = client.UploadFile(uri2, "D:\\картинка.jpg"); // закачиваем файл - получаем ответ от сервера  в байтах
// выводим ответ в консоль
Console.WriteLine(System.Text.Encoding.ASCII.GetString(response));
Console.ReadKey();


через асинхронную загрузку (метод UploadFileAsync) то ж самое получается.


Разработки: "Тотализатор","Kill-zone", "Mega-bomba", Mega_gravi",
"Рандомные тайники(а также декодер, мины+диалоговый аддон"), "Выбрасываемый рюкзак", "Аналоговые часики на худ"
singapur22
[10] Житель
Онлайн статус=0  Профиль    




Посты: 2089
Откуда: Рубцовск
Занятие: Проект "Мобила модмейкера"
Возраст: 44

13-08-2011
16-04-2010 18:56 GMT3 часа #1227407   Split
erlik Попробывал твой код в Сибнете. Судя по выводящемуся коду смею предположить, что никакой загрузки не происходит. Переменная response возвращает HTML-код страницы uri2, только и всего.

Сообщение было успешно отредактировано singapur22 (16-04-2010 18:56 GMT3 часа, назад)

Проект "Mobile Manager" закрыт, в связи со стечениями неблагоприятных обстоятельств, и последующей потерей всех файлов и справок текущего проекта.


Форумы > Специализированные > Hard & Soft > Программирование на C# (C Sharp)

Страница 7 из 9Первая«456789 »





???????@Mail.ru Rambler's Top100
Продолжая пользоваться сайтом, вы соглашаетесь с использованием файлов cookie. Страницы сайта могут содержать информацию, запрещенную для
просмотра посетителям младше 18 лет. Авторское право на серию игр «S.T.A.L.K.E.R» и используемые в ней материалы принадлежит GSC Game World.

Использование материалов сайта возможно с разрешения администрации. Все права защищены. © 2004–2024 «Stalker-Portal.ru»