IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> граф!
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Женский
Реальное имя: Гузель

Репутация: -  0  +


Как упростить эту прогу с графом. Хочется че-нить по-проще!!!Помогите кто как может…пожалуйста!
Код
{******PROGRAMMA*DLYA*IZOBRAZHENIYA*GRAFA*PO*SMEZHNOI*MATRICE***************}
      {******************************************************}
uses Crt, Graph; {biblioteki}
{*****************************CONSTANTS*************************************}
const pi=3.1415; {chislo pi}
rad=120;         {rasstoyanie ot centra do vershin
                  v pixelakh (luchshe menshe 200)}
cf=0;            {cvet fona}
c1=5;            {osnovnoi cvet dug}
c2=3;            {cvet concov dug}
cv=1;            {cvet vershin}
ct=7;            {cvet teksta}
cn=4;            {cvet nomerov vershin}
xt=10;yt=10;     {koordinaty matricy}
d=0.1;           {dlina konchikov}
u=0.2;           {ugol(v radianakh)}
pet=0.2;         {radius po otn. k petle}
shag=10;         {rasst.m/u bukvami v matrice}
k=15;             {max kol-vo vershin}
{*****************************TYPES*****************************************}
type koord=record{tip-koordinaty tochki}
x:real;          {*}
y:real           {*}
end;             {*}
{*****************************VARIANTS**************************************}
var              {*}
Gd, Gm: Integer; {graficheskie peremennye}
t:real;          {parametr}
a:array[1..k,1..k]of integer;{matricy smezhnosti i incidentnosti}
b:array[1..k]of koord;{koordinatnye polozheniya vershin}
x,y:integer;     {seredina ekrana}
i,j,j1:byte;        {schetchiki}
n:integer;       {kolichestvo vershin}
s:string;        {dlya perevoda integer->string}
xt1,yt1:integer; {*}
c:char;          {*}
x0,y0:real;      {*}
alfa:real;       {*}
z:char;          {*}
p:integer;       {*}
l1,l2:array[1..k*k]of boolean;   {*}
{******************************MAIN*****************************************}
begin                {*}
{---------------------------------------------------------------------------}
  clrscr;
  randomize;         {generator sluch.chisel}
  repeat             {cikl zanovo}
  clrscr;
  writeln('Vyberite deistvie!');
  writeln('S - vvesti matricu smezhnosti;');
  writeln('I - vvesti matricu incidentnosti;');
  writeln('Drugie knopki - sgenerirovat sluchainuiu matricu;');
  writeln('Q - vychod iz programmy;');
  z:=readkey;
  if z='q' then break;
{------------------------Vvod-kolichestva-vershin---------------------------}
  repeat
  clrscr;            {ochistka ekrana}
  write('Vvedite kolichestvo vershin: ');
  readln(n);         {vvod kolichestva vershin}
  until (n>0)and(n<k+1);{*}
{------------------------Vvod-matricy-smezhnosti---------------------------}
  if z='s' then
  for j:=1 to n do
  for i:=1 to n do
  begin
  repeat
  write('Vvedite A(',i,',',j,')=');
  c:=readkey;
  until (c='0')or(c='1');
  writeln(c);
  val(c,a[j,i],p);
  end;
{------------------------Vvod-matricy-incidentnosti------------------------}
  if z='i' then
  begin
  write('Vvedite kolichestvo dug: ');
  readln(p);
  for i:=1 to p do
  begin
  repeat
  write('Vvedite nomer ishodnoi vershiny dugi nomer ',i,': ');
  readln(j);
  until (j>0)and(j<=n);
  repeat
  write('Vvedite nomer konechnoi vershiny dugi nomer ',i,': ');
  readln(j1);
  until (j1>0)and(j1<=n);
  a[j,j1]:=1;
  end;
  end;
{------------------------Vvod-sluchainoi-matrici---------------------------}
  if (z<>'s')and(z<>'i') then
  for i:= 1 to n do  {cikl strok}
  begin              {*}
    write('(');      {*}
    for j:=1 to n do {cikl stolbtsov}
    begin            {*}
      a[i,j]:=random(2);{generiruem chisla v matrice}
      write(a[i,j]:2,' '){vyvodim matricu}
    end;             {*}
    write(');');     {okonchanie stroki}
    writeln;         {*}
  end;               {*}
  readkey;           {programma ozhidaet nazhatie}
{-------------------------Vkluchaem-grafiky---------------------------------}
  Gd := Detect;                {vkluchaetsya graf.rezhim}
  InitGraph(Gd, Gm, 'c:\TP\BGI');       {*}
  if GraphResult <> grOk then  {*}
    Halt(1);                   {*}
  setbkcolor(cf);              {cvet fona}
{---------------------------------------------------------------------------}
  y:=(getmaxy div 2);  {nahodim \/}
  x:=(getmaxx div 2);  {centr ekrana}
{--------------------Zanosim-koordinaty-vershin-v-otdelnuyu-matricu---------}
  for i:=0 to n-1 do     {cikl-vvod koordinat dlya vershin}
  begin                {*}
    t:=(2*pi*i)/n;     {vychislenie parametra}
    b[i+1].x:=cos(t);    {ordinata}
    b[i+1].y:=sin(t);    {abcissa}
  end;                 {*}
{--------------------Chertim-osnovnye-linii---------------------------------}
  setcolor(c1);                   {cvet linii}
  for i:=1 to n do                {cikly dlya chercheniya osnovhykh linii\/}
  for j:=1 to n do                {i chercheniya petel}
  begin                           {*}
    if a[i,j]=1 then              {nahozhdenie edinic v matrice}
    begin                         {*}
      if i<>j then                {esli ne petlya -> to}
      begin                       {*}
      line( round(x+b[j].x*rad),  {liniya}
            round(y+b[j].y*rad),  {formula\/}
            round(x+b[i].x*rad),  {<centr>+<koord.vershiny>*<rasst.do centra>}
            round(y+b[i].y*rad)); {*}
      end                         {*}
      else circle( round(x+b[j].x*rad*(1+pet)),{petlya(okruzhnost)}
      round(y+b[j].y*rad*(1+pet)),{*}
                   round(rad*pet));{radius petli}
    end;                          {*}
  end;                            {*}
{---------------------Chertim-koncy-----------------------------------------}
  setlinestyle(0,0,2);{menyaem stil linii na tolstyi}
  setcolor(c2);       {cvet koncov vektora}
  for i:=1 to n do    {novyi cikl dlya chercheniya koncov}
  for j:=1 to n do    {*}
    if (a[i,j]=1)and(i<>j) then {esli ne petlya}
    begin                       {*}
      y0:=b[i].y-b[j].y;x0:=b[i].x-b[j].x;{*}
      if x0<>0                   {esli m/o delit}
      then                       {*}
        if x0>0 then alfa:=arctan(y0/x0)    {sprava ot ordinaty}
              else alfa:=pi+arctan(y0/x0) {sleva ot ordinaty}
      else if y0>0 then alfa:=pi/2 else alfa:=3*pi/2;{nuli}
      line( round(x+b[j].x*rad),{liniya 1}
            round(y+b[j].y*rad),{*}
            round(x+b[j].x*rad+((cos(alfa-u))*(d)*rad)),{*}
            round(y+b[j].y*rad+((sin(alfa-u))*(d)*rad)));{*}
      line( round(x+b[j].x*rad),{liniya 2}
            round(y+b[j].y*rad),{*}
            round(x+b[j].x*rad+((cos(alfa+u))*(d)*rad)),{*}
            round(y+b[j].y*rad+((sin(alfa+u))*(d)*rad)));{*}
    end;                        {*}
{--------------------Vyvodim-nomera-vershin---------------------------------}
  for j:=1 to n do   {novyi cikl dlya vivoda nomerov vershin}
  begin              {*}
    setcolor(cn);    {cvet nomerov vershin}
    str(j,s);        {*}
    outtextxy(round(x+(b[j].x)*rad+3),round(y+(b[j].y)*rad+3), s);{*}
    setcolor(cv);    {cvet vershin}
    circle(round(x+(b[j].x)*rad),round(y+(b[j].y)*rad),1){*}
  end;               {*}
{-------------------Vyvodim-matricu-v-graf.-rezhime-------------------------}
  setcolor(ct);      {cvet matrici}
  outtextxy(xt,yt+round(((n-1)/2)*shag),'A(G)=');{vyvod 'A(G)='po vert.c-ru}
  yt1:=yt;           {ordinata sovpadaet}
  for i:=1 to n do   {novyi cikl vyvoda matrici}
  begin{*}
    xt1:=xt+5*shag;  {shtoby ne bylo nalozheniya na 'A(G)='}
    for j:=1 to n do {*}
    begin            {*}
      str(a[i,j],s); {znachenie v stroku}
      outtextxy(xt1,yt1, s);{vyvod po koordinatam}
      xt1:=xt1+shag; {perehod po x}
    end;             {*}
    yt1:=yt1+shag;   {perehod po y}
  end;               {*}
  setlinestyle(0,0,1);{*}
  line(xt+(5+n)*shag-2,yt,xt+(5+n)*shag-2,yt+(n)*shag-2);{*}
  line(xt+5*shag-2,yt,xt+5*shag-2,yt+(n)*shag-2);{*}
{-------------------Zavershenie---------------------------------------------}
  setcolor(ct);
  outtextxy(10,getmaxy-10,'Esche?(y,n) ');
  repeat
  c:=readkey;
  until (c='n')or(c='y');
  CloseGraph;        {konec grafiki}
  until c='n';       {*}
end.               {vykhod}
{***************************END*OF*FILE*************************************}
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 25.01.2022 14:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name