Минимальный и максимальный путь по алгоритму Беллмана-Калаба и Форда - C (СИ)
Формулировка задачи:
Добрый день ,не работает код который считывает минимальный и максимальный путь по алгоритму Белламана-Калабы и Форда.
Код:А ошибки выдает вот такие:
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 ошибки знаю что нужно использовать что-то вроде но не понимаю как именно,если кто-то сможет помочь буду крайне благодарен.
#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;i a[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;i x) {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;k m2[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;i x) {printf("\nAsa virf graful dat nu Exista!\n");goto r;} for(i=0;i 1000){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;j c[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; } } }
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); }
Объяснение кода листинга программы
- Код определяет функцию gotoxy, которая принимает два аргумента типа int - x и y
- Внутри функции создается структура COORD, которая содержит координаты курсора
- Значения координат X и Y устанавливаются равными x и y соответственно
- Используя функцию SetConsoleCursorPosition, код устанавливает позицию курсора в соответствии с переданными координатами
- Функция возвращает void, то есть не возвращает никакого значения