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;
}


Leave a Reply