Witam, mam mały problem z macierzą sąsiedztwa. Otóż otrzymuje 2 pytania o połączenie wierzchołków na raz. Widać to na tym screenie:
Nie widzę błędu w kodzie. Może ktoś świeżym spojrzeniem dostrzeże błąd. Z góry dzięki:)
Oto kod:
#include <stdio.h>
#include <stdlib.h>
void main()
{
int wybor;
do
{
printf("\n Program do reprezentacji grafu za pomoca ");
printf("macierzy sasiedztwa \n ");
printf("\n 1. Graf skierowany ");
printf("\n 2. Graf nieskierowany ");
printf("\n 3. Wyjscie ");
printf("\n\n Wybierz odpowiednia opcje : ");
scanf("%d", &wybor);
switch(wybor)
{
case 1 : skierowany();
break;
case 2 : nieskierowany();
break;
case 3 : exit(0);
} // switch
}while(1);
}
int skierowany()
{
int graf[50][50];
int n;
int przych, wych, i, j;
int stopien_max;
printf("\n Ile wierzcholkow ma graf? : ");
scanf("%d", &n);
wczytaj_graf(graf, n);
stopien_max = 0;
printf("\n Wierzcholek \t Wezel przych \t Wezel wych \t Stopien ");
for (i = 1; i <= n ; i++ )
{
przych = wych = 0;
for ( j = 1 ; j <= n ; j++ )
{
if ( graf[j][i] == 1 )
przych++;
}
for ( j = 1 ; j <= n ; j++ )
if (graf[i][j] == 1 )
wych++;
printf("\n\n %5d\t\t\t%d\t\t%d\t\t%d\n\n",i,przych,wych,przych+wych);
if (przych+wych > stopien_max)
stopien_max = przych+wych;
}
printf("\n Stopien grafu wynosi: %d\n", stopien_max);
return;
}
int nieskierowany()
{
int graf[50][50];
int stopien, stopien_max;
int i, j, n;
printf("\n Ile wierzcholkow ma graf? : ");
scanf("%d", &n);
wczytaj_graf(graf, n);
printf("\n Wierzcholek\t Stopien ");
stopien_max = 0;
for ( i = 1 ; i <= n ; i++ )
{
stopien = 0;
for ( j = 1 ; j <= n ; j++ )
if ( graf[i][j] == 1)
stopien++;
printf("\n\n %5d \t\t %d\n\n", i, stopien);
if (stopien > stopien_max)
stopien_max = stopien;
}
printf("\n Stopien grafu wynosi: %d\n", stopien_max);
return;
}
int wczytaj_graf ( int graf[50][50], int n )
{
int i, j;
char odp;
for ( i = 1 ; i <= n ; i++ )
{
for ( j = 1 ; j <= n ; j++ )
{
if ( i == j )
{
graf[i][j] = 0;
continue;
}
printf("\n Wierzcholki %d i %d sa polaczone? (T/N) :",i,j);
scanf("%c", &odp);
if ( odp == 't' || odp == 'T' )
graf[i][j] = 1;
else
graf[i][j] = 0;
}
}
return;
}