написать код на С# к задачи
Математическая часть - векторное и псевдоскалярное произведения.
Реализация - считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
a=(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
b=(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
c=(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.
1) вводите координаты точек
2) производите математические вычисления
3) проверяете: if((a>=0&&b>=0&&c>=0 )||(a<=0&&b<=0&&c<=0 )) лежит else не лежи
как вводяться точки ?
если можно полностью код розвязання задачи ))
Ах, мы вас понимаем... :D
как вводяться точки ?
С клавиатуры, планшета, микрофона, ИК порта, сетевого сокета - всяко можно (ктати слово "вводятся" пишется без мягкого знака).
если можно полностью код розвязання задачи ))
За любую работу нужно платить. Если готов платить - создавай тему во фрилансе.
Кот, брось в бирюльки играть (мне самому охота :D) - доставай банхаммер!
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace forum
{
class Program
{
static void Main(string[] args)
{
int[] x = new int[4], y = new int[4];
for (int i = 0; i < 4; ++i)
{
System.Console.Write("Введите (x" * i.ToString() * ",y" * i.ToString() + "): ");
x = System.Console.Read();
y = System.Console.Read();
System.Console.ReadLine();
}
int a = (x[1] - x[0]) + (y[2] - y[1]) + (x[2] - x[1]) + (y[1] - y[0]);
int b = (x[2] - x[0]) + (y[3] - y[2]) + (x[3] - x[2]) + (y[2] - y[0]);
int c = (x[3] - x[0]) + (y[1] - y[3]) + (x[1] - x[3]) + (y[3] - y[0]);
if ((a >= 0 || b >= 0 || c >= 0) || (a <= 0 || b <= 0 || c <= 0))
{
System.Console.WriteLine("Лежит");
}
else
{
System.Console.WriteLine("Нифига");
}
System.Console.ReadKey();
}
}
}
п.с. писал код, чтобы посмотреть как оно в шарпах, ибо нифига их не знаю:D
п.с.с. прикольно... половину кода за меня сама VS написала))
Так писать точно не стоит. И даже на C\C++.
Обявляйте переменные на разных строках.
Обявляйте переменные на разных строках.
это вопрос личных предпочтений и соображений читабельности в данном конкретном случае.
или есть более объективная причина?
или есть более объективная причина?
Это 1) необычно, 2) нечитабельно, 3) затрудняет рефакторинг.
В код внесены некоторые модификации - в теме они не обсуждаются. Едем в студенты.
на самом деле это обычно - но не читаемо. Что соответственно затрудняет.
Но ничего необычного тут нет.
думаю таки это основная причина вашего неприятия такой записи))
п.с. в основном да, пишу разбитые на строки объявления переменных... просто в это случае написал код немного необычно, выглядело уж больно забавно:)
Найдите любые гайдайны по написанию кода на C/C++/C# - они в один голос запрещают такую конструкцию. И правильно.
Добавлено позже: SharpDevelop C# Coding Guide, помимо гайда я бы рекомендовал использовать var везде где только можно (ну, это личное предпочетние, ибо это Nemerle-way).
п.с. в основном да, пишу разбитые на строки объявления переменных... просто в это случае написал код немного необычно, выглядело уж больно забавно:)
это вполне таки стандартная запись - причем как бы назвать ее особо нечитаемой - понятно, что удобно - причем лично для вас - использовать в одну строку. Но это абсолютно произвольное требование. Тем более если вспомнить о таком высказывании:
[QUOTE=Примерно по тексту]
Если из распечатанного листинга модуля можно сделать веревку, на которой возможно повесить разработчика - это надо сделать.
[/QUOTE]
что не говори - подобная запись увеличивает шансы утонуть. :)
Добавлено позже: SharpDevelop C# Coding Guide, помимо гайда я бы рекомендовал использовать var везде где только можно (ну, это личное предпочетние, ибо это Nemerle-way).
pdf'ку пролистал, по большей части пишу код именно так...
но, это как бы один из возможных взглядов на оформление кода, не так ли?)
по самой pdf
в 10.1 примере как бы скобочки фигурные для примера выставлены по разному в одном классе?)
или это таки особый стиль автора мешать в кучу:
}
и:
{
}
[SIZE="1"]1й вариант фигурных скобок не люблю)[/SIZE]
п.с. про var я не помню вообще, т.к. C# знаю на уровне: пролистал 200 стр. учебника C# как то вечерком)
п.с.с. Торжественно клянусь больше не делать двойных объявлений массивов в одной строке:D
kot_, нуу... если уж извращаться, то С/С++ предоставляют для этого ещё большие возможности))
о некоторых из которых многие мои знакомые вообще не слышали: триграфы... за неделю запись в статусе icq так никто и не разгадал:D а попыток было прилично))
в 10.1 примере как бы скобочки фигурные для примера выставлены по разному в одном классе?)
Потому что для классов, структур, интерфейсов, пространств имен и методов используется нотация:
{
}
}
п.с. про var я не помню вообще, т.к. C# знаю на уровне: пролистал 200 стр. учебника C# как то вечерком)
var позволяет опускать имя типа переменной при обявлении с инициализатором:
о некоторых из которых многие мои знакомые вообще не слышали: триграфы... за неделю запись в статусе icq так никто и не разгадал:D а попыток было прилично))
Нашел чем напугать. Триграфы - это анахронизм, который торчит в С++ с незапамятных времен, ибо группе стандартизации стремно их выкидывать из языка.
З.Ы. Я мог бы написать тут про Nemerle, что в нем можно сделать с исходным кодом, но не буду этого делать. :D
З.З.Ы. А я люблю
}
Ибо экономит место на экране без потерь в читабельности.
З.Ы. Я мог бы написать тут про Nemerle, что в нем можно сделать с исходным кодом, но не буду этого делать. :D
присмотрюсь к Nemerle поближе)) как раз у меня проснулся интерес к изучению возможностей различных языков))
а это имеет смысл кроме такого тривиального использования(да ещё и с сомнительной целью)?
а это имеет смысл кроме такого тривиального использования(да ещё и с сомнительной целью)?
Имеет. Если справа стоит чтото вроде Dictionary<int, List<MyLongStructure>> (конечно, есть и алиасы, но везде с ними не проскочишь), это слово не позволит объявлению уехать куда-то вбок.
Это также имеет смысл когда имеется несколько переменных: их именя перечислены в одном визуальном столбце - это удобно читать. Также var полезен в конструкции типа using().
Ну и основная причина, по которой было это ключевое слово введено в C#: справа стоит конструктор безымянного (анонимного) типа или проекционный LINQ-запрос. Анонимный тип для того и анонимен, что имя ему изобретает компилятор, посему программист указать его ручками не может.
Мы всегда рады новым людям: http://rsdn.ru/forum/nemerle/, ссылка на статьи у меня в подписи.
#1
[COLOR="DimGray"]
{
Console.WriteLine("Введiть розммiр масива i число порiвнювання:");
Console.Write("n = ");
int n = Convert.ToInt32(Console.ReadLine());
double[] arr = new double[n];
for (int i = 0; i < n; i++)
{
double res = 3 * (double)Math.Pow(i, i);
ulong fact = 1;
for (int j = 1; j <= i; j++)
{
fact = fact * (ulong)j;
}
res = fact / res;
arr = res;
}
Console.Write("e = ");
double e = Double.Parse(Console.ReadLine());
double sum = 0;
for (int i = 0; i < n; i++)
{
if (Math.Abs(arr) >= e)
sum += arr;
}
Console.WriteLine("sum = {0}", sum);
Console.ReadKey();
}
#2
[COLOR="DimGray"]
{ Console.WriteLine("Введiть рядок : ");
string str = Console.ReadLine();
int a = str.Length;
Console.WriteLine("Кiлькiсть символiв=" + a);
var символ =
from s in str.ToCharArray()
where (s != ' ')
group s by s into группа
where (группа.Count() == 1)
select группа.First();
foreach (var c in символ)
{
Console.WriteLine(c);
}
Console.ReadKey();
}
помогите разобраться как работают эти две части кода в задачах 1,2
#1
[COLOR="Black"]
{
double res = 3 * (double)Math.Pow(i, i);
ulong fact = 1;
for (int j = 1; j <= i; j++)
{
fact = fact * (ulong)j;
}
res = fact / res;
arr = res;
}
#2
[COLOR="Black"]
from s in str.ToCharArray()
where (s != ' ')
group s by s into группа
where (группа.Count() == 1)
select группа.First();
[offtop]
хаскела ни кто не знает из активных студентов, а ветеранам, наверное, не интересно это писать!:) но если речь идет вообще о функциональном решение, то могу накатать на лиспе!=)))
[/offtop]
хаскела ни кто не знает из активных студентов, а ветеранам, наверное, не интересно это писать!:) но если речь идет вообще о функциональном решение, то могу накатать на лиспе!=)))
[/offtop]
любопытно. давай.
Две задачи:
аффтор и что конкретно тебе не понятно? Или есть желание что бы мало того, что код стырил - так еще и объяснение для препода тебе написали? Иди нах.
аффтор и что конкретно тебе не понятно? Или есть желание что бы мало того, что код стырил - так еще и объяснение для препода тебе написали? Иди нах.
если можно хотя бы эту части помогите разобраться
#1
[COLOR="Black"]
{
double res = 3 * (double)Math.Pow(i, i);
ulong fact = 1;
for (int j = 1; j <= i; j++)
{
fact = fact * (ulong)j;
}
res = fact / res;
arr = res;
}
#2
[COLOR="Black"]
from s in str.ToCharArray()
where (s != ' ')
group s by s into группа
where (группа.Count() == 1)
select группа.First();
p.s.[FONT="Arial Black"]kot_[/FONT] для чего посылать, я только хотел разобраться (((
вот первые 6, остальные вечером приду допишу, сейчас не когда да и голова как то не варит!!!:)
;Task 1
;
(defun rek_tpl (l n)
(if (eql n 25)
l
(rek_tpl (append l (list (expt 2 n))) (1+ n))
)
)
(defun two_pow_list ()
(rek_tpl nil 0)
)
;
;Task 2
;
(defun rek_sp (r l1 l2)
(cond
((equal l1 nil) (append r l2))
((equal l2 nil) (append r l1))
(t (if (< (car l1) (car l2))
(rek_sp (append r (list (car l1))) (cdr l1) l2)
(rek_sp (append r (list (car l2))) l1 (cdr l2))
))
)
)
(defun sort_append (l1 l2)
(if (and (listp l1) (listp l2))
(rek_sp nil l1 l2)
nil
)
)
;
;Task 3
;
(defun rek_ff (l x n)
(if (equal l nil)
nil
(if (equal x (car l))
n
(rek_ff (cdr l) x (1+ n))
)
)
)
(defun find_first(l x)
(if (listp l)
(rek_ff l x 1)
nil
)
)
;
;Task 4
;
(defun rek_ic (l x)
(if (equal l nil)
nil
(if (equal (car l) x)
t
(rek_ic (cdr l) x)
)
)
)
(defun it_contain (l x)
(if (and (listp l) (numberp x))
(rek_ic l x)
nil
)
)
;
;Task 5
;
(defun rek_onm (r l)
(if (equal l nil)
r
(if (= (rem (car l) (car r)) 0)
(rek_onm r (cdr l))
(rek_onm (append r (list (car l))) (cdr l))
)
)
)
(defun onlu_not_mult (l)
(if (and (listp l) (not (equal l nil)))
(rek_onm (list (car l)) (cdr l))
nil
)
)
;
;Task 6
;
(defun is_not_in (l x)
(if (equal l nil)
t
(if (equal (car l) x)
nil
(is_not_in (cdr l) x)
)
)
)
(defun rek_rc (r l)
(if (equal l nil)
r
(if (is_not_in r (car l))
(rek_rc (append r (list (car l))) (cdr l))
(rek_rc r (cdr l))
)
)
)
(defun remove_copy (l)
(if (listp l)
(rek_rc (list (car l)) (cdr l))
nil
)
)
зы: писалось на вскидку, так что есть весьма не хилая вероятность, что существуют гораздо более элегантные решения!=)))