int main (int argc, char** argv) { if (argc == 4) { srand (time(NULL)); int size = atoi(argv[1]); int n_threads = atoi(argv[2]); int print = atoi(argv[3]); matrix = (int*) malloc (sizeof(int) * size * size); mask = (int*) calloc (size * size, sizeof(int)); points = (struct found_point*) malloc (sizeof(struct found_point) * n_threads); int nfill = 100000; set_threads_number(n_threads); set_matrix_values(size); set_mask_middle_point(size); invperc(size, nfill); if (print == 1) { int i, j; for (i = 0; i < size; ++i) { for (j = 0; j < size; ++j) { printf("%d ", mask[i*size + j]); } printf("\n"); } } free(matrix); free(mask); free(points); } else { } return 0; }
matrix *parse_matrix_from_text (const char *text_matrix) { matrix * mat; char *token, *end; float **parsed_data; // we must use another container to prevent segfaults char *raw_data = strdup(text_matrix); const char *delim = "}"; int height = get_matrix_height(text_matrix); int width = get_matrix_width(text_matrix); int i = 0; mat = new_matrix(height, width); parsed_data = malloc(height*sizeof(float*)); for (size_t i = 0; i < height; ++i) parsed_data[i] = malloc(width*sizeof(float)); token = strtok(raw_data, delim); while(token != NULL) { // moving to first digit while(!isdigit(*token)) { token++; } for (size_t j = 0; j < width; ++j) { float f = strtof(token, &end); parsed_data[i][j] = f; token = end; token++; } token = strtok(NULL, delim); i++; } set_matrix_values(mat, parsed_data); return mat; }