Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. #include<stdio.h>
  2.  
  3. #define MAX 10
  4. #define INFINITY 999
  5.  
  6. int waga[MAX][MAX],droga[MAX],pop[MAX],Graf[MAX][MAX],W[MAX],x;
  7.  
  8. FILE * PTab, * PArg, * PWyj;
  9.  
  10. void algorytm(int Graf[MAX][MAX],int n,int startnode);
  11. void czytajTab(const char * filename);
  12. void czytajArg(const char * filename);
  13. void zapisz(const char * filename);
  14. void interfejs();
  15.  
  16. int main() {
  17. int i;
  18. char q;
  19. interfejs();
  20. while (1) {
  21. scanf("%c", &q);
  22. switch (q) {
  23. case 'w':
  24. czytajArg("wierzcholki.txt");
  25. if (PArg != NULL) {
  26. printf("Plik zostal wczytany pomyslnie\n");
  27. } else {
  28. printf("Nie znaleziono pliku");
  29. }
  30. break;
  31. case 'g':
  32. czytajTab("tablica.txt");
  33. if (PTab != NULL) {
  34. printf("Plik zostal wczytany pomyslnie\n");
  35. } else {
  36. printf("Nie znaleziono pliku");
  37. }
  38. break;
  39. case 'o':
  40. for(i = 0; i < MAX; i++){
  41. if(W[i] != 0){
  42. printf("wierzcholek startowy: %d", W[i]);
  43. algorytm(Graf,x,W[i]);
  44. }
  45. }
  46. zapisz("projekt.txt");
  47. break;
  48. case 'q':
  49. return 0;
  50. break;
  51. }
  52. }
  53. return 0;
  54. }
  55.  
  56. void algorytm(int Graf[MAX][MAX],int n,int startnode) {
  57.  
  58. int sprawdzone[MAX],ilosc,mindroga,nextnode,i,j;
  59. for(i = 1; i <= x; i++)
  60. for(j = 1; j <= x; j++)
  61. if(Graf[i][j] == 0)
  62. waga[i][j] = INFINITY;
  63. else
  64. waga[i][j] = Graf[i][j];
  65.  
  66. for(i = 1; i <= x; i++)
  67. {
  68. droga[i] = waga[startnode][i];
  69. pop[i] = startnode;
  70. sprawdzone[i] = 0;
  71. }
  72.  
  73. droga[startnode] = 0;
  74. sprawdzone[startnode] = 1;
  75. ilosc = 1;
  76.  
  77. while(ilosc < x-1)
  78. {
  79. mindroga = INFINITY;
  80. for(i=1; i <= x; i++)
  81. if(droga[i] < mindroga && !sprawdzone[i])
  82. {
  83. mindroga = droga[i];
  84. nextnode = i;
  85. }
  86.  
  87. sprawdzone[nextnode] = 1;
  88. for(i = 1; i <= x; i++)
  89. if(!sprawdzone[i])
  90. if(mindroga + waga[nextnode][i] < droga[i])
  91. {
  92. droga[i] = mindroga + waga[nextnode][i];
  93. pop[i] = nextnode;
  94. }
  95. ilosc++;
  96. }
  97.  
  98. for(i = 1; i <= x; i++)
  99.  
  100. if(i != startnode)
  101. {
  102. printf("\n%d : %d",droga[i],i);
  103. j = i;
  104. do
  105. {
  106. j = pop[j];
  107. printf("<-%d", j);
  108. }while(j != startnode);
  109. }
  110. printf("\n");
  111.  
  112. }
  113.  
  114. void czytajTab(const char * filename) {
  115.  
  116. int i, j, y;
  117. float c;
  118.  
  119. PTab = fopen(filename, "r");
  120.  
  121. for (i = 1; i <= x; i++) {
  122. for (j = 1; j <= x; j++) {
  123. if (i == j) {
  124. Graf[i][j] = 0;
  125. } else {
  126. Graf[i][j] = 0;
  127. }
  128. }
  129. }
  130.  
  131. while (!feof(PTab)) {
  132. fscanf(PTab, "%d %d %f", &x, &y, &c);
  133. Graf[x][y] = c;
  134. }
  135. }
  136.  
  137. void czytajArg(const char * filename) {
  138. int i;
  139. PArg = fopen(filename, "r");
  140.  
  141. while (!feof(PArg)) {
  142. for (i = 0; i < MAX; i++) {
  143. fscanf(PArg, "%d", & W[i]);
  144. }
  145. }
  146. }
  147.  
  148. void zapisz(const char * filename) {
  149.  
  150. int i,j;
  151. PWyj = fopen(filename, "w");
  152.  
  153. for(i = 1; i <= x; i++){
  154.  
  155.  
  156. printf("\n%d : %d",droga[i],i);
  157. j = i;
  158. do
  159. {
  160. j = pop[j];
  161. printf("<-%d", j);
  162. }while(j != pop[i]);
  163.  
  164.  
  165. }
  166.  
  167. fclose(PWyj);
  168.  
  169. }
  170.  
  171. void interfejs() {
  172. printf("============================================================================\n");
  173. printf("Program sluzy do obliczania najkrotszych sciezek z wierzcholka poczatkowego do wybranych wierzcholkow.\n");
  174. printf("Przelaczniki:\n");
  175. printf("'w' - wczytywanie pliku tekstowego z wierzcholkiem\n");
  176. printf("'g' - wczytywanie pliku tekstowego z grafem\n");
  177. printf("'o' - zapisz raport do pliku\n");
  178. printf("'q' - zakonczenie dzialania programu\n");
  179. printf("============================================================================\n");
  180. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement