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

Графы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Потоки C++ http://www.cyberforum.ru/cpp-beginners/thread203782.html
Есть задача: 1) Смоделировать работу читателей и писателей на основе двух потоков. 2) Писатель генерирует структуру данных описывающую студента (ФИО, Возраст, Пол,…). 3) Читатель считывает структуру и подсчитывает ко-во людей одинакового возраста и пола. 4) Запись и чтение производится из буфера фиксированного размера(Например: 10 элементов). 5) Должен осуществляться вывод состояния буфера...
C++ Как изменить размер шара во время движения? Подскажите, плз, как изменить размер шара во время движения? Чтобы через какое-то время увеличился радиус. изначально мини-прожка такая : #include "TXLib.h" void DrawCircle (int x, int y, int r); void MoveCircle (int x, int y, int r, int v); int main() { txCreateWindow (1000, 700); http://www.cyberforum.ru/cpp-beginners/thread203777.html
C++ Интересная работа !!!!
задумка работы зделать игрушку ТИР ну я думаю вы все понимаете что ето и как в нее играть но вот делал ее делал и столкнулся с проблемой даже с несколькими сначала делал на с теперь делаю на с++ мне нужно сделать менюшку мишени и какуето функцию с подшетом очьков ну и тд и тп Помоготи вопрос жизни и смерти)) #include <iostream>
C++ Определить количество классов эквивалентных строк данной прямоугольной матрицы
Определить количество классов эквивалентных строк данной прямоугольной матрицы. Строки считать эквивалентными, если равны суммы их элементов.
C++ массив http://www.cyberforum.ru/cpp-beginners/thread203769.html
помогите символьный массив состоящий из чисел , перевести в целочисленный массив и вывсети на экран , на си Добавлено через 9 минут помогите символьный массив состоящий из чисел , перевести в целочисленный массив и вывсети на экран , на си с помощью atoi
C++ Разложение в ряд #include <stdio.h> #include <math.h> int main () { double a,b,x,k; //k - to4noe printf("BBegute x\n"); scanf("%lf",&x); printf("BBeguTe LLIar\n"); scanf("%lf",&a); printf("BBeguTe x KoHe4Hoe\n"); подробнее

Показать сообщение отдельно
White Luna
 Аватар для White Luna
32 / 26 / 2
Регистрация: 08.09.2010
Сообщений: 402
14.12.2010, 17:45  [ТС]     Графы
Спасибо, но все таки свое написала в итоге, кому интересно то вот тут использовала другой алгоритм форда-беллмана, т к в том тока сама запуталась больше, вот
Всем спасибо за участие
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 <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include "iostream"
 
#define P 60
#define MAX 1000    //машинный эквивалент бесконечности
 
using namespace std;
 
int m[P][P];    // матрица для вычисления кратчайшего пути и его длины
int D[P], G[P][P], W[P][P],Z[P];
int N,M,S,F;
int a,b,c, w=0;
int i,j,k,l,h,f;
 
void GRAF (int m[P][P])     // функция нахождения кратчайшего пути
{        
for (i=1; i<=N; i++ )
    D[i] = m[S][i];     // массив , содержащий расстояния от заданной вершины до всех остальных 
    D[S] = 0 ;
for (j=1; j<=2 ; j++)   // матрица , хранящая путь из заданной вершины до всех остальных  
   {        
    G[j][1]=S;
    G[S][j]=0;
   }
for (h=1; h<=N; h++)    // Алгоритм Форда-Беллмана 
    {
     i=0;
    for (j=2; j<=N; j++) 
    {
     for (k=1; k<=N; k++) 
     {
      if (D[k] > D[j]+m[j][k])
        D[k]=D[j]+m[j][k];
        i++;
      for (l=2; l<=N; l++) 
      {
        W[i][l]=D[l];       // преобразуем для удобства массив расстояний в матрицу  (i-ая строка матрицы - массив расстояний на i-ом шаге )
        if (W[i][l]<W[i-1][l])      // отслеживаем улучшение пути
         G[k][2]=j;     // запоминаем вершину через которую проходит этот путь
      }
     }
    }
   }
     printf("\n");
  if (D[F]<MAX)     // если путь существует , то ...
  {                                        
    printf("\n длина пути от города %d  до остальных %d городов = \n",S,F);
    w=0;
    for(i=1; i<(F+1); i++)
     {
      cout << S;
      cout << "от";
      cout << i;
      cout << " ";
      printf("%d \n",D[i]);   // выводим длину пути 
 
      if(w<=D[i]) w=D[i];
      if (w==1000) w=D[i-1];
     }
    
    printf (" \n Максимальная длина пути от данного города = ");
if (w==1000) cout << "пути нету!!!, данный город конечный";
    else cout << w;
         cout << "\n";
if(w<=6)
{
  cout<< " \n Из города ";
  cout <<S;
  cout << "  можно! добраться до каждого из остальных городов, проезжая не более 100 км.\n";
}
   else
   {
    cout <<" \n Из города ";
    cout <<S;
    cout <<"  !!нельзя!! добраться до каждого из остальных городов, проезжая не более 100 км. \n";}
   }
 
for(int as=1; as<(F+1); as++)
 {
  printf(" \n путь между %d u %d городами  : ",S,as);
 if (D[as]<MAX)     // если путь существует , то ...
 {                                       
    i=1;
    Z[0]=as;
    while (G[as][2] !=0)    // в массив Z записываем вершины , через которые проходит путь , в обратном порядке (от конечной к начальной вершине)
    {
     Z[i]=G[as][2];
     i++;
     G[as][2]=G[G[as][2]][2];
    }
     Z[i]=S;
    for (j=i ; j>=0 ;j--)
    printf(" %d",Z[j]);     // выводим вершины , через которые проходит путь , в правильном порядке
  }
   else   // если пути нет , то ...
   {
     printf("пути нет!");                 
   };
 }
}
 
int main () 
{
 setlocale (LC_ALL, "Russian");
 char fileName[256];
  FILE *inp;
   inp=fopen("text.txt", "r");      // открываем файл на чтение
   fscanf (inp,"%d %d",&N,&M);      // Читаем из файла первую строку, cодержащую число вершин N и число ребер M
 
   for ( i=1 ; i<=N ; i++)          // присваиваем элементам обоих матриц максимальные значения 
   {
    for ( j=1 ; j<=N ; j++) 
    {
     m[i][j]=MAX;
    }
   }
   for (i=1 ;i<=M ;i++ )            // Читаем из файла остальные M строк , 
   {
    fscanf(inp,"%d %d %d",&a,&b,&c);     // содержащие описание ребер (Пример строки файла :" 1 3 6 ": значит, что ребро из вершины 1 в вершину 3 имеет вес 6)  
    m[a][b]=c;                      // Заполняем матрицу смежностей для нашего графа , учитывая вес рёбер
   }
   fclose(inp);                     // закрываем файл
    printf("\n");
   int q=1;
   do{
      for (S=1; S<=N; S++)
       {
        F=7;
        GRAF(m);
        cout << "\n";   
        }
      printf ("Хотите повторить запрос нажмите 1, выйти нажмите 0 \n");
      scanf_s ("%d", &q);
     }
   while (q==1);
 
 system ("\n pause");
 exit (0);
 getch();
 return 0 ;
}
 
Текущее время: 22:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru