Новый участник
Сообщения: 1
Благодарности: 0
Профиль
|
Отправить PM
| Цитировать
Изменения
Автор: Drongo
Дата: 16-12-2013
Привет. Ребята,товарищи,братья) Помогите пожалуйста девушке с курсачом) Я написала курсовик полностью на паскале( Но сдавать его мне нужно полностью на ненавистном мне языке С++ ( ах,да оказывается мы его весь семестр учили,а я и не заметила).буду очень рада если кто-нибудь мне очень поможет в этом нелегком деле. так же не останусь в долгу) с меня бутылка хорошего коньяка/виски или шоколадка большая ( в зависимости что ты предпочитаешь,и если ты из Питера)
задача:Найти такую точку заданную на плоскости множества точек, сумма расстояний от которой до остальных минимальна.( т.е Даны точки, заданные двумя координатами.
Вычислить по формуле расстояние от каждой точки до другой. Сложить расстояния от одной точки до каждой ,сравнить полученные результаты.
Вывести координату точки такую, что сумма расстояний от этой точки до других была минимальна.) чтение координат из файла, запись результата в файл + должен быть промежуточный файл со всеми сравнениями
вот сам код ( да комментарии очень по- русски)
Код:
program kursovik;
{Ќ*©вЁ в*Єго в®зЄг, §*¤***го ** Ї«®бЄ®бвЁ ¬*®¦Ґбвў* в®зҐЄ,}
{б㬬* а*ббв®п*Ё© ®в Є®в®а®© ¤® ®бв*«м*ле ¬Ё*Ё¬*«м**}
uses crt;
const Max=100;
M=high(integer);
type vert=1..2; horiz=1..Max; opentype=integer;
numbtype=longint;
numbreal=real;
mass=array[horiz] of opentype;
matrix=array[vert] of mass;
var koord:matrix;{Љ®®а¤Ё**вл в®зҐЄ}
n:numbtype;{Љ®«ЁзҐбвў® в®зҐЄ}
fout:text;
procedure zagokovki;{‡*Ј®«®ўЄЁ}
begin{head}
GotoXY(23,2);
WriteLn('Љгаб®ў*п а*Ў®в* Ї® Їа®Ја*¬¬Ёа®ў**Ёо');
GotoXY(1,5);
WriteLn('‡*¤**ЁҐ:');
WriteLn;
WriteLn(' Ќ*©вЁ в*Єго в®зЄг, §*¤***го ** Ї«®бЄ®бвЁ ¬*®¦Ґбвў* в®зҐЄ, б㬬* а*ббв®п*Ё©');
WriteLn('®в Є®в®а®© ¤® ®бв*«м*ле ¬Ё*Ё¬*«м**.');
WriteLn;WriteLn;WriteLn;
WriteLn('ђҐиҐ*ЁҐ:');
end;{head}
procedure oprkoord(var n:numbtype;var koord:matrix);
{д®а¬Ёа®ў**ЁҐ ¬*ббЁў*}
var i,j:numbtype;
fin:text;
begin{massform}
Assign(fin,'input.txt');
Reset(fin);
n:=0;
WriteLn;
while not eof(fin) do
begin
n:=n+1;
read(fin,i);
end;
reset(fin);
n:=n div 2;
for i:=1 to 2 do
for j:=1 to n do
read(fin,koord[i,j]);
Close(fin);
end;{massform}
procedure dlopr(var n:numbtype;var koord:matrix);
{®ЇаҐ¤Ґ«Ґ*ЁҐ а*ббв®п*Ё©}
var i,j,k,l,index:numbtype;
sum,summin,rasst:numbreal;
fout:text;
begin{dlopr}
Assign(fout,'output.txt');
Rewrite(fout);
WriteLn('Љ®«ЁзҐбвў® в®зҐЄ = ',n);
WriteLn(fout,'Kolichestvo tochek = ',n);
WriteLn;
WriteLn(fout);
WriteLn('€б室*®Ґ ¬*®¦Ґбвў® в®зҐЄ:');
WriteLn(fout,'Iskchodnoe mnozhestvo tochek:');
for i:=1 to n do
begin
Write('(',koord[1,i],';',koord[2,i],') ');
Write(fout,'(',koord[1,i],';',koord[2,i],') ');
end;
WriteLn;
Writeln(fout);
WriteLn(fout,'-------------------------');
summin:=M;{¬Ё*Ё¬*«м**п б㬬*}
index:=0;{Ё*¤ҐЄб в®зЄЁ, а*ббв®п*ЁҐ ®в Є®в®а®© ¤® ®бв*«м*ле ¬Ё*Ё¬*«м*®};
for i:= 1 to n do
begin{1}
sum:=0;
WriteLn(fout,'Vibrana tochka ',i,' (',koord[1,i],',',koord[2,i],')');
for j:= 1 to n do
begin{2}
WriteLn(fout,' Rassmatrivaemaya tochka:',' (',koord[1,j],',',koord[2,j],')' );
if (i=j) then
continue
else
begin
rasst:=sqrt((koord[1,i]-koord[1,j])*(koord[1,i]-koord[1,j])
+(koord[2,i]-koord[2,j])*(koord[2,i]-koord[2,j]));
{ўлзЁб«Ґ*ЁҐ а*ббв®п*Ёп ®в ўлЎа***®© в®зЄЁ ¤® а*бб¬*ваЁў*Ґ¬®©}
sum:=sum+rasst;{ўлзЁб«Ґ*ЁҐ б㬬л а*ббв®п*Ё© ®в в®зЄЁ}
WriteLn(fout,' Rasstoyanie ot rassmatrivaemoi tochki do vibrannoi = ',rasst:5)
end;
end{2};
writeln(fout,'Summa rasstoyaniy = ',sum:5);
if sum<summin then {ба*ў*Ґ*ЁҐ Ї®«гзҐ**®© б㬬л б ¬Ё*Ё¬*«м*®©}
begin
summin:=sum;{ЇаЁ ўлЇ®«*Ґ*ЁЁ гб«®ўЁп - ЇаЁбў*Ёў**ЁҐ §**зҐ*Ёп}
index:=i; {...Ё §*Ї®¬Ё***ЁҐ Ё*¤ҐЄб* §**зҐ*Ё© Є®®а¤Ё**вл в®зЄЁ ў ¬*ббЁўҐ}
end;
writeln(fout,'---------------------------')
end{1};
writeln;
writeln('ЊЁ*Ё¬*«м**п б㬬* а*ббв®п*Ё© ¤® ®бв*«м*ле =',summin:5,' ®в в®зЄЁ: [',koord[1,index],',',koord[2,index],']');
write(fout,'Minimalnaya summa rasstoyaniy do ostalnikch =',summin:5,' ot tochki: [',koord[1,index],',',koord[2,index],']');
writeln(fout);
close(fout);
end;{dlopr}
begin{Main}
clrscr;
zagokovki;
oprkoord(n,koord);
If n=0 then
begin
Assign(fout,'output.txt');
Rewrite(fout);
WriteLn('Error!: ‚室*®© д*©« Їгбв');
WriteLn(fout,'Error!: Vhodnoi fail pust');
close(fout)
end
else if n=1 then
begin
Assign(fout,'output.txt');
Rewrite(fout);
WriteLn('Error!: €б室*л¬ ¬*®¦Ґбвў®¬ в®зҐЄ пў«пҐвбп Ґ¤Ё*б⢥***п в®зЄ*');
WriteLn(fout,'Error!: Iskchodnim mnozhestvom tochek yavlyaetsya edinstvennaya tochka');
close(fout)
end
else
dlopr(n,koord);
readln;
end.
если надо могу кинуть скрины проги ( так комменты хоть русские)