Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2011, 21:01   #1
Tase4ka
Пользователь
 
Аватар для Tase4ka
 
Регистрация: 08.12.2010
Сообщений: 27
Радость из C++ в C#

Здравствуйте не могли бы вы мне помочь переписать программу из C++ в C#. Вот если что само задание: Заданы координаты вершин треугольника AВС на плоскости. Вывести их в порядке обхода по часовой стрелке (для проверки достаточно рассмотреть знаки внутренних углов).
Код:
#include <iostream>
 
using namespace std;
 
struct point
{
        double x, y;
        point(){}
        point(double xx, double yy)
        {
                x = xx;
                y = yy;
        }
 
        point operator - (point &a)
        {
                return point(x-a.x, y-a.y);
        }
};
 
double wp(point &a, point &b) // wedge product // косое произведение
{
        return a.x*b.y - a.y*b.x;
}
 
void main()
{
        point a, b, c;
        cin >> a.x >> a.y 
                >> b.x >> b.y
                >> c.x >> c.y;
        cout << endl;
        if(wp(b-a,c-a) < 0) //сразу были по часовой стрелке
                cout << a.x << ' ' << a.y << endl
                         << b.x << ' ' << b.y << endl
                         << c.x << ' ' << c.y << endl;
        else                            //были против часовой стрелки
                cout << b.x << ' ' << b.y << endl
                         << a.x << ' ' << a.y << endl                    
                         << c.x << ' ' << c.y << endl;
        system("pause");
}
Tase4ka вне форума Ответить с цитированием
Старый 12.03.2011, 23:46   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Не очень знаю C#, но наверное как-то так:
Код:
using System;

public class Program {
	public struct Point {
		public double x, y;

		public Point(double x, double y) {
			this.x = x;
			this.y = y;
		}

		public static Point operator -(Point a, Point b) {
			return new Point(a.x - b.x, a.y - b.y);
		}
	}

	public static double WedgeProduct(Point a, Point b) {
		return a.x * b.y - a.y * b.x;
	}

	public static Point ReadPoint() {
		Point point = new Point();
		point.x = int.Parse(Console.ReadLine());
		point.y = int.Parse(Console.ReadLine());
		return point;
	}

	static void Main (string[] args) {
		Point a, b, c;

		a = ReadPoint();
		b = ReadPoint();
		c = ReadPoint();

		if (WedgeProduct(b - a, c - a) < 0) // сразу были по часовой стрелке
			Console.WriteLine("{0} {1}\n{2} {3}\n{4} {5}",
			                  a.x, a.y, b.x, b.y, c.x, c.y);
		else // были против часовой
			Console.WriteLine("{0} {1}\n{2} {3}\n{4} {5}",
			                  b.x, b.y, a.x, a.y, c.x, c.y);

		Console.ReadLine();
	}
}
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц