Προς το περιεχόμενο

εισαγωγη δυναμικου πινακα και εκτελεση με αλγοριθμους πριμ και κρουσκαλ


velouchiotis

Προτεινόμενες αναρτήσεις

Δημοσ.

η εκφώνηση βρίσκεται στο ζιπ αρχείο, εχω βρει τα παρακατω απλως δεν ξέρω πως να φτιάξω τον δυναμικό πινακα και δεν ειμαι σιγουροσ πως να συνδιασω τα παρακατω για να βγει ενα σωστο αποτελεσμα

 

void Prim(int nodes,int adjacency[MAXNODE][MAXNODE],int startnode)

{

int S[MAXNODE];

int D[MAXNODE];

int V[MAXNODE];

char MST[60];

int i, j, nextnode, smallest;

 

 

for (i=0; i<nodes; i++)

S = 0;

S[startnode] = 1;

MST[0]

'\0';

for (i

 

0; i<nodes; i++)

{

D = adjacency[startnode];

V = startnode;

}

 

printinfo(S, D, MST, nodes);

 

for (i=1; i<nodes; i++)

{

nextnode = 999;

smallest = 999;

for (j=0; j<nodes; j++)

{

if (!S[j])

if (D[j] < smallest)

{

smallest = D[j];

nextnode = j;

}

}

}

if (nextnode >= nodes)

return;

printf("dialekse mikrotero baros kombou D[%d]= %d, ", 1+nextnode,smallest);

printf("prosthese node %d kai edge (%d,%d)\n", 1+nextnode,1+nextnode, 1+V[nextnode]);

S[nextnode]

1;

j

 

strlen(MST);

if (j > 0)

MST[j++] = ',';

MST[j++] = '0' + nextnode;

MST[j++] = '0' + V[nextnode];

MST[j]

'\0';

 

for (j

 

0; j<nodes; j++)

{

if (!S[j])

{

printf("sigrine D[%d]= %d me M[%d][%d]= %d, ",1+j, D[j], 1+j, 1+nextnode,

adjacency[j][nextnode]);

 

if (D[j] > adjacency[j][nextnode])

{

D[j] = adjacency[j][nextnode];

V[j] = nextnode;

printf("D[%d] alakse se %d\n", 1+j, D[j]);

}

else

printf("kamia allagi\n");

}

}

printinfo(S, D, MST, nodes);

}

}

-----------------------------------------------------------------------------------------------------

void kruskal(int pin[VERTICES][VERTICES])

{

int i,j,baros,k;

 

 

int pin1[20];

int pin2[20];

int pin3[20];

 

k=0;

 

 

 

for(baros=1;baros<=10;baros++)

{

for(i=0;i<=VERTICES-1;i++)

{

for(j=0;j<=VERTICES-1;j++)

{

if(pin[j]==baros && j>i )

{

 

pin1[k]=i;

pin2[k]=j;

pin3[k]

baros;

 

k

 

k+1;

 

}

 

}

}

}

 

 

for(i=0;i<=10;i++)

{

for(baros=1;baros<=10;baros++)

{

if(pin2==baros)

{

for(j=0;j<=10;j++)

{

if(pin3<pin3[j])

printf(" %d - %d { %d } \n ", pin1, pin2, pin3);

 

}

}

 

}

 

}

 

 

}

Ergasia 1.zip

Δημοσ.

θα μπορουσατε να μου κανετε το ιδιο χωρις δυναμικο πινακα ;;;;;;;;κ αν ναι πως;; ευχαριστω.....

 

---------- Προσθήκη στις 23:14 ---------- Προηγούμενο μήνυμα στις 23:13 ----------

 

θα μπορουσατε να μου κανετε το ιδιο χωρις δυναμικους πινακες ;;;;Και αν ναι πως ;; ευχαριστω.....

Δημοσ.

>
   int **A = NULL;
   int N=0;

   printf("Give maxNodes\n");
   scanf("%d",&N);

   /* Allocate the array A[ ] dimension */
   if((A = (int**)calloc(N, sizeof(int))) != NULL)
   {
       int Count;
       /* Iterate the array A[ ] positions */
       for(Count = 0; Count < N; Count++)
           /* Allocate the array A[ ][ ] 2nd dimension */
           if((A[Count] = (int*)calloc(N, sizeof(int))) != NULL)
           {
               int CountB;
               /* Iterate the array A[ ][ ] positions */
               for(CountB = 0; CountB < N; CountB++)
               {
                   printf("Dose to %d,%d stoixeio",Count,CountB);
                   scanf("%d",&A[Count][CountB]);
               }
               /* To save time latter, free array A[ ][ ] position */
               free(A[Count]);
           }
           else/* oops! not enough memory for A[ ][ ] allocation */
               printf("Not enough memory!\n");
       /* Free array A[ ] dimension */
       free(A);
   }
   else/* oops! not enough memory for A[ ] allocation */
       printf("Not enough memory!\n"); 

 

Κλεμμένο από DirectX επειδή βαριόμουν να τα ξαναγράφω και προσαρμοσμένο στο πρόβλημα από εμένα !!! Όπως καταλαβαίνεις διαβάζει στην αρχή το MAXNODE και φτιάχνει δυναμικό πίνακα Α[MAXNODE][MAXNODE]. Επίσης διαβάζει τα βάρη των ακμών και κατασκευάζει τον πίνακα γειτνιάσεως οπότε στη συνέχεια μπορείς άνετα να καλέσεις τις συναρτήσεις σου (τις οποίες δεν έλεγξα αν είναι σωστές αλλά σε εμπιστεύομαι ! ).

Δημοσ.

kostikas00 αν δεν μπορείς να λύσεις την άσκηση από την λύση που έδωσα εγώ και από τις συναρτήσεις που έδωσε ο topic creator τότε πολύ απλά άλλαξε επάγγελμα. Sorry κιόλας αλλά έχει γεμίσει η Ελλάδα από imitation πληροφορικούς. Έτσι κι αλλιώς δουλειά ως πληροφορικός δεν πρόκειται να βρεις οπότε τράβα γίνε κάνας σεφ καλύτερα ...

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...