Код анаграммы MPI - PullRequest
       37

Код анаграммы MPI

0 голосов
/ 22 мая 2018

Я хочу написать программу, которая берет слово от пользователя и делится с ним анаграммами в файле.Я хочу сделать в MPI.Но я не знаю, как мне читать текст файла.Это то, что я пишу в данный момент.

Что мне делать?Я думаю о MPI Scatter & Gather, но как?

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <conio.h>
#include <mpi.h>

bool if_anagram(char *a, char *b)
{

    int dl1 = strlen(a), dl2 = strlen(b);


    if(dl1!=dl2)return false;

    int licz[0x100]={}; 

    for(int i=0;i<dl1;i++)    
        licz[(unsigned char) a[i]]++; 
    for(int i=0;i<dl1;i++)
        licz[(unsigned char) b[i]]--;   
    for(int i=0;i<256;i++)      
        if(licz[i]!=0) 
            return false; 

  return true; 
} 


int main(int argc, char** argv) {

    char a[101], b[101]; 
    FILE *pFile;

    MPI_Init(NULL, NULL);

    int world_rank;
    MPI_Comm_rank(MPI_COMM_WORLD, &world_rank);
    int world_size;
    MPI_Comm_size(MPI_COMM_WORLD, &world_size);

    pFile=fopen("slowa852.txt","r"); 


    printf("Put word to share: ");
        scanf ("%s", a);

    if (pFile != NULL){
    while ( fscanf (pFile,"%s",b) == 1) { 

        if(if_anagram(a,b))
            printf("Word %s is anagram!\n", b);

}
    fclose(pFile); 
  }
  else{
    printf("It cant open file.\n");
  }

    MPI_Finalize();
}
...