Systemy Rozproszone Zad 2

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…

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

Follow the thread

Start here

Eight essays connecting disciplines, useful progress, and deliberate choices.

Writing archive

Browse the complete archive, including technical, personal, travel, and book writing.

Projects

Tools and experiments where the ideas meet practical work.

Leave a Reply

Discover more from Artur Piszek

Subscribe now to keep reading and get access to the full archive.

Continue reading