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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2013, 12:23   #1
Гузель23
 
Регистрация: 03.03.2013
Сообщений: 9
По умолчанию перевод на c#

привет) помогите пожалуйста перевести программу на c#

Код:
type point=record
           x,y:real;
           end;
     okr=record
         x,y,r:real;
         end;
const nmax=20;

function Peres(a,b: point; c : okr):boolean;
var s,ab,h:real;
begin

s:=abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y));
ab:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));
h:=s/ab;
Peres:=h<c.r;
end;
var a:array[1..nmax] of point;
    b:array[1..nmax] of okr;
    n,m,i,j,k,p,mx,imx,jmx:integer;
begin
clrscr;
randomize;
repeat
write('Количество точек до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество окружностей до ',nmax,' m=');
readln(m);
until m in [1..nmax];
for i:=1 to n do
 begin
  a[i].x:=-10+random*21;
  a[i].y:=-10+random*21;
 end;
for i:=1 to m do
 begin
  b[i].x:=-5+11*random;
  b[i].y:=-5+11*random;
  b[i].r:=5*random;
 end;
writeln('Координаты точек:');
write('X:');
for i:=1 to n do
write(a[i].x:6:2);
writeln;
write('Y:');
for i:=1 to n do
write(a[i].y:6:2);
writeln;
writeln;
writeln('Параметры окружностей:');
write('X:');
for i:=1 to m do
write(b[i].x:6:2);
writeln;
write('Y:');
for i:=1 to m do
write(b[i].y:6:2);
writeln;
write('R:');
for i:=1 to m do
write(b[i].r:6:2);
writeln;
writeln;

mx:=0;
imx:=0;
jmx:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
 begin
  k:=0;
  for p:=1 to m do
  if Peres(a[i],a[j],b[p]) then k:=k+1;
  if k>mx then
   begin
    mx:=k;
    imx:=i;
    jmx:=j;
   end;
 end;
if mx=0 then write('Нет пересекающихся прямых и окружностей')
else
 begin
  writeln('Максимальное число пересечений прямой с окружностями=',mx);
  write('Эта прямая проходит через точки (',a[imx].x:0:2,';',a[imx].y:0:2,') и (',a[jmx].x:0:2,';',a[jmx].y:0:2,')');
 end;
readln
end.

Последний раз редактировалось Stilet; 21.04.2013 в 13:01.
Гузель23 вне форума Ответить с цитированием
Старый 21.04.2013, 15:53   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

в чем трудности?
eval вне форума Ответить с цитированием
Старый 21.04.2013, 17:12   #3
Гузель23
 
Регистрация: 03.03.2013
Сообщений: 9
По умолчанию

я пробовала, но что то не очень получилось
Код:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace
ConsoleApplication1
{

    class Program
    {

        static void Main(string[] args)
        {
            int nmax;
        }

        public
         struct Point
        {

            double x, y, a, b;

        };

        public struct Okr
        {
            double x, y, r;



        };
        const
        int nmax = 20;
        bool
        Peres(Point a, Point b, Okr c);

        static void Main(string[] args)
        {




            Point[,] myArr = new Point[1, nmax];

            Okr[,] myArra = new Okr[1, nmax];

            int n, m, i, j, k, p, mx, imx, jmx;


            Random
             rand1 = new Random(n);
            Console.WriteLine("введите кол-во точек до ", nmax, " n=");
            n =
           Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("введите кол-во окружностей до ", nmax, " m=");
            m =Convert.ToInt32(Console.ReadLine());
            while
            (m < 1 || m > 20)
                for
                (i = 1; i < n; i++)
                {
                    a[i].x = rand1() % 30 - 10;
                    a[i].y = rand1() % 30 - 10;
                }
            for
            (i = 0; i < m; i++)
            {
                b[i].x = rand1() % 30 - 10;
                b[i].y = rand1() % 30 - 10;
                b[i].r = 5 * rand1();
            }
            Console.WriteLine("координаты точек");
            Console.Write("X:");
            for
            (i = 1; i < n; i++)
                Console.WriteLine(a[i].x);
            Console.WriteLine();
            Console.Write("Y:");
            for
            (i = 1; i < n; i++)
                Console.WriteLine(a[i].y);
            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("параметры окружностей");
            Console.Write("X:");
            for
            (i = 1; i < m; i++)
                Console.WriteLine(b[i].x);
            Console.WriteLine();
            Console.WriteLine("Y:");
            for
            (i = 1; i < m; i++)
                Console.WriteLine(b[i].y);
            Console.WriteLine();
            Console.WriteLine("R:");
            for
            (i = 1; i < m; i++)
                Console.WriteLine(b[i].r);
            Console.WriteLine();
            Console.WriteLine();
            mx = 0;
            imx = 0;
            jmx = 0;
            for
            (i = 1; i < n - 1; i++)

                for (j = i + 1; j < n; j++)
                {
                    k = 0;

                    for (int p = 1; p < m; p++)

                        if (Peres(a[i], a[j], b[p]))
                            k = k + 1;

                    if (k > mx)
                    {
                        mx = k;
                        imx = i;
                        jmx = j;
                    }
                }
            if
            (mx == 0)
                Console.WriteLine("нет пересечений с окружностью");
            else
            {

                Console.WriteLine("максимальное число пересечений=", mx);

                Console.Write("эта прямая проходит через точки (", a[imx].x, ";", a[imx].y, ") и (", a[jmx].x, ";", a[jmx].y, ")");
            }
            Console.ReadLine();
        }

        bool Peres(Point a, Point b, Okr c)
        {

            double s, ab, h;
            s =
           Math.Abs(a.x * (b.y - c.y) + b.x * (c.y - a.y) + c.x * (a.y - b.y));
            ab =
           Math.Sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
            h = s / ab;

            return (h < c.r);
        }
    }
}
Ошибка 1.уже определяет член "Main" с такими же типами параметров.
Ошибка 2.уже определяет член "Peres" с такими же типами параметров.
и не факт что это все ошибки..

Последний раз редактировалось Stilet; 21.04.2013 в 17:52.
Гузель23 вне форума Ответить с цитированием
Старый 21.04.2013, 17:32   #4
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,022
По умолчанию

ну правильно, зачем вы 2 раза сделали одинаковые методы?
eval вне форума Ответить с цитированием
Старый 21.04.2013, 17:51   #5
Гузель23
 
Регистрация: 03.03.2013
Сообщений: 9
По умолчанию

может вы мне скажете какие строчки убрать? а то я не понимаю..
переводила строчка в строчку с паскалевского варианта
Гузель23 вне форума Ответить с цитированием
Старый 21.04.2013, 17:53   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
static void Main(string[] args)
{
int nmax;
}
Убери это.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.04.2013, 18:02   #7
Гузель23
 
Регистрация: 03.03.2013
Сообщений: 9
По умолчанию

теперь осталась одна ошибка :уже определяет член "Peres" с такими же типами параметров.
Гузель23 вне форума Ответить с цитированием
Старый 21.04.2013, 18:07   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
bool
Peres(Point a, Point b, Okr c);
Это что?
Нескромный вопрос: А ты не желаешь изучить СиШарп? Хотя бы основы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.04.2013, 16:44   #9
Izobara
Форумчанин
 
Аватар для Izobara
 
Регистрация: 26.12.2012
Сообщений: 227
По умолчанию

Цитата:
Нескромный вопрос: А ты не желаешь изучить СиШарп? Хотя бы основы?
Действительно нескромный.
И так вон какую простыню сама наваяла...
"I believe I can fly" - C++, "What do you want from me" - Delphi, "Yesterday" - Pascal, "Let it be" - C#... Программисты-музыканты-полиглоты поймут
Izobara вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод на С++ spinogryz_ua Помощь студентам 2 25.12.2012 06:52
Перевод с С++ Vovchik123 C# (си шарп) 0 15.11.2011 23:50
Перевод с ЯД в ВМ. Abuhamed Свободное общение 16 21.06.2011 19:05
перевод KostyaS Общие вопросы C/C++ 0 05.01.2011 14:52
перевод lilek Помощь студентам 0 23.12.2010 21:49