Об игре
Новости
Войти
Регистрация
Рейтинг
Форум
8:43
3426
 online
Требуется авторизация
Вы не авторизованы
   Форумы-->Форум для внеигровых тем-->
1|2

АвторКто разбирается в Паскале
для Йопсель:
Так лучше?)
лучше, но можно попробовать еще лучше, с классами эквивалентности - чтобы не сравнивать каждую прямую с каждой, так как если есть параллельные прямые - то их можно считать уже одним объектом :) Но Паскаль я не помню)
Ну же =)
13к!!!
За исходник работающей проги даю 15к!!!
Целых 15000 золотых!!!
int pr(double *a,double *b)
{
int i,j,k=0,max=0,max_i=0;
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
if ((a[i]/a[j])!=(b[i]/b[j])) {k++;}
if (k>max) {max=k;max_i=i;}
}
return i;
}

Как - то так на СИ будет примерно.
просто так хреново, что ты себе не представляешь как лениво...
для Антохен:
а на паскале накатать можешь?
Давайте! 15к!
для RCAPDART:
Считать массивы сможешь сам, нарисовать - тоже, ибо особая рисовальная магия в паскале мне неизвестна:
Тело программы - в сообщении 26 (только там возвращает она не i, а max_i).
На Паскале будет примерно так:
Type my = array[1..n] of double; //Или как там происходит объявление типа?
 Function pr(my a,my b);
  int i,j,k:=0,max:=0,max_i:=0;
   begin
   for i:=1 to n do
    begin
    for j:=1 to n do
     if (a[i]<>a[j]) then inc(k)
     else
      if (b[i]=b[j]) then
      begin
       writeln("Panic! Logical error!");
       //Тут должен быть экстренный выход из программы - нарушение условия.
      end;
    if (k>max) then
    begin
     max:=k;
     max_i:=i;
    end;
   end;
   pr=max_i;
   end;
Далее считываем массивы, вызываем эту функцию, рисуем прямые, выделяем прямую с номером max_i другим цветом.
Это при условии, что прямые заданы как y=ax+b, среди них нет одинаковых (как по условию, но в нем не сказано, какие коэффициенты прямых даны).
Кое - где может синтаксис быть кривым, плохо помню.
для Антохен:
таких прямых может быть несколько, а у тебя только одна всегда выделяется :)
для Антохен:

Не вижу никакого нарушения.Линии имеют право полностью накладываться.Просто во избежание проверки линии с самой собой организуй цикл немного по другому.Иначе writeln("Panic! Logical error!"); сработает n раз.
жаль я подзабыл языки.А програмка ниче доработай.

Кстати Тайпан прав.


для RCAPDART:

Если учитель у тебя нормальный (шарюший), то будет смотреть на стиль исполнения.Всегда так было чем конструкция проше - тем надежней.
Забыл сказать.С точки зрения матаматики, линии, которые накладываются друг на друга, имеют бесконечное множество пересечений.

Просто сначала подумал что праметр - b - можно вопще не учитывать, на самом деле такая проверка имеет смысл.Только придется обьяснить концепцию такой проверки.
program m;
Uses Crt;
Const n=10;
eps=1000;
Type lines=array[1..n,1..2] of real;
Var t:text;
l:lines;
i,j,num,max,cross:byte;

Function is_cross(m,k:byte):boolean;
begin
if l[k,1]=0 then
if l[m,1]<>0 then is_cross:=true
else is_cross:=false
else
if l[k,2]=0 then
if l[m,1]<>l[k,1] then is_cross:=true
else is_cross:=false
else
if (round(eps*l[m,1]/l[k,1])<>round(eps*l[m,2]/l[k,2]))
and
(l[m,1]<>l[k,1]) then is_cross:=true
else is_cross:=false
end;

Begin
assign(t,'lines.txt');
reset(t);
for i:=1 to n do
readln(t,l[i,1],l[i,2]);
close(t);
max:=0;
for i:=1 to n do
begin
cross:=0;
for j:=1 to n do
if is_cross(i,j) then inc(cross);
if cross>max then begin
max:=cross;
num:=i
end;
end;
clrscr;
textbackground(1);
textcolor(14);
clrscr;
writeln('The max number of crosses has line N=',num,' with ',max,'crosses');
writeln('Press <ESC>');
repeat until readkey=#27
End.
Программа работает(отлажена), но только в текстовом режиме - нет у меня модуля граф и скачивать в лом, нарисуй уж сам. Выводит на экран номер прямой и кол-во ее пересечений. Для нормальной работы необходимо создать в той же папке, что и сама программа текстовой файл lines.txt с данными в виде - n строк, в каждой строке по два числа разделенных пробелом - коэффициенты прямой. Например, такой
12 1
-2 4
-2 5
12 -4
0 2
-12 3
-1 0
12 5
0 -4
-2 -2
для Aili:
она мою 1-ую версию тестировала файлом
с текстом
7
13 5
5 7 7
3 5 1
9 3 3
1 1 1
4 4 7
9 1 1
=)
всё! Спасибо Aili =)
тема закрыта by RCAPDART (2008-12-14 13:15:36)
1|2
К списку тем
2007-2025, онлайн игры HeroesWM