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

Центр орграфа, классы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Очередь на основе статического массива http://www.cyberforum.ru/cpp-beginners/thread625814.html
в очередь с экрана вводятся строки,когда вводится строка end,элементы извлекаются из очереди и записываются в файл. xD.h #include <conio.h> #include <string.h> #include <iostream> class xD {public: int n;
C++ Вывод среднего арифметического в массиве Напишите программу, печатающую на экране среднее арифметическое элементов заданного массива вещественных чисел. На форуме вроде не нашел:) P.S. Если можно, попроще:) http://www.cyberforum.ru/cpp-beginners/thread625813.html
C++ Удалить одинаковые элементы массива
Создать массив из 20 элементов, из массива удалить одинаковые элементы массива и вывести на экран
C++ Блокирование файла
Приветствую, знатоки! У меня такой вопрос: есть два процесса (аналогичные) по записи в файл данных (типа int). Для того чтобы они не мешали друг другу я блокирую файл при работе одного из процессов. Однако, если файл уже существует, то все проходит нормально и сперва записывает один процесс, потом другой. Если файл не существует а при CreateProcess у меня стоит OPEN_ALWAYS, то блокировка не...
C++ Вывести на экран все символы строки кроме букв http://www.cyberforum.ru/cpp-beginners/thread625803.html
дана строка вывести на экран символы кроме букв
C++ Вывести значение выражения Напишите программу, выводящую на экран значение выражения y=\prod_{k=1}^{a}{k}^{b} Целые положительные числа a,b ввести с клавиатуры. подробнее

Показать сообщение отдельно
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
19.07.2012, 15:29     Центр орграфа, классы
Примерно так (исправил синтаксические ошибки,
правильность алгоритма не проверял):
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
#include <conio.h>
#include <iostream>
#include <fstream>
#include <locale.h>
using namespace std;
class Graph
{
    int** d;
    int n;
public:
    void Read();
    Graph(int size);
    ~Graph();
 
};
Graph::Graph(int size)
{
    n=size;
// по хорошему надо сюда перенести создание массива
//    d = new int*[n];//Динамически выделяем память указатель->указатель(для матрицы)
//    for(int i=0; i<n; i++)
//        d[i] = new int[n];//Выделили АТЛИЧЧНА
}
 
Graph::~Graph()
{
    for(int i=0; i<n; i++)
        delete[] d[i];
    delete[] d;
}
              
void Graph::Read() //fstream.h
{
     int max[255];
     int min=0;
     int k=0;
     int b=0;
     char r[255];
     FILE *graph;
     if((graph=fopen("Graph.txt","r"))==NULL)
     {cout<<"Ошибка чтения"<<endl;return;}
     fscanf(graph,"%c",&r[0]);// Читаем один символ
     if (r[0]>='0' && r[0]<='9')n=r[0]-'0';//преобразуем его в число
     else {cout<<"Файл пустой"<<endl;return;}
      
    d = new int*[n];//Динамически выделяем память указатель->указатель(для матрицы)
    for(int i=0; i<n; i++)
        d[i] = new int[n];//Выделили АТЛИЧЧНА
    for(int i=0;i<n;i++)
     for(int j=0;j<n;j++)
     {
             fscanf(graph,"%d",&d[i][j]);//Считываем матрицу в буфер
     }
     fclose(graph);
     int i,j,l;
     for(i=0;i<n;i++)
     for(j=0;j<n;j++)
     for(l=0;l<n;l++)
     if ((d[i][l]>d[i][j]+d[j][l]||d[i][l]<0)&&d[i][j]>=0&&d[j][l]>=0)
     d[i][l]=d[i][j]+d[j][l];//Алгоритм флойда для нахождения кратчайших путей х_х
     int p=0;
     for(j=0;j<n;j++)//ПОлучили вершины с максимальным э., находим минимальную из них, она и будет являтся центром орграфа
     for(i=0;i<n;i++)
     {
      p++;
         if(d[i][j]>max[b])      max[b]=d[i][j];
         if(p==n)                {b++;p=0;}
     }
     for(int i=0;i<b;i++)
     if(max[b]<min)
     min=max[b];
     cout<<"Центр орграфа >"<<min<<endl;
}
     
 
//==========================================Меню=======================================//
int main(void)
{
    int Size;
    cout<<"Enter size";
    cin>>Size;
    Graph g(0);
    int key = 0;
    do 
    {
        cout<<"1-Read\n esp for exit"<<endl;
        key = getch();
        switch (key)
        {     
               case 49: g.Read();break;
               
        }
    }while (key!=27);
    return 0;
}
 
Текущее время: 05:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru