Пример #1
0
int main(int argc, char *argv[]) {

    //Nomes dos arquivos
    char NomeArqEntrada[TAMMAXNOMEARQ];
    char NomeArqSaida[TAMMAXNOMEARQ];

    //Status se o programa vai gerar dados para análise ou não
    bool Analise;

    int numThreads;

    //Verifica se os parâmetros necessários foram passados para o programa
    checaEntrada(argc, argv, NomeArqEntrada, NomeArqSaida, &numThreads, &Analise);

    FILE *ArqEntrada = abreArquivoLeitura(NomeArqEntrada);
    FILE *ArqSaida = fopen(NomeArqSaida, "w");

    SMP(ArqEntrada, numThreads, ArqSaida, Analise);

    fclose(ArqEntrada);
    fclose(ArqSaida);

    return EXIT_SUCCESS;
}
Пример #2
0
int main (int argc, char* argv[]) {
    
    FILE *input,*output;
    char option;
    char *s_input, *s_output;
    int NUM_THREADS=0,rc;
    
    
    if (argc<2){
        puts("ARGUMENT MISSING");
        return 0;
    } else {
        while((option = getopt(argc,argv,"i:o:t:")) != -1){
                switch(option){
                        case 'i':
                                s_input = optarg;
                                break;
                        case 'o':
                                s_output = optarg;
                                break;
                        
                        case 't':
                            NUM_THREADS=atoi(optarg);
                            break;
                         
                        default :
                                exit(0);
                }
        }

        
        pthread_t threads[NUM_THREADS];
        input = fopen(s_input, "r");
        output = fopen(s_output, "w");
     if (input == NULL){
         puts("O ARQUIVO NAO FOI ABERTO");
         return 0;
     } else {
        //starts to read the input file
        int a,i,j,y, number, instances;
        number = 0;
        
        fscanf(input, "%d", &instances);
        
        PersonList* menList=createPersonList(); 
        PersonList* womenList=createPersonList();
        PrefList* menCrushes;
        PrefList* womenCrushes;
        Person* men; 
        Person* women;
         
        //Reading instances
        for (a=1; a <= instances; a++) {
            fscanf(input, "%d", &number);
 
            //Creating men preference list
            for (i=1; i <= number; i++) {

                menCrushes = createPrefList();
                
                for (j=0; j < number; j++) {
                    fscanf(input, "%d", &y);
                    insertPref(menCrushes,y );
                }
                
                men=createPerson(i,menCrushes);
                insertPersonInList(menList, men);

            }

            //creating women preference list
            for (i=1; i <= number; i++) {

                womenCrushes = createPrefList();
                for (j=0; j < number; j++) {
                    fscanf(input, "%d", &y);

                    insertPref(womenCrushes,y );
                }
                women=createPerson(i,womenCrushes);
                insertPersonInList(womenList, women);
  
            }

            //Stable Marriage Problem -> print in output file
            SMP(menList, womenList, number);
            
            dumpPersonListStatusToOutput(menList, output);

            //Satisfaction -> print in output file
            writeOutputSatisfaction(menList, womenList,number, output, NUM_THREADS);
            
            for(i=0; i < number; i++){
                clear(menList->list_);
                clear(womenList->list_);
        }

        }

//Liberar memoria:
        fclose(input);
        fclose(output);
        }
    }
    return 0;
}