Szczerze mówiąc, nie pamiętam treści tego zadania.
Coś z przekazywaniem żetonu i MPI…
#include #include #include #include #include #include #include #include #include #include using namespace std; //Taka funkcja do dzielenia. int main(int argc, char *argv[]) { FILE *f; //Plik konfiguracyjny char znak; //znaki wczytywane z wejsica vector Wysylam; //Odbiorcy vector Odbieram; //Wysylajacy do mnie vector Wypisanie; //Do wypisania zetonow int MojeId; //Moje id zwrocone przez MPI int wynik; //Do czytania pliku int size; //MPI char bufor[1024]; //Bufor string tmp=""; //Tymczasowa zmeinna do czytania liczb int tmp_1; //Liczba do tokenów int tmp_2; //Druga liczba do tokenów string Wiadomosc=""; //Przesyłana wiadomosc string WypiszMnie=""; //Ja. //Harce z MPI MPI_Status s; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &MojeId); MPI_Comm_size(MPI_COMM_WORLD, &size); int id_tag = 500; MojeId+=1; //WypiszMnie std::stringstream ss; ss <='0')&&(znak0)&&(tmp.size()>0)) { //Podział tokenu. tmp_2=atoi(tmp.c_str()); tmp=""; if(tmp_1==MojeId) { //Dodajemy do listy wysylam Wysylam.push_back(tmp_2); } else if(tmp_2==MojeId) { //Dodajemy do listy odbieram Odbieram.push_back(tmp_1); } tmp_2=0; if(znak=='n') { //zerujemy. tmp_1=0; } } } wynik = fscanf(f,"%c", &znak); } fclose(f); //No dobrze. Wczytane. //Nasluchujemy. for(unsigned int i=0; i0) { //Przeysłamy dalej. char *Komunikacik=new char[Wiadomosc.length()+1]; strcpy(Komunikacik,Wiadomosc.c_str()); for(unsigned int i=0; i<Wysylam.size(); i++) { MPI_Send(Komunikacik, Wiadomosc.length()+1, MPI_CHAR, Wysylam[i] - 1, id_tag, MPI_COMM_WORLD); } } else { //A teraz wypiszemy: tmp=""; tmp_1=0; //Dzielimy na tokeny: for(unsigned int i=0;i='0')&&(Wiadomosc[i]0) { tmp_1=atoi(tmp.c_str()); Wypisanie.push_back(tmp_1); tmp=""; tmp_1=0; } } } //Sortujemy: sort (Wypisanie.begin(), Wypisanie.end()); //Wypisujemy: cout << WypiszMnie << ": {"; tmp_1=0; for(unsigned int i=0;i<Wypisanie.size();i++) { if(Wypisanie[i]!=tmp_1)//Powtórzenia { cout << (Wypisanie[i]) <<" "; tmp_1=Wypisanie[i]; } } cout<<"}"<<endl; } MPI_Finalize(); return 0; }