Форум программистов, компьютерный форум CyberForum.ru

комменты к проге - C++

Восстановить пароль Регистрация
 
kwkloc
0 / 0 / 0
Регистрация: 01.12.2011
Сообщений: 7
27.05.2012, 21:17     комменты к проге #1
Всем привет!
Нужна ваша помощь, напишите комментарии мне пожалуйставот к этому(вся программа ниже):
1)
Код
{
cout<<"Введите количество точек: ";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++) c[i][j]=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
cout<<"Введите растояние от  x"<<i+1<<" до x"<<j+1<<": ";
cin>>c[i][j];
}
cout<<"   ";
for(i=0;i<n;i++) cout<<"    X"<<i+1;
cout<<endl<<endl;
for(i=0;i<n;i++)
{
printf("X%d",i+1);
for(j=0;j<n;j++)
{
printf("%6d",c[i][j]);
c[j][i]=c[i][j];
}
printf("\n\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(c[i][j]==0) c[i][j]=65535; //бесконечность
cout<<"Введите начальную точку: ";
cin>>xn;
cout<<"Введите конечную точку: ";
cin>>xk;
xk--;
xn--;
if(xn==xk)
{
cout<<"Начальная и конечная точки совпадают!"<<endl;
getch();
return;
}
2)
Код
l[xn]=0;      
flag[xn]=1;   
p=xn;   	  
itoa(xn+1,s,10);  
for(i=1;i<=n;i++)
{
strcpy(path[i],"X");  
strcat(path[i],s);
}
do
{
for(i=0;i<n;i++)
if((c[p][i]!=65535)&&(!flag[i])&&(i!=p)) 		
{



C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include<iostream.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <windows.h>  // строковая переменая для хранения текста (вывод кириллицы на экран (русских букв)) 
char buf_rus_outp[255]; 
// фукнция для обработки и вывода русского текста
#define word unsigned int 
 
int i, j, n, p, xn, xk; // i, j счетчики, p Номер кратчайшего пути и наименьшей    длины пути, xn Номер начальной точки (вершины, xk Номер конечной точки (вершины)
 
int flag[11]; //Массив, i-й элемент которого имеет значение 0, когда i-й путь и расстояние временные, и принимает значение 1, когда i-й путь и расстояние становятся  постоянными
 
word c[11][11], l[11]; //c[11][11] Массив i-j элемент которого содержит расстояние между i-й и j-й точками (вершинами), l[11] Массив, который содержит длины путей (path)
 
char s[80], path[80][11]; // char s[80] Строчная переменная, которая содержит промежуточные значения пути, path[80][11] Массив строк, который содержит пути
 
int min(int n) // функция, которая возвращает номер элемента массива l[i] минимальной «неотмеченной» длиной пути(flag[i]=0
{
int i, result;
for(i=0;i<n;i++)
if(!(flag[i])) result=i;
for(i=0;i<n;i++)
if((l[result]>l[i])&&(!flag[i])) result=i;
   // Если для вершины не найден кратчайший путь и если длина пути в вершину i меньше уже найденной, то текущей вершиной становится i-я вершина
return result;
}   
word minim(word x, word y) // функция, которая возвращает минимальное из x и y.
{
if(x<y) return x;
return y;
}
   //считывание графа с x вершинами, a ребрами
void main()
{
cout<<"Введите количество точек: ";
cin>>n;
for(i=0;i<n;i++)
for(j=0;j<n;j++) c[i][j]=0;
for(i=0;i<n;i++)
for(j=i+1;j<n;j++)
{
cout<<"Введите растояние от  x"<<i+1<<" до x"<<j+1<<": ";
cin>>c[i][j];
}
cout<<"   ";
for(i=0;i<n;i++) cout<<"    X"<<i+1;
cout<<endl<<endl;
for(i=0;i<n;i++)
{
printf("X%d",i+1);
for(j=0;j<n;j++)
{
printf("%6d",c[i][j]);
c[j][i]=c[i][j];
}
printf("\n\n");
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(c[i][j]==0) c[i][j]=65535; //бесконечность
cout<<"Введите начальную точку: ";
cin>>xn;
cout<<"Введите конечную точку: ";
cin>>xk;
xk--;
xn--;
if(xn==xk)
{
cout<<"Начальная и конечная точки совпадают!"<<endl;
getch();
return;
}
for(i=0;i<n;i++)
{
flag[i]=0;    //кратчайший путь не найден
l[i]=65535;   //длина кратчайшего пути от вершины xn в i равнв бесконечности
}
l[xn]=0;      //Кратчайший путь из xn в xn = 0
flag[xn]=1;   //кратчайший путь в xn найден
p=xn;         //делаем xn текущей вершиной
itoa(xn+1,s,10);  
for(i=1;i<=n;i++)
{
strcpy(path[i],"X");   // копирует все символы указанной строки в начало другой строки
 
strcat(path[i],s);
}
do
{
// Перебираем все вершины, смежные p, и ищем для них кратчайший путь
for(i=0;i<n;i++)
if((c[p][i]!=65535)&&(!flag[i])&&(i!=p))        //Если для вершины p еще не найден кратчайший путь и новый путь в i короче чем старый, то
{
if(l[i]>l[p]+c[p][i]); 
{
itoa(i+1,s,10);
 
strcpy(path[i+1],path[p+1]);
strcat(path[i+1],"-X");
strcat(path[i+1],s);
}
l[i]=minim(l[i],l[p]+c[p][i]); //запоминаем более короткую длину пути
}
p=min(n);
flag[p]=1;  //кратчайший путь найден
}
while(p!=xk);   //начальная и конечная вершина совпали
if(l[p]!=65535)
{
cout<<"Путь: "<<path[p+1]<<endl;
cout<<"Длинна пути: "<<l[p]<<endl;
}
else
cout<<"Такого пути не существует!!!"<<endl;
getch();
}
Заранее огромное спасибо !!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2012, 21:17     комменты к проге
Посмотрите здесь:

C++ нужны комменты
C++ нужны комменты к строкам
C++ Просто расставить комменты, прога очень маленькая) Только сегодня , пожалуйста
C++ Ошибка в проге
комментарий к проге C++
C++ Хелп по проге
C++ Ошибка в проге
Комменты к реализации Красно-черного и АВЛ дерева C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 20:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru