#include <stdio.h> #include "maklib.h" #include "message.h" int main() { int i; long long N = Size(); // Faza pierwsza // sumujemy long long obecna_liczba; long long moja_suma; obecna_liczba = 0; moja_suma = 0; long long poczatek = (MyNodeId() * N) / NumberOfNodes(); long long koniec = ((MyNodeId() + 1) * N) / NumberOfNodes(); for ( i = poczatek; i < koniec; ++i) { long long kolejna = ElementAt(i); moja_suma += kolejna; } // Faza druga //wysyłamy /zbieramy PutLL(0,moja_suma); Send(0); if (MyNodeId() == 0) { long long suma = 0; for (i = 0; i < NumberOfNodes(); ++i) { int instancja = Receive(-1); suma += GetLL(instancja); } if(suma < 0){ printf("0\n"); } else { printf("%Ld\n",suma); } } return 0; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | #include <stdio.h> #include "maklib.h" #include "message.h" int main() { int i; long long N = Size(); // Faza pierwsza // sumujemy long long obecna_liczba; long long moja_suma; obecna_liczba = 0; moja_suma = 0; long long poczatek = (MyNodeId() * N) / NumberOfNodes(); long long koniec = ((MyNodeId() + 1) * N) / NumberOfNodes(); for ( i = poczatek; i < koniec; ++i) { long long kolejna = ElementAt(i); moja_suma += kolejna; } // Faza druga //wysyłamy /zbieramy PutLL(0,moja_suma); Send(0); if (MyNodeId() == 0) { long long suma = 0; for (i = 0; i < NumberOfNodes(); ++i) { int instancja = Receive(-1); suma += GetLL(instancja); } if(suma < 0){ printf("0\n"); } else { printf("%Ld\n",suma); } } return 0; } |