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

Классы и вывод результата в файл C++ - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Обьясните, что означает данный элемент t? http://www.cyberforum.ru/cpp-beginners/thread744446.html
int max, max_i, min, i, j, t; bool flag=0; // "2.) номера строк и столбцов всех седловых точек матрицы.\n\n" //Матрица А имеет седловую точку Аij, если Аij является минимальным //элементом в i-ой строке и максимальным в j-ом столбце. printf("\n2.) ");
C++ Массивы. Найти ряд самой маленькой длинны и выровнять всех остальных по нему Доброго дня. Собсно студент. Собсно сессия и собсно времени маловато осталось. Ага, ленивец. Итак. Помочь разобраться в 2 задачах. 1.Вести массив рядов, длинна которых не более n. Найти ряд самой маленькой длинны и выровнять всех остальных по нему. тут я не знаю : 1. Как объявить 2-мерный массив строк( в методе почти ничего не написано), а также не представляю как обрезать. но понимаю что... http://www.cyberforum.ru/cpp-beginners/thread744442.html
Указатель на функцию C++
Всем доброго времени суток. Вот обычный указатель на функцию. Код прекрасно работает. (Код на С) #include <stdio.h> typedef int (*func)(int, int); int g(int a, int b); int main() { func f = g; int c = f(4,4);
Сортировка структуры данных C++
Выполнить сортировку данных по любому числовому полю с использованием встроенной функции сортировки. Имеется структура: struct book{ char firma; char nazvanie_pam9ti; int chastota; float moshnostb; };
C++ Записать не пустую последовательность целых чисел http://www.cyberforum.ru/cpp-beginners/thread744420.html
В файле записать не пустую последовательность целых чисел являющихся числами Фибоначи.Дописать еще одно, следующее число Фибоначчи.
C++ Задано матрицу А размерностью 1хN как найти A^-1 помогите задание: Задано матрицу А размерностью 1хN как найти A^-1 подробнее

Показать сообщение отдельно
Даша_93
3 / 3 / 0
Регистрация: 10.06.2012
Сообщений: 31

Классы и вывод результата в файл C++ - C++

24.12.2012, 17:29. Просмотров 245. Ответов 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
#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;
}
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru