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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2011, 01:08   #1
Flo
 
Регистрация: 30.11.2010
Сообщений: 5
По умолчанию Переписать прогу.

Здрасте всем. Нужна помощь, буду очень благодарен.
Есть два задания:
1) На плоскости заданы n точек своими координатами, Найдите уравнение прямой которой принадлежит наибольшее число данных точек.
2) На плоскости заданы 2n точек своими координатами, Найдите уравнение какой-либо прямой, делящей данное множество на два множества по n точек.
К первому заданию есть код, Полностью рабочий, нужно переделать его во второе задание.
Код к №1
Код:
Program lalala;
type
    point=record
        x,y:real;
    end;
var
  cds:array [1..10] of point;
  rate:array [1..100] of byte;
  lines:array [1..100,1..10] of point;
  i,j,n,m,k,l,s,max:integer;
  check:boolean;
  
function a(x1,x2,y1,y2:real):real;
begin
    if x2<>x1 then
      a:=(y2-y1)/(x2-x1)
    else
      a:=0;
end;

function b(x1,x2,y1,y2:real):real;
begin
    if x2<>x1 then
      b:=((y1*x2) - (x1*y2))/(x2-x1)
    else
      b:=(y1*x2) - (x1*y2)
end;
  
function acr(line:integer;tochka:point):boolean;
begin
    acr:=false;
    if (tochka.x<>lines[line,1].x) or (tochka.y<>lines[line,1].y) then
       if (tochka.x<>lines[line,2].x) or (tochka.y<>lines[line,2].y) then
          if a(lines[line,2].x,tochka.x,lines[line,2].y,tochka.y) = a(lines[line,1].x,lines[line,2].x,lines[line,1].y,lines[line,2].y) then
             if b(lines[line,2].x,tochka.x,lines[line,2].y,tochka.y) = b(lines[line,1].x,lines[line,2].x,lines[line,1].y,lines[line,2].y) then
                acr:=true;
end;

  
begin

    for i := 1 to 10 do
    begin
        cds[i].x := -10000;
        cds[i].y := -10000;
    end;
    write('Vvedite kol-vo tochek: ');
    readln(n);
    i := 1;
    while(i <= n) do
    begin
        check := true;
        write('x',i,'=');
        readln(cds[i].x);
        write('y',i,'=');
        readln(cds[i].y);
        writeln;
        for j := 1 to i do
        begin
            if(i <> j) then
            begin
                if( (cds[i].x = cds[j].x) and (cds[i].y = cds[j].y) ) then
                begin
                    writeln('Vvedite druguju tochku');
                    check:= false;
                    break;
                end;
            end;
        end;
        if check then
        begin
            inc(i);
        end;
    end;
    
    m:=0;
    for i:=1 to n-1 do
        for j:=i+1 to n do
        begin
          inc(m);
          lines[m,1].x:=cds[i].x;
          lines[m,1].y:=cds[i].y;
          lines[m,2].x:=cds[j].x;
          lines[m,2].y:=cds[j].y;
        end;
    for i:=1 to m do
        rate[i]:=2;
    for i:=1 to m do
        for j:=1 to n do
        begin
            if acr(i,cds[j]) then
            begin
                inc(rate[i]);
                lines[i,rate[i]].x:=cds[j].x;
                lines[i,rate[i]].y:=cds[j].y;
            end;
        end;
    max:=1;
    for i:=2 to m do
        if rate[i]>rate[max] then
            max:=i;
    writeln('y=',a
    (lines[max,1].x,lines[max,rate[max]].x,lines[max,1].y,lines[max,rate[max]].y),'x+(',b(lines[max,1].x,lines[max,rate[max]].x,lines[max,1].y,lines[max,rate[max]].y),')');
end.
Заранее спасибо, жду любой помощи.
Flo вне форума Ответить с цитированием
Старый 05.03.2011, 17:29   #2
Flo
 
Регистрация: 30.11.2010
Сообщений: 5
По умолчанию

Гайс, реали нид хелп виз ит.
Flo вне форума Ответить с цитированием
Старый 05.03.2011, 17:46   #3
Летучий_СкилетиК
Форумчанин
 
Аватар для Летучий_СкилетиК
 
Регистрация: 04.02.2011
Сообщений: 260
По умолчанию

Цитата:
Сообщение от Flo Посмотреть сообщение
Гайс, реали нид хелп виз ит.
, код обьемный, изменять нужно многое, помогу за вознагрождение
Летучий_СкилетиК вне форума Ответить с цитированием
Старый 15.03.2011, 19:41   #4
Flo
 
Регистрация: 30.11.2010
Сообщений: 5
По умолчанию

Цитата:
Сообщение от Летучий_СкилетиК Посмотреть сообщение
, код обьемный, изменять нужно многое, помогу за вознагрождение
Я думаю что мы разберёмся) Скайп или айсикью ( лучше скайп )
Flo вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переписать insolent Общие вопросы C/C++ 6 24.08.2010 14:32
как ппеределать обычную прогу в прогу из функциональных блоков серг Помощь студентам 0 07.12.2009 22:08
Немогу переделать(переписать) прогу!!!! metamfetamin Помощь студентам 0 25.11.2007 14:27
Переписать прогу работуюшую в Dos'e под Windows Rain Свободное общение 1 27.04.2007 15:03