Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <unistd.h>
- #include <math.h>
- #include <time.h>
- #define TEMP_FROID 0.00
- #define TEMP_CHAUD 256.00
- void printMatrix(float* mat1, int size);
- void initializeMatrix(float* mat1, int size){
- int i,j;
- int numCell=0;
- int n = sqrt(size);
- int sup = (pow(2,n-1)-pow(2,n-4));
- int inf = (pow(2,n-1)+pow(2,n-4));
- //printf("numCell >= %d && numCell < %d\n",sup,inf); //DEBUG
- for(i=0;i<size;i++){
- for(j=0;j<size;j++){
- if(i >= sup && i < inf && j >= sup && j < inf)
- mat1[size*j+i]=TEMP_CHAUD;
- else
- mat1[size*j+i]=TEMP_FROID;
- numCell++;
- }
- }
- }
- void fillCenter(float* mat1, int size) {
- int n = (int) sqrt(size);
- int sup = (int) (pow(2, n - 1) - pow(2, n - 4));
- int inf = (int) (pow(2, n - 1) + pow(2, n - 4));
- int i=sup;
- int j=inf;
- for (i = sup; i < inf; i++) {
- for (j = sup; j < inf; j++) {
- mat1[size*j+i] = TEMP_CHAUD;
- }
- }
- }
- void nextStep(float* mat1, float* mat2, int size){
- printf("Avant :\n");
- printf("mat1\n");
- printMatrix(mat1,size);
- int i=1;
- int j=1;
- for (i = 1; i < size - 1; i++) {
- for (j = 1; j < size - 1; j++) {
- mat2[size*j+i] = (mat1[size*(j-1)+i] / 6) + (mat1[size*j+i] * 2 / 3) + (mat1[size*(j+1)+i] / 6);
- }
- }
- // System.out.println("mat2");
- printf("mat2\n");
- printMatrix(mat2,size);
- for (i = 1; i < size - 1; i++) {
- for (j = 1; j < size - 1; j++) {
- mat1[size*j+i] = (mat2[size*j+(i-1)] / 6) + (mat2[size*j+i] * 2 / 3) + (mat2[size*j+(i+1)] / 6);
- }
- }
- fillCenter(mat1, size);
- printf("\n Après \n");
- printMatrix(mat1,size);
- }
- void printMatrix(float* mat1, int size){
- int i,j;
- for(i=0;i<size;i++){
- for(j=0;j<size;j++){
- printf("%06.2f |",mat1[size*j+i]); //%06.2f affichage un peu plus beau.
- }
- printf("\n");
- }
- }
- int main(int argc, char** argv){
- printf("##Debut Programme##\n");
- int opt;
- /*
- ** get parameters.
- */
- while ((opt = getopt(argc,argv,"s:m:a:i:e:t:")) != -1){
- switch(opt){
- case 's':
- printf("avec option -s\n");
- printf(" -- %s\n",optarg);
- break;
- case 'm':
- printf("avec option -m\n");
- printf(" -- %s\n",optarg);
- break;
- case 'a':
- printf("avec option -a\n");
- printf(" -- %s\n",optarg);
- break;
- case 'i':
- printf("avec option -i\n");
- printf(" -- %s\n",optarg);
- break;
- case 'e':
- printf("avec option -e\n");
- printf(" -- %s\n",optarg);
- break;
- case 't':
- printf("avec option -t\n");
- printf(" -- %s\n",optarg);
- break;
- default:
- printf("no Options\n");
- break;
- }
- }
- //10 000 iterations.
- float Mat1[16][16];
- float Mat2[16][16];
- int size=16;
- int iteration=0;
- initializeMatrix(&(Mat1[0][0]),size);
- initializeMatrix(&(Mat2[0][0]),size);
- printMatrix(&(Mat1[0][0]),size);
- printf("##début de l'algorithme##\n");
- time_t debutTemp,finTemp;
- debutTemp = time(NULL);
- printf("%ju secs since the Epoch\n",debutTemp);
- while(iteration!=10000){
- nextStep(&(Mat1[0][0]), &(Mat2[0][0]), size);
- iteration++;
- }
- finTemp = time(NULL);
- printf("##fin de l'algorithme en %ju secondes ##\n",finTemp - debutTemp);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement