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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Даша_93
3 / 3 / 0
Регистрация: 10.06.2012
Сообщений: 31
#1

Переписать код с использование функций - C++

25.12.2012, 17:01. Просмотров 192. Ответов 0
Метки нет (Все метки)

Какие функции можно сделать из этого кода?

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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <windows.h>
#include<iomanip>
 
using namespace std;
 
char NEWT[256];
int v;
 
int main()
{   setlocale(LC_ALL, "Russian");
int i,j;
bool f=true;
int infinity=10000;  // Бесконечность
int VES[100][100];   // Матрица весов графа
int x[100];          //Массив, содержащий единицы и нули для каждой вершины,
// x[i]=0 - еще не найден кратчайший путь в i-ю вершину,
// x[i]=1 - кратчайший путь в i-ю вершину уже найден
 
int DlinaPuti[100];     //t[i] - длина кратчайшего пути от вершины s в i
int PredVertex[100];    //h[i] - вершина, предшествующая i-й вершине на кратчайшем пути
int VERTEX;
int p;                         
cout<<("Ввести количество вершин в графе ")<<endl;
cin>>VERTEX;
p= VERTEX;           //Число вершин в графе
cout<<("Заполните матрицу весов графа ")<<endl;      // Матрица весов графа
cout<<setw(4);
int k = 0;
for (i=0;i<VERTEX;i++)
{
    cout<<("|x")<<i+1;
    k++;
}
cout<<endl;
 
for(i=0;i<VERTEX;i++)
{
    cout<<("X")<<i+1<<'|';
    for(j=0;j<VERTEX;j++)
    {
        cin>>VES[i][j];
    }
}
// Будем искать путь из вершины s в вершину g по циклу
int start;    // Номер исходной вершины
int end;      // Номер конечной вершины
while (f)
{
    cout<<("Введите стартовую вершину: " );   // Номер может изменяться от 0 до p-1
    cin>>start;
    if (start < k && start > 0)
    {
        start=start-1;   //так как массив начинается с 0 отнимаем от вводимой цифры 1
        for (int prosto=0;prosto<VERTEX;prosto++)
        {
            end=prosto;         //цикл прогоняет алгоритм Флойда p-ое количество раз преврашая его в алгоритм Дейкстры  
            if (end==start)
            {
                continue;   //исключаем просчет растояния между одной и той же точкой
            }
            else
            {// Инициализируем начальные значения массивов
                int u;   // Счетчик вершин
                for (u=0;u<p;u++)
                {
                    DlinaPuti[u]=infinity;    //Сначала все кратчайшие пути из s в i равны бесконечности
                    x[u]=0;                  // и нет кратчайшего пути ни для одной вершины
                }
                PredVertex[start]=0;  // s - начало пути, поэтому этой вершине ничего не предшествует
                DlinaPuti[start]=0;   // Кратчайший путь из s в s равен 0
                x[start]=1;           // Для вершины s найден кратчайший путь
                v=start;              // Делаем s текущей вершиной
 
                while(1)
                {
                    // Перебираем все вершины, смежные v, и ищем для них кратчайший путь
                    for(u=0;u<p;u++)
                    {
                        if(VES[v][u]==0)
                            {
                                continue; // Вершины u и v несмежные
                            }
                        if(x[u]==0 && DlinaPuti[u]>DlinaPuti[v]+VES[v][u]) //Если для вершины 'u' еще не 
                            //найден кратчайший путь
                            // и новый путь в 'u' короче чем 
                            //старый, то
                        {
                            DlinaPuti[u]=DlinaPuti[v]+VES[v][u];  //запоминаем более короткую длину пути в массив t[и]
                            PredVertex[u]=v;   //запоминаем, что v->u часть кратчайшего пути из s->u
                        }
                    }
 
                    // Ищем из всех длин некратчайших путей самый короткий
                    int w=infinity;                   // Для поиска самого короткого пути
                    v=-1;                             // В конце поиска v - вершина, в которую будет 
                    // найден новый кратчайший путь. Она станет 
                    // текущей вершиной
                    for(u=0;u<p;u++)                  // Перебираем все вершины.
                    {
                        if(x[u]==0 && DlinaPuti[u]<w)           // Если для вершины не найден кратчайший 
                            // путь и если длина пути в вершину 'u' меньше
                            // уже найденной, то
                        {
                            v=u;                         // текущей вершиной становится 'u'-я вершина
                            w= DlinaPuti[u];
                        }
                    }
                    if(v==-1)
                    {
                        cout<<("Нет пути из вершины ")<<start+1;
                        cout<<(" в вершину ")<<end+1<<"."<<endl;
                        break;
                    }
                    if(v==end) // Найден кратчайший путь,
                    {   // выводим его
                        cout<<("Кратчайший путь из вершины ")<<start+1;
                        cout<<(" в вершину ")<<end+1<<":";
                        u=end;
                        while(u!=start)
                        {
                            cout<<" "<<u+1;
                            u=PredVertex[u];
                        }
                        cout<<" "<<start+1<<(". Длина пути - ")<< DlinaPuti[end];
                        cout<<endl;
                        break;
                    }
                    x[v]=1;
                    f = false;
                }
       }
} 
    }
    else
    {
        cout << "Нет такой вершины повторите ввод..."<<endl;
    }
}
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.12.2012, 17:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переписать код с использование функций (C++):

Переписать код с использованием функций - C++
Народ, помогите плиз. надо переписать этот код так, чтобы были функции #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;stdlib.h&gt; ...

Переписать код с использование цикла for - C++
помогите написать данную программу, только с использованием for #include &lt;iostream&gt; using namespace std; int main() { ...

Переписать приведенный код с использованием функций - C++
Помогите переделать программу чтобы там использовалась (Functions) #include &lt;stdafx.h&gt; #include &lt;cstdlib&gt; #include &lt;iostream&gt; ...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Итерационные циклы,Определение и вызов функций,Использование библиотечных функций stdio.h - C++
Помогите решить задания: 1.Дано натуральное число n. Найти разность между первой цифрой этого числа и суммой всех остальных. ...

Работа с двумерными числовыми массивами. Использование указателей. Использование функций пользователя. - C++
Помогите пожалуйста!!!!!!! Сделать три варианта: первый вариант – передача данных между функциями с помощью глобального...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.12.2012, 17:01
Привет! Вот еще темы с ответами:

Использование функций и шаблонов функций - C++
Составьте программу – формирование цены на молоко. Животновод в начале каждой зимы цену на молоко на р%, а каждым летом снижает на столько...

Использование функций и шаблонов функций - C++
Люди помогите пожалуйста буду очень благодарна) вобщем вот первая часть лабы Написать программу, функция main которой включает...

C/C++ Использование функций, использование break - C++
Здравствуйте. Не знал как назвать тему, боялся что, если назову &quot;КАК ЭТО РАБОТАЕТ?&quot; то её удалят. Пишу программу для вычисления длинных...

Переписать программу с использованием функций - C++
Добрый день. Помогите пожалуйста мою программу переписать так, чтобы она была с функциями. :( Она маленькая и простая. :) //...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru