Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <mpi.h>
- #include <vector>
- #include <string>
- using namespace std;
- class Rekord
- {
- public:
- Rekord()
- {
- for (int i = 0; i < 100; i++)
- {
- vec.push_back(i);
- }
- string2 = "Ala ma kota";
- }
- void show()
- {
- for (int j = 0; j < 100; j++)
- {
- cout << "zawartosc wektora" << vec[j] << endl;
- }
- cout << "Zawartosc stringa: " << string2 << endl;
- }
- void set_vec(int n)
- {
- vec.push_back(n);
- }
- void set_string(string k)
- {
- string2 = k;
- }
- vector<int> get_vec()
- {
- return vec;
- }
- string get_string()
- {
- return string2;
- }
- void send(int odbiorca)
- {
- int vecsize = vec.size();
- int strsize = string2.length();
- MPI::COMM_WORLD.Send(&vecsize, 1, MPI::INT, odbiorca, 0);
- MPI::COMM_WORLD.Send(&(vec[0]), vecsize, MPI::INT, odbiorca, 0);
- MPI::COMM_WORLD.Send(&strsize, 1, MPI::INT, odbiorca, 0);
- MPI::COMM_WORLD.Send(&(string2[0]), 1, MPI::CHAR, odbiorca, 0);
- }
- void recv(int nadawca)
- {
- string tempString;
- int vecsize;
- int strsize;
- MPI::COMM_WORLD.Recv(&vecsize, 1, MPI::INT, nadawca, 0);
- vec.resize(vecsize);
- MPI::COMM_WORLD.Recv(&(vec[0]), vecsize, MPI::INT, nadawca, 0);
- MPI::COMM_WORLD.Recv(&strsize, 1, MPI::INT, nadawca, 0);
- char *buff = new char[strsize + 1];
- MPI::COMM_WORLD.Recv(buff, strsize, MPI::CHAR, nadawca, 0);
- buff[size] = "\0";
- string2.clear();
- string2 += buff;
- }
- private:
- vector<int> vec;
- string string2;
- };
- void stringsend(const string &s, int odbiorca)
- {
- int size = s.length();
- MPI::COMM_WORLD.Send(&size, 1, MPI::INT, odbiorca, 0);
- MPI::COMM_WORLD.Send(&(s[0]), size, MPI::CHAR, odbiorca, 1);
- }
- string stringrecv(int nadawca)
- {
- string s;
- int size;
- MPI::COMM_WORLD.Recv(&size, 1, MPI::INT, nadawca, 0);
- char*buff = new char[size + 1];
- MPI::COMM_WORLD.Recv(buff, size, MPI::CHAR, nadawca, 1);
- buff[size] = '\0';
- s.append(buff);
- return s;
- }
- int main(int argc, char **argv) {
- MPI::Init(argc, argv);
- int rank = MPI::COMM_WORLD.Get_rank();
- if (rank == 0)
- {
- Rekord rek1;
- rek1.send(1);
- }
- else if (rank == 1)
- {
- }
- MPI::Finalize();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement