CCbolt Temat założony przez niniejszego użytkownika |
Program do grafów » 2017-05-11 00:03:56 Mam problem z programem do grafów. Jak zapisać już wprowadzone wierzchołki aby program nie pytał o te same krawędzie np jeżeli wprowadzę informacje że jest wierzchołek 1-2 to program z góry bedzie wiedział że już jest krawęðź 2-1. #include <stdio.h>
int read_graph( int tab[ 50 ][ 50 ], int n ) { int i, j; char reply; for( i = 1; i <= n; i++ ) { for( j = 1; j <= n; j++ ) { if( i == j ) { tab[ i ][ j ] = 0; continue; } printf( "\n Wierzcholki %d & %d maj'?''?' krawedz ? (Y/N) :", i, j ); while( getchar() != '\n' ); scanf( "%c", & reply ); if( reply == 'y' || reply == 'Y' ) tab[ i ][ j ] = 1; else tab[ i ][ j ] = 0; } } return 0; }
int main() { int tab[ 50 ][ 50 ]; int deg, i, j, n; printf( "\n Ile wierzcholkow ? : " ); scanf( "%d", & n ); read_graph( tab, n ); printf( "\n Wierzcholek \t Stopien " ); for( i = 1; i <= n; i++ ) { deg = 0; for( j = 1; j <= n; j++ ) if( tab[ i ][ j ] == 1 ) deg++; printf( "\n\n %5d \t\t %d\n\n", i, deg ); } return 0; }
|
|
DejaVu |
» 2017-05-11 00:14:05 opcja A: zapisz dwie krawędzie z A do B i z B do A. opcja B: zapisuj zawsze krawędź jako para, gdzie pierwszy indeks jest zawsze mniejszy od drugiego. Sprawdzanie czy istnieje dana krawędź będzie wymagało dostosowania się do tej reguły. |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2017-05-11 11:49:05 Nie wiem jak to zaimplementować, chciałem aby 1 była wstawiana symetrycznie. Możesz mi to wrzucić z opisem abym prześledził program? scanf( "%c", & reply ); if( reply == 'y' || reply == 'Y' ) { tab[ i ][ j ] = 1; tab[ j ][ i ] = 1; } else { tab[ i ][ j ] = 0; tab[ j ][ i ] = 0;
|
|
darko202 |
» 2017-05-11 13:48:16 |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2017-05-11 14:12:03 Ktoś coś? |
|
CCbolt Temat założony przez niniejszego użytkownika |
» 2017-05-12 13:18:32 Potrzebuję zmodyfikować kod aby zwracał informację, czy podany graf jest eulerowski, sprawdzał spójność grafu i wypisał jego cykl. #include <stdio.h>
int read_graph( int tab[ 50 ][ 50 ], int n ) { int i, j; char reply; for( i = 1; i <= n; i++ ) { for( j = i; j <= n; j++ ) { if( i == j ) { tab[ i ][ j ] = 0; tab[ j ][ i ] = 0; continue; } printf( "\n Wierzcholki %d & %d maja' krawendz ? (Y/N) :", i, j ); while( getchar() != '\n' ); scanf( "%c", & reply ); if( reply == 'y' || reply == 'Y' ) { tab[ i ][ j ] = 1; tab[ j ][ i ] = 1; if( i == j ) tab[ i ][ j ] = tab[ i ][ j ] + 1; } else { tab[ i ][ j ] = 0; } } } return 0; }
int main() { int tab[ 50 ][ 50 ]; int deg, i, j, n; printf( "\n Ile wierzcholkow ? : " ); scanf( "%d", & n ); read_graph( tab, n ); printf( "\n Wierzcholek \t Stopien " ); for( i = 1; i <= n; i++ ) { deg = 0; for( j = 1; j <= n; j++ ) if( tab[ i ][ j ] == 1 ) deg++; printf( "\n\n %5d \t\t %d\n\n", i, deg ); } return 0; }
|
|
darko202 |
» 2017-05-13 15:06:54 |
|
« 1 » |