Минимальный и максимальный путь по алгоритму Беллмана-Калаба и Форда - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добрый день ,не работает код который считывает минимальный и максимальный путь по алгоритму Белламана-Калабы и Форда. Код:
#include 
#include 
#include 
#include
#include
#include
void setcolor(unsigned short color)
{
HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hcon,color);
}

int a[20][20],x,c[20][20];
int vector(int a[15],int u)
{int m,i,t=a[0];
  for(m=u;m>=2;m--)
    for(i=0;ia[i+1])
      t=a[i+1];
return t;
}
int vector1(int a[15],int u)
{int m,i,t=a[0];
  for(m=u;m>=2;m--)
    for(i=0;ix) {printf("\nAsa virf graful dat nu Exista!\n");goto r;}
   for(i=0;i\n",x1,x2);
   getch(); goto b;  }
   if(x1==x2) goto b;
   printf("p[dmin(x%d,x%d)]=%d\n",x1,x2,m[x1-1]);
   l=x1-1;o=0;
  c:for(j=0;j=2;n--)
       for(k=0;km2[k+1])
    {t=m2[k+1];m2[k+1]=m2[k];m2[k]=t;
     t1=p[k+1];p[k+1]=p[k];p[k]=t1;}
    if(m2[k]==m2[k+1]&&p[k]==l)
     {t1=p[k+1];p[k+1]=p[k];p[k]=t1;}
    }
      m1[o]=p[0];o++;l=p[0];
       if(l!=x2-1) goto c;
    printf(" Drumul de valoarea minima din virful x%d in virful x%d este\n",x1,x2);
    printf("(x%d",x1);
    for(j=0;j\n");
   k=getch();
   b:   if(k==27) break;
 }
}
void bkmax()
{ int i,j,x1,x2;
   int m[15],m1[15],m2[15];
   int k,l,t,o,n,p[15],t1;
   for(i=0;ix) {printf("\nAsa virf graful dat nu Exista!\n");goto r;}
   for(i=0;i1000){printf("Graful dat contine circuit!!!");
   int delay(1000);
   break;}
   printf("p[dmax(x%d,x%d)]=%d\n",x1,x2,m[x1-1]);
   l=x1-1;o=0;
 c:for(j=0;j=2;n--)
       for(k=0;k\n",x1,x2);
    printf("(x%d",x1);
    for(j=0;j\n");
   k=getch();
   b:   if(k==27) break;
 }
}
void ford()
{struct arc{int u;
 int o;}b[30];
 int i,j,x1,x2,t=0;
 int p1[15],p[15],k,A,l,d[15],y1,y2;
 for(i=0;i\n");
 scanf("%d",&x1);
 if(x1<0||x1>x) {printf("\nAsa virf graful dat nu contine!\n");goto b;}
  for(j=0;jc[b[i].u][b[i].o]) {p[b[i].o]=p[b[i].u]+c[b[i].u][b[i].o];}
    }
   k=0;
   for(i=0;i\n",x1,x2);getch();goto a;}
  if(x2<0||x2>x) {printf("\nAsa virf graful dat nu Exista!\n");getch();goto a;}
  printf("Valoarea drumului minim din virful x%d in virful x%d este\n",x1,x2);
  printf("p[dmin(x%d,x%d)]=%d",x1,x2,p[x2-1]);
  printf("\nDrumul de valoarea minima din virful x%d in virful x%d este\n",x1,x2);
  l=x2-1;k=0;
  for(i=t-1;i>=0;i--)
   if(b[i].o==l)
   if(p[b[i].o]-p[b[i].u]==c[b[i].u][b[i].o]) {d[k]=b[i].o;k++;l=b[i].u;}
  printf("dmin=(x%d",x1);
  for(i=k-1;i>=0;i--)
  printf(",x%d",d[i]+1);
  printf(")\n");
  A=getch();
 a:  if(A==27) break;
 }
}
void intr()
{  int xx,yy,A,t,n,m,m1,n1,i1,j1,i,j;
setcolor(10);
printf("Lucrarea de laborator numarul 3");
        getch();
        printf("                     INTRODUCETI DATELE                      \n");
 
   printf(" Numarul de virfuri este:");
   scanf("%d",&x);
   printf("Introduceti matricea de adiacenta:");
   printf("\n\nA    ");
   for (i=0;i\n");
   yy=9;xx=0;
   for (i=0;i\nx%d",i+1);
      for (j=0;j\n");
   for(i=0;i\nDoriti sa corectati poderea unui arc(enter-da;orice tasta-nu;)?\n");
   A=getch();
   if(A==13){printf("Dati virful initial=");scanf("%d",&i);
         printf("Dati virful final=");scanf("%d",&j);
         printf("p(x%d,x%d)=",i,j);scanf("%d",&c[i-1][j-1]);goto a;
         }
for(;;)   { 
    printf("\n\t\tAlegeti algoritmul care sa prelucreze graful dat:\n");
    printf("\n\t1-Algoritmul Bellman-Kalaba de determinare a drumurilor minime;\n");
    printf("\n\t2-Algoritmul Bellman-Kalaba de determinare a drumurilor maxime;\n");
    printf("\n\t3-Algoritmul Ford de determinare a drumurilor de valoare minima;\n");
    printf("\n\t4-Exit;\n");
     scanf("%d",&c1);
     switch(c1)
       {   case 1:bkmin();break;
           case 2:bkmax();break;
           case 3:ford();break;
           case 4:exit(0);break;
       }
  }
}
А ошибки выдает вот такие: C:\Users\User\Desktop\Áåçûìÿííûé2.cpp In function 'void intr()': C:\Users\User\Desktop\Áåçûìÿííûé2.cpp [Error] 'gotoxy' was not declared in this scope По поводу 2 ошибки знаю что нужно использовать что-то вроде
void gotoxy(int x, int y)
но не понимаю как именно,если кто-то сможет помочь буду крайне благодарен.

Решение задачи: «Минимальный и максимальный путь по алгоритму Беллмана-Калаба и Форда»

textual
Листинг программы
void gotoxy(int x, int y) 
{ 
    COORD coord;
    coord.X = x; 
    coord.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}

Объяснение кода листинга программы

  1. Код определяет функцию gotoxy, которая принимает два аргумента типа int - x и y
  2. Внутри функции создается структура COORD, которая содержит координаты курсора
  3. Значения координат X и Y устанавливаются равными x и y соответственно
  4. Используя функцию SetConsoleCursorPosition, код устанавливает позицию курсора в соответствии с переданными координатами
  5. Функция возвращает void, то есть не возвращает никакого значения

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы