x-kom hosting

[C++] Przeszukiwanie BFS

Crrs11
utworzono
utworzono (edytowane)

Witam.
Napisałem przeszukiwanie BFS, program działa dobrze, ale koleś powiedział żebym 'switch' zmienił na 'if' próbowałem i nie wiem jak to zrobić.
Proszę jeśli to możliwe o napisanie poprawnego warunku i o krotki opis warunku.
[spoiler]
#include <iostream>
#include <queue>
#include <list>
#include <iomanip>
#include <conio.h>

#define n 9

using namespace std;

class wezel
{
public:
char znak;
int ind;
wezel(char znak, int ind);

};

wezel::wezel(char _znak, int _ind)
{
znak = _znak;
ind = _ind;
}

queue <wezel> odwiedzone;

wezel R('R', 1);
wezel V('V', 2);
wezel S('S', 3);
wezel W('W', 4);
wezel T('T', 5);
wezel X('X', 6);
wezel U('U', 7);
wezel Y('Y', 8);

void pokaz_odwiedzone()
{
queue <wezel> odw = odwiedzone;
cout<<"Odwiedzone: ";
while(!odw.empty())
{
cout << odw.front().znak << ' ';
odw.pop();
}
cout<<endl;
}

int pokaz_kolejke_iodwiedzone(queue<wezel> Q)
{
if(Q.empty()) {cout << "Q puste!" << endl; pokaz_odwiedzone(); return 0;}
cout<<"Kolejka Q: "<< Q.front().znak <<' ';
Q.pop();
while(!Q.empty())
{
cout << Q.front().znak << ' ';
Q.pop();
}
cout << setw(20);
pokaz_odwiedzone();
}

void BFS(int G[n][n], wezel S)
{

queue<wezel> Q;

bool O[n] = {false};

Q.push(S);

while(!Q.empty())
{
pokaz_kolejke_iodwiedzone(Q);
S = Q.front();
Q.pop();
odwiedzone.push(S);
O[S.ind] = true;

for(int j = 0;j < n;++j)
{
if(G[j][S.ind] != 0 && O[j] == false)
{
[b]switch(j)
{
case 1:{
Q.push(R);
O[j] = true;
break;
}
case 2:{
Q.push(V);
O[j] = true;
break;
}
case 3:{
Q.push(S);
O[j] = true;
break;
}
case 4:{
Q.push(W);
O[j] = true;
break;
}
case 5:{
Q.push(T);
O[j] = true;
break;
}
case 6:{
Q.push(X);
O[j] = true;
break;
}
case 7:{
Q.push(U);
O[j] = true;
break;
}
case 8:{
Q.push(Y);
O[j] = true;
}
}[/b]
}
}
}
pokaz_kolejke_iodwiedzone(Q);
}



int main()
{
int G[n][n] = {
{0, 0, 0, 0, 0, 0, 0, 0, 0},
{0, 0, 1, 1, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 0, 0, 0, 0, 0},
{0, 1, 0, 0, 1, 0, 0, 0, 0},
{0, 0, 0, 1, 0, 1, 1, 0, 0},
{0, 0, 0, 0, 1, 0, 0, 1, 1},
{0, 0, 0, 0, 1, 0, 0, 1, 1},
{0, 0, 0, 0, 0, 1, 1, 0, 1},
{0, 0, 0, 0, 0, 1, 1, 1, 0}
};

BFS(G,S);
getch();

return 0;
}
[/spoiler]
 
Wiem ze kod umieszczony niezgodnie z regulaminem ale nie mogę załapać jak ot zrobić z  [*codebox]

rafalluz
komentarz
komentarz

Przykład zamiany switch -> if:

switch(x)
{
 case 1: foo1();
           break;
 case 2: foo2();
           break;
 case 3: foo3();
           break;
 default: foodefault();
           break;
}
if(x==1)
{
  foo1();
}
else if(x==2)
{
  foo2();
}
else if(x==3)
{
  foo3();
}
else
{
  foodefault();
}
  • Dobra wypowiedź 1
Crrs11
komentarz
komentarz

dzięki, takie proste a je nie wiedziałem  :blush:


 

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.