Домашнее задание)

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Ответить
pachalol
Сообщения: 1
Зарегистрирован: 13 дек 2012, 22:52

Здравствуйте, прошу помогите сделать Домашнее задание.

Задача очень проста)): робот должен добраться от А в пункт Б самым коротким путём. Дается массив 4 на 3 и каждый ход различная длина. Робот может ходить тока в низ.Прим.
Ну собственно эталон программы:
#include "stdafx.h"
class Graph
{int a[5][5];
int c[5][5];
int p[5][5];

public:
Graph()
{
int i,j,k;
for(i=0;i<=4;i++)
for(j=0;j<=4;j++) c[j]=999;

for(k=0;k<=6;k++)
{
scanf("%i%i",&i,&j);
scanf("%i",&c[j]);
}
}
void Floyd()
{
int i,j,k;
for(i=0;i<=4;i++)
for(j=0;j<=4;j++) {a[j]=c[j];p[j]=-1;}

for(i=0;i<=4;i++) a=0;

for(k=0;k<=4;k++)
for(i=0;i<=4;i++)
for(j=0;j<=4;j++)
if (a[k]+a[k][j]<a[j])
{
a[j]=a[i][k]+a[k][j];p[i][j]=k;
}
}

void print_a()
{
int i,j;
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++) printf("%8i",a[i][j]);
printf("\n");
}
printf("\n");
}
void print_c()
{
int i,j;
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++) printf("%8i",c[i][j]);
printf("\n");
}
printf("\n");
}
void print_p()
{
int i,j;
for(i=0;i<=4;i++)
{
for(j=0;j<=4;j++) printf("%8i",p[i][j]);
printf("\n");
}
}

void path(int i,int j)
{
int k;
k=p[i][j];
if(k==-1) return;
path(i,k);
printf("%3i\n",k);
path(k,j);
}
};

int _tmain(int argc, _TCHAR* argv[])
{
Graph g;
g.Floyd();
g.print_c();
g.print_a();
g.print_p();
g.path(0,4);
return 0;
}
Откровенно говоря в программировании я полный профан и даже просто не понимаю что от меня требуется изменить в эталоне.
Прошу помогите сделать эталон рабочим.

Заранее благодарю.
Ответить