All pastes #411926 Raw Edit

trax

public c v1 · immutable
#411926 ·published 2007-03-27 11:29 UTC
rendered paste body
#include "matrix.h"void create (matrix *A, int l, int c, short int t, short int type){	int i;	A->l = l;	A->c = c;	A->t = t;		switch(type){	case type_char : 		A->data[type] = (unsigned char**)malloc(sizeof(unsigned char*)*l);		for (i = 0 ; i < l ; i++){    		A->data[type] = (unsigned char*)malloc(sizeof(unsigned char)*c*t);    	}	break;	case type_int : 		A->data[type] = (int**)malloc(sizeof(int*)*l);		for (i = 0 ; i < l ; i++){    		A->data[type] = (int*)malloc(sizeof(int)*c*t);    	}	break;	case type_long : 		A->data[type] = (long long int **)malloc(sizeof(long long int*)*l);		for (i = 0 ; i < l ; i++){    		A->data[type] = (long long int*)malloc(sizeof(long long int)*c*t);    	}	break;	    case type_float :        A->data[type] = (float**)malloc(sizeof(float*)*l);        for (i = 0 ; i < l ; i++){            A->data[type] = (float*)malloc(sizeof(float)*c*t);        }    break;    case type_double :        A->data[type] = (double**)malloc(sizeof(double*)*l);        for (i = 0 ; i < l ; i++){            A->data[type] = (double*)malloc(sizeof(double)*c*t);        }    break;	default:		erreur("Create : type inconnu",1);	}	}void voir_neo (matrix *A){	int i, ii, iii;	printf("voir : A->t=%d\n",A->t);	printf("\t");	for (i = 0 ; i < A->l ; i++){		for (ii = 0 ; ii < (A->c) ; ii++){			for(iii = 0 ; iii < A->t ; iii++){				printf("%02X",(int)A->data[A->type][i][(A->t)*ii+iii]);			}			printf("-");		}		printf("\n\t");	}			printf("\n");}void decoupe (matrix * pere, int basex, int basey, matrix *fils){    int i, ii;    for (i = 0 ; i < fils->l ; i++){        for (ii = 0 ; ii < fils->c ; ii++){        	fils->data[A->type][i][ii]=pere->data.car[(basex)+i][(basey)+ii];        }    }}void produit (matrix *A, matrix *B, matrix *C) {    int i, ii, iii;    int	t=0;	for (i = 0 ; i < C->l ; i++){		for (ii = 0 ; ii < C->c ; ii++){			for (iii = 0 ; iii < A->c ; iii++){				t += (A->data[A->type][i][iii])*(B->data.car[iii][ii]);			}   			C->data[C->type][i][ii] = (char)t;			t=0;		}	}}void togray (matrix *A, matrix *B){	int i,ii;	if (A->t!=3){		printf("La matrix doit avoir une profondeur de trois\n");		exit(0);	}	printf("gray %d %d %d\n", (A->l),(A->c),(A->t));	for (i = 0 ; i < (A->l) ; i++){		for(ii = 0 ; ii < (A->c) ; ii++){			B->data[B->type][i][ii]=(A->data[A->type][i][(A->t)*ii]+A->data[A->type][i][(A->t)*ii+1]+A->data[A->type][i][(A->t)*ii+2])/3;		}	}	}int diff (matrix *A){	int i,ii,t=0;	for (i = 0 ; i < A->c ; i++){		for(ii = 0 ; ii < A->l ; ii++){			t += A->data.car[i][ii] ; 		}	}	return t/((A->c)*(A->l)-1);}void chargement(matrix *pere, matrix *fils, int basex, int basey){	int i, ii;	for (i = 0 ; i < fils->l ; i++){		for(ii = 0 ; ii < fils->c ; ii++){			pere->data.car[basex+i][basey+ii]=fils->data.car[i][ii];		}	}}