Cykle Eulera w Grafie

Odpowiedz Nowy wątek
2015-05-25 15:43
0

Witam.
Właśnie tworzę krok po kroku program, który będzie wyszukiwał mi cykle eulera w grafach.
Robię go krok po kroku by uniknąć wysypu nie wiadomo ilu błędów.
Mianowicie mam problem z jednym etapem.
Program mi się wysypuje (zwykły exe przestał działać) i nie wiem czemu.
Poniżej zamieszczam kod:

#include <iostream>
#include <conio.h>

using namespace std;

/*  ZMIENNE GLOBALNE    */

int ile_w, ile_k, sptr, ex;
int ** A;                                                                                   //MACIERZ SĄSIEDZCTWA
int *S;                                                                                     //STOS W TABLICY

int main()
{
    int i,j,x1,x2;
    cout<<"Podaj liczbe wierzcholkow w grafie:"<<endl;                                      // CZYTAMY LICZBĘ WIERZCHOŁKÓW
    cin>>ile_w;
    cout<<"Podaj liczbe krawedzi w grafie:"<<endl;                                          // CZYTAMY LICZBĘ KRAWĘDZI
    cin>>ile_k;

    A = new int * [ile_w];                                                                  //TWORZYMY TABLICĘ WSKAŹNIKÓW
    S = new int [ile_k+1];                                                                  //TWORZYMY STOS
    sptr=0;

    for(i=0;i<ile_w;i++)
        A[i]=new int [ile_w];                                                               //TWORZYMY WIERSZE MACIERZY SĄSIEDZCTWA

    for(i=0;i<ile_w;i++)
        for(j=0;j<ile_w;j++) A[i][j]=0;                                                     //MACIERZ WYPEŁNIAMY ZERAMI

/*  ODCZYT KOLEJNYCH DEFINICJI KRAWĘDZI */

    for(i=0; i<ile_k;i++)
        {
            cout<<"Podaj pierwszy wierzcholek krawedzi numer "<<i+1<<":"<<endl;             //PIERWSZY WIERZCHOLEK KRAWEDZI
            cin>>x1;
            cout<<"Podaj drugi wierzcholek krawedzi numer "<<i+1<<":"<<endl;                //DRUGI WIERZCHOLEK KRAWEDZI
            cin>>x2;
            A[x1][x2]+=1;
            A[x2][x1]+=1;
        }

    cout<<"Wcisnij dowolny klawisz by zakonczyc program."<<endl;
    getch();

    return 0;
}

Wysypuje się przy podawaniu krawędzi grafu.

edytowany 1x, ostatnio: yardi1993, 2015-05-25 15:43

Pozostało 580 znaków

2015-05-25 16:39
0

Poradziłem sobie z tym problemem, była to wina nieograniczenia warunków, jednakże gdy próbuję je ograniczyć pętlą do while, nie udaje się, gdyż pętla się zapętla i nie idzie dalej nawet jak warunki są poprawne.

            {
                cin>>x1;
            }   while (1<=x1<=ile_w); 

x1 -wczytywany wierzchołek
ile_w -podawana na początku programu liczba wierzcholkow w grafie
wszystkie dane sa w int.

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0