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